Lag en Desktop Tamagotchi: 8 trinn (med bilder)

Lag en Desktop Tamagotchi: 8 trinn (med bilder)

Innholdsfortegnelse:

Anonim

En dag satt jeg bak skrivebordet mitt på jobben, og jeg fikk det rike behovet for å bygge noe, etter å ha lett etter litt, så fikk jeg øye med en LED-matrise, og det ga meg en idé i hodet mitt: "Jeg ønsker å lage en TAMAGOTCHI".

Så for de av dere som ikke vet hva pokker er en Tamagotchi her, er det litt snip-it fra wikipedia:

"Tamagotchi (た ま ご っ ち Tamagocchi?) Er et håndholdt digitalt kjæledyr, opprettet i Japan av Akihiro Yokoi fra WiZ og Aki Maita fra Bandai. Det ble først solgt av Bandai i 1996 i Japan."

Så jeg tar på denne klassiske leken er å gjøre det til en desktop gadget med en LED matrise for en skjerm, og en Arduino for hjerner for å gjøre den mer tilgjengelig for folk. Med det sagt, bli med meg når vi designer, bygger og programmerer verdens første (så vidt jeg vet) desktop Tamagotchi.

forsyninger:

Trinn 1: Å få de rette sakene

Så som alle andre elektronikkprosjekter må du få noen grunnleggende verktøy:

1) Loddejern

2) Noen loddetråd

3) Et par kuttere

4) Et par nålestang

Valgfritt: Få litt loddetråd eller en loddepumpe for å fikse loddefeil

Når det gjelder elektronikk deles listen litt lenger, her er det du trenger for å få:

1) En ATmega328P med arduino bootloader + 16Mhz krystall med to 22pF caps

* Du trenger noe for å programmere brikken, så vel som en arduino-plattform eller en FDTI-adapter

2) 4 x 74HC595 skiftregister

3) 2 x ULN2803 Darlington transistor array

4) 1 x DS1302 RTC + 32.768kHz Crystal

5) 1 x 3V myntcellebatteriholder + batteriet.

6) 4 x vinklede trykknapper

7) 1 x Peizzo Buzzer

8) 4 x 8x8 LED matriksmoduler

9) 16 x 330Ohm motstander (du må beregne verdien for matrisen din)

10) 2 x rad med 16 kvinnelige pinhoder

11) 2 x rad med 16 hanknapper

12) 1 x rad med 4 kvinnelige hoder (for programmering)

13) 5 x 100nF cap

14) 1 x 10uF cap

15) 1 x 10K motstand

15) Strømkontaktkontakt

16) 5V DC vegg vorte

17) Et stort stykke protobord

18) Noen ledninger for tilkoblinger

Trinn 2: Maskinvare-siden

Selv om dette prosjektet, hvis det for det meste er programvarefokusert, trenger vi å bygge maskinvaren først for å gjøre livskodekoden og feilsøke det lettere.

Maskinvaren består av 2 hoveddeler: Mikrokontrollerdelen og LED-skjermen.

Microcontroller-delen er veldig rett frem, det er en frittstående arduino (ATmega328 med arduino bootloader) med

noen eksterne enheter (4 knapper, en summer og en RTC), men det er den mest kritiske delen som det gjør all tenkning.

LED-skjermdelen er litt mer kompleks og tar litt tid å lodge opp. Denne kretsen består av 4 skiftregister (74HC595), 2 darlington transistor arrays (ULN2803) og 4 8x8 LED matriser.

Som de fleste LED-skjermer kommer det ikke som en overraskelse at displayet må multiplexes (se det er et ganske kult konsept) fordi kjøring av 16x16 LED-er vil ta 256 pins fra mikrokontrolleren, og det er bare dumt.

Selv med multiplexing-tilnærmingen vil vi fortsatt ha 32 (16 rader + 16 kolonner) pinner fra mikrokontrolleren for å kjøre skjermen som vi igjen ikke har, så løsningen er å bruke skiftregister som en I / O-utvidelse, 4 8 bitskiftregister gir oss 32 utganger, og det tar bare 3 linjer for å kontrollere dem alle.

Men problemene slutter ikke her, fordi skiftregisterene ikke klarer å synke strømmen av 16 lysdioder (hvis en full rad er tændt) på en pin, så vi må gi den en hånd ved hjelp av darlington-transistoren som vil fungere som en buffer som kan håndtere store strømmer som kan steke skiftregisterene.

Så for å samle vi bruker 4 daisy chained skift registre for å styre skjermen, de første 2 kjøre radene og den andre 2 kjøre kolonnene ved hjelp av darlington array.

Det eneste som må beregnes i dette prosjektet er verdien av motstandene som vil drive LED-radene.

Formelen er veldig enkel og går slik:

R = (Vsource - Vled) / Iled

Vsource er 5V, Vled er fremspenningen på en enkelt LED i matrisen og Iled er fremadstrømmen til samme LED.

Du kan også bruke online kalkulatorer for å hjelpe deg med dette.

Trinn 3: Konstruksjonskonceptet - LED-styret

Da jeg startet byggingen ønsket jeg å få et rent utseende uten å bruke en sak (å finne riktig tilfelle er et mareritt) så jeg gikk for

en todelt konstruksjon, dvs. ett brett som holder LED-matrisen og den andre med hele elektronikken.

På denne måten er det eneste du ser når du ser på forsiden, LED-skjermen selv, og alle de andre tingene er skjult bak skjermen.

Det første brettet med LED-matrisen vil diktere størrelsen på den andre, fordi du vil gjemme det andre brettet bak skjermen. Så plasser matriksenheten på brettet, merk hvor du skal kutte og kutte brettet. Klipp det andre brettet slik at det blir den samme størrelsen som den første. Trikset med denne bygningsstilen er å ha proto-boards av samme størrelse, så det er en god idé å sitte brettene for å få dem til samme størrelse.

Fordi jeg hadde 4 8x8 LED matriser, måtte jeg koble dem sammen for å få en 16x16 LED matrise, det er ganske enkelt og ta litt tid å koble dem sammen. Måten du gjør det ved å koble radene til de horisontale matrices med på og andre og koble sammen kolonnene til de vertikale matrices (jeg lagde tilkoblingene med noen tynne trådlister).

Nå er den eneste delen som er igjen med dette brettet, koblet til toppene som vil koble sammen til brettene. Plasseringen av denne kontakten avgjøres av plasseringen av bryterne på den andre brettet. Bryterne vil være på sidene av brettet slik at du ikke kan sette kontaktene på kanten av brettet. Derfor er kontaktene plassert rundt 4 hull fra kanten.

Det er to kontakter en for radene og den andre for kolonnene.

Og for å fullføre utseendet, anbefaler jeg å sette et ark med hvitt papir over matrisen for å skjule enheten og få et rent utseende.

Jeg limte papiret til kantene av matrisen, slik at skjermen er trygt fra limen.

Trinn 4: Konstruksjonsbegrepet - Driverstyret

Nå er førerkortet den mest komplekse delen av denne bygningen på grunn av plassbegrensningene, og jeg kan egentlig ikke fortelle deg hvordan du bygger den fordi alle har sin byggestil.

Det jeg kan fortelle om er plasseringen av nøkkelkomponentene som knappene og kontaktene. Nå skal knappene være på sidene av brettet, og de fleste er rett vinklet slik at de vil være ute av syne, men du kan fortsatt trykke dem.

Derfra plasserer du kontaktene som kommer til de to brettene, kontaktene skal være så nær kanten som mulig for å gi en god og solid forbindelse, det er måten du plasserer knappene først ved kanten og derfra bestemmer du hvor du skal sett kontaktene.

Merk: Det er ganske viktig å sørge for at kontaktene på begge brettene passer perfekt sammen og sidene av brettene er flush.

Etter at de kritiske delene er ferdig, er du fri til å bygge resten som du ser riktig, men sørg for at det ikke er noen deler som går "overbord".

Jeg vil anbefale å bygge i grupper og holde alle delene i den gruppen nær hverandre for enkel ledning, for eksempel:

Kolonnekontakten skal være koblet til de to darlington-sjetongene og de to skiftregisterene, så det er fornuftig å sette den gjengen nær hverandre, og med litt tenkning er det mulig å komme seg bort med bare noen få ledninger her og der i denne gruppen.

Pass også på å sette noen programmeringshoder for mikrokontrolleren for fremtidige mod.

Trinn 5: Spillregler

Etter å ha ferdig maskinvaredelen er det på tide å tenke på koden og spillmekanikken.

Dette var den vanskeligste delen for meg fordi jeg stirret fra bunnen av og måtte gjøre opp mine egne regler som ikke er perfekte på noen måte.

Spillet som det er, er veldig enkelt å utnytte og for å gjøre det bra, men dette er ikke et seriøst spill, og det er ment å være en kul liten gadget.

Så med denne lille ansvarsfraskrivelsen kan vi snakke litt om spillreglene.

Kjæledyret har 5 grunnleggende statistikker: helse, vekt, lykke, sult og alder.

Spillerens rolle er å balansere denne statistikken med 4 handlinger han har: feed kjæledyret, lek med ham, rengjør etter ham og medisinsk behandling.

Hver handling har en positiv effekt og en negativ effekt, og spilleren må gjøre en innsats for å velge det beste kompromisset.

Når spilleren velger å mate kjæledyret har han 3 alternativer: Gi ham et kjøttmåltid, gi ham en frukt eller en godteri.

Et kjøttmåltid utgjør de mest sultende punktene og legger mye vekt, en frukt øker kjæledyrets helse, men senker kjæledyrlykken, og candy gir en stor lykkeforhøyelse, men senker helsen og øker kjæledyrets vekt.

Når spilleren velger å leke med kjæledyret, starter en Simon-spill, og avhengig av hvor god spilleren lyktes, øker lykken, men hvis spilleren gjorde det veldig dårlig, vil lykken gå ned.

Fra tid til annen går kjæledyret på toalettet, og spilleren må rydde etter ham, hver sving spiller spilleren reduserer kjæledyrets helse og øker sjansen til å gjøre kjæledyret syk.

Også det er en tilfeldig sjanse for at kjæledyret blir syk, at sjansen er høyere hvis kjæledyret er gammelt eller skittent. Det er tre nivåer av sykdom hver med sine egne negative effekter. Spilleren kan gi skudd til kjæledyret for å kurere ham, men dette vil redusere kjæledyrets helse (ingen som å ta skudd: D).

Og den mest impotente delen (for meg) er at kjæledyret går automatisk til å sove på 23:00 og våkner klokka 8:00, slik at det ikke vil dø over natten. Selvfølgelig kan du endre denne delen til din smak og sette en ny sengetid for kjæledyret.

Trinn 6: Programvare: Menyer og animasjoner

Her er vi på den mest tidkrevende delen av prosjektet, etter å ha bestemt seg for alle funksjonene og tilstandene i spillet, er det på tide å få dem til liv ved å skape alle animasjonene, innstillingene, handlingene og tilstandene i spillet.

For dette trinnet brukte jeg en kombinasjon av to programmer: paint.net og excel.

I maling opprettet jeg alle ikonene og menyskjermene en etter en. Bruke maling er en stor hjelp fordi du enkelt kan kopiere, male, slette og manipulere bildet. Ikke desto mindre var denne delen veldig vanskelig for meg fordi jeg hadde vanskelig tid å komme opp med egendefinerte ikoner som står opp for hver handling, innstilling, mat og følelser.

Merk: I maling brukte jeg pikselgrid-alternativet til å tillate meg enkelt å dele en del inn i piksler og male hverandre.

Etter å ha fullført det arbeidet på animasjonene og ikonene, nummererte jeg ikonene i grupper og begynte å jobbe med å lage bitmapet på ikonene. For å gjøre det, brukte jeg mitt favoritttrick i Excel for å lage bitmappen.

Jeg har laget et Excel-regneark som lar meg "male" med celler i et bestemt område, og så spytter det ut bitmapet i formatet jeg vil ha.

Etter dette er alt gjort, det handler bare om å håndtere bitmapene i koden og begynne å skrive programvaren.

Trinn 7: Programvare: Endelig kode

Hoveddelen av dette prosjektet er programvaren, og det er det som gir dette prosjektet karakteren.

Nå vil jeg ikke gå over koden i detalj her fordi jeg har gjort det i selve koden, så forvent å se mange kommentarer der (noen med noen fryktelige stavemåter: D).

Koden bruker 3 biblioteker, men alle kommer med Arduino IDE, så det er ikke nødvendig å laste ned noen.

Jeg skrev koden uten noen spesielle biblioteker for å redde problemer med å holde koden oppdatert og finne de bibliotekene i fremtiden, Dette er grunnen til at koden er lang og har mye om forskjellige funksjoner.

Nå har koden det selv to hoveddeler: Hovedløkken som håndterer alle spillregler og "kjæledyr" -adferd og en tidsinterrupt-rutine som håndterer skjermoppdateringen.

Mitt arbeid på koden er fortsatt ikke ferdig fordi det alltid er nye ting å legge til og forbedre i det, så jeg oppdaterer koden fra tid til annen. Men for nå er koden i den fungerende tilstanden og fullt utstyrt.

Trinn 8: Du er ferdig! Hva nå?

Jippi! Vi er ferdige! eller gjør vi?

Vi har en fullt fungerende benk-topp Tamagotchi med alle de grunnleggende funksjonene, men hvorfor stoppe der?

Det er mange ting å legge til og forbedre, og det er opp til deg å gjøre det. Så ta hindrene og forbedre, endre og ha det gøy med det!

Og ikke glem å sette på ditt dekk med stolthet og vise frem din nye skapelse.

PS!

Ta godt vare på det og ikke glem å mate det fra tid til annen:)