Lav et skrivebord Tamagotchi: 8 trin (med billeder)

Lav et skrivebord Tamagotchi: 8 trin (med billeder)

Indholdsfortegnelse:

Anonim

En dag sad jeg bag mit skrivebord på arbejde, og jeg fik det mærkelige behov for at bygge noget. Efter at have kigget lidt efter fik jeg øje med en LED-matrix, og det udgjorde en idé i mit hoved: "Jeg vil gerne lave en TAMAGOTCHI".

Så for de af jer, der ikke ved, hvad dælen er en Tamagotchi her er et lille snip-it fra wikipedia:

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

Så jeg tager på denne klassiske legetøj er at gøre det til en desktop gadget med en LED matrix til en skærm, og en Arduino for hjerner for at gøre det mere tilgængeligt for mennesker. Med det sagt, slutte mig til, da vi designer, bygger og programmerer verdens første (så vidt jeg ved) desktop Tamagotchi.

forsyninger:

Trin 1: Få de rigtige ting

Så som ethvert andet elektronikprojekt skal du få nogle grundlæggende værktøjer:

1) Loddejern

2) Nogle loddetråd

3) Et par fræsere

4) Et par nålestænger

Valgfrit: Få noget loddetråd eller en loddepumpe til at løse loddefejl

Hvad angår elektronikken deler listen lidt længere, her er hvad du skal få:

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

* Du skal bruge noget til at programmere chippen såvel som en arduino platform eller en FDTI adapter

2) 4 x 74HC595 skiftregistre

3) 2 x ULN2803 Darlington transistor array

4) 1 x DS1302 RTC + 32.768kHz krystal

5) 1 x 3V møntcellebatteriholder + batteriet.

6) 4 x retvinklede trykknapper

7) 1 x Peizzo Buzzer

8) 4 x 8x8 LED matrix moduler

9) 16 x 330Ohm modstande (du skal beregne værdien for din matrix)

10) 2 x række med 16 kvindelige stifthoveder

11) 2 x række med 16 hanknapper

12) 1 x række med 4 hundehoved (til programmering)

13) 5 x 100nF cap

14) 1 x 10uF cap

15) 1 x 10K modstand

15) Stik til stikkontakt

16) 5V DC væg vorte

17) Et stort stykke protobord

18) Nogle ledninger til forbindelser

Trin 2: Hardware side

Selvom dette projekt, hvis det hovedsageligt er softwarefokuseret, skal vi først bygge hardwareen for at gøre kode til livskode og debugging det lettere.

Hardware består af 2 hoveddele: Microcontroller-delen og LED-skærmen.

Microcontroller-delen er meget lige fremad, det er en standalone arduino (ATmega328 med arduino bootloader) med

nogle periferiudstyr (4 knapper, en summer og en RTC), men det er den mest kritiske del, da det gør alt tænkning.

LED-displaydelen er lidt mere kompleks og tager lidt tid at lodde op. Dette kredsløb består af 4 skiftregistre (74HC595), 2 darlington transistor arrays (ULN2803) og 4 8x8 LED matricer.

Ligesom de fleste LED-skærme kommer det ikke som nogen overraskelse, at displayet skal multiplexeres (se det op er et smukt køligt koncept), fordi du kører 16x16 LED'er individuelt vil tage 256 pins fra mikrocontrolleren, og det er bare dumt.

Selv med multiplexeringsmetoden behøver vi stadig 32 (16 rækker + 16 kolonner) -stifter fra mikrocontrolleren til at køre displayet, som vi igen ikke har, så løsningen er at bruge skiftregister som en I / O-udvidelse, 4 8 bit skift registre giver os 32 udgange og det tager kun 3 linjer til at styre dem alle.

Men problemerne slutter ikke her, fordi skifteregisterne ikke kan håndtere at sænke strømmen af ​​16 lysdioder (hvis en hel række lyser) på en pin, så vi skal give den en hånd ved hjælp af darlington transistor arrayet, der vil fungere som en buffer, der kan håndtere store strømme, som kan stege skiftregistrene.

Så for at genskabe vi bruger 4 daisy chained skift registre til at styre skærmen, de første 2 kører rækkerne og den anden 2 kører kolonnerne ved hjælp af darlington array.

Det eneste, der skal beregnes i dette projekt, er værdien af ​​de modstande, som vil drive LED-rækkerne.

Formlen er meget enkel og går som sådan:

R = (Vsource - Vled) / Iled

Vsource er 5V, Vled er fremspændingen på en enkelt LED i matrixen og Iled er fremadstrømmen af ​​samme LED.

Du kan også bruge online-regnemaskiner til at hjælpe dig med dette.

Trin 3: Konstruktionskonceptet - LED-bord

Da jeg startede bygningen, ønskede jeg at få et rent udseende uden at bruge en sag (at finde den rigtige sag er et mareridt), så jeg gik for

en todelt konstruktion, dvs. et bord, der holder LED-matrixen og den anden med hele elektronikken.

På denne måde er det eneste, du ser når du kigger på forsiden, LED-displayet selv, og alle de andre ting er skjult bag skærmen.

Det første bord med LED-matrixen dikterer størrelsen på den anden, fordi du vil skjule det andet bord bag skærmen. Så læg matrixenheden på brættet, marker hvor du skal skære og skære brættet. Skær det andet bord, så det bliver den samme størrelse som den første. Tricket med denne bygningsstil er at have proto-boards af samme størrelse, så det er en god ide at sænke brædderne for at få dem til samme størrelse.

Fordi jeg havde 4 8x8 LED matricer, var jeg nødt til at forbinde dem sammen for at få en 16x16 LED matrix, det er ret simpelt og bare tage lidt tid til at forbinde dem sammen. Den måde, du gør det på, er at forbinde de vandrette matricers rækker med på og anden og forbinde kolonnerne i de vertikale matricer (jeg lavede forbindelserne med nogle tynde trådindpakningstråde).

Nu er den eneste del, der er tilbage med dette plade, at forbinde de hoveder, der vil forbinde til brædderne sammen. Placeringen af ​​dette stik bestemmes af positionen af ​​kontakterne på det andet bræt. Afbryderne vil være på siderne af brættet, så du ikke kan sætte stikkene på kanten af ​​brættet, hvorfor stikkene placeres omkring 4 huller fra kanten.

Der er to stik en til rækkerne og den anden for kolonnerne.

Og for at afslutte udseendet anbefaler jeg at lægge et hvidt papirark over matricen for at skjule samlingen og få et rent udseende.

Jeg limede papiret til kanterne af matrixen, så skærmen er sikker fra limen.

Trin 4: Konstruktionskonceptet - Driver Board

Nu er førerkortet den mest komplekse del af denne bygning på grund af pladsbegrænsningerne, og jeg kan ikke rigtig fortælle dig, hvordan man bygger det, fordi alle har sin byggestil.

Hvad jeg kan fortælle om, er placeringen af ​​nøglekomponenterne som knapperne og stikene. Nu skal knapperne være på siderne af brættet, og de fleste er retvinklede, så de bliver ude af syne, men du kan stadig trykke dem.

Derefter placerer du de stik, der kommer til de to plader, forbindelserne skal være så tæt på kanten som muligt for at give en god og stabil forbindelse, det er sådan, at du placerer knapperne først ved kanten og derfra bestemmer du hvor du skal sæt stikene i.

Bemærk: Det er ret vigtigt at sørge for, at stikene på begge bræt passer perfekt sammen, og siderne af brædderne er flush.

Efter de kritiske dele er du fri til at bygge resten som du ser rigtigt, men sørg for, at der ikke er dele, der går "overbord".

Jeg vil anbefale at bygge i grupper og holde alle dele i den gruppe tæt på hinanden for at lette ledningsføringen f.eks.

Kolonnekontakten skal forbindes til de to darlington-chips og de to skifteregister, så det er fornuftigt at sætte den flok tæt på hinanden og med lidt tænkning er det muligt at komme væk med kun nogle få ledninger her og der i denne gruppe.

Sørg også for at sætte nogle programmeringsoverskrifter til mikrocontrolleren til fremtidige mods.

Trin 5: Spilregler

Efter færdiggørelsen af ​​hardwaredelen er det tid til at tænke på koden og spilmekanikken.

Dette var den hårdeste del for mig, fordi jeg stirrede fra bunden og måtte udarbejde mine egne regler, som ikke er perfekte på nogen måde.

Spillet som det er, er meget nemt at udnytte og gøre godt i, men det er ikke et seriøst spil, og det er meningen at være en cool lille gadget.

Så med denne lille ansvarsfraskrivelse ud af vejen kan vi tale lidt om spillereglerne.

Husdyret har 5 grundlæggende statistikker: sundhed, vægt, lykke, sult og alder.

Spillernes rolle er at balancere denne statistik med 4 handlinger han har: fodre kæledyret, lege med ham, rengør efter ham og lægehjælp.

Hver handling har en positiv effekt og en negativ effekt, og spilleren skal gøre en indsats for at vælge det bedste kompromis.

Når spilleren vælger at fodre dyret, har han 3 muligheder: Giv ham et kødmåltid, giv ham en frugt eller en slikterapi.

Et kødmælk udgør de mest sultede punkter og tilføjer meget til vægten, en frugt hæver kæledyrens sundhed, men sænker kæledyrets lykke og slik giver en stor lykkeforøgelse, men sænker sundheden og øger kæledyrets vægt.

Når spilleren vælger at lege med kæledyret, starter en Simon-spil, og afhængigt af hvor god spilleren lykkedes stat, hæver den, men hvis spilleren gjorde det meget, vil lykken gå ned.

Fra tid til anden vil kæledyret gå på toilettet, og spilleren skal rengøre sig efter ham. Hver tur drejer spilleren savner kæledyrs sundhed og øger chancen for at gøre kæledyret syg.

Der er også en tilfældig chance for, at kæledyret bliver syg, at chancen er højere, hvis kæledyret er gammelt eller snavset. Der er 3 sygdomsniveauer hver med sine egne negative virkninger. Spilleren kan give et kæledyr til kæledyr for at helbrede ham, men det vil sænke kæledyrs sundhed (ingen som at tage skud: D).

Og den mest magtfulde del (for mig) er, at kæledyret går automatisk i søvn kl. 23.00 og vågner om klokken 8.00, så det ikke dør over natten. Selvfølgelig kan du ændre denne del til din smag og sætte en ny sengetid til kæledyret.

Trin 6: Software: menuer og animationer

Her er vi den mest tidskrævende del af projektet, efter at de har besluttet alle funktionerne og tilstandene i spillet, er det tid til at bringe dem til liv ved at skabe alle animationer, indstillinger, handlinger og tilstander i spillet.

Til dette trin brugte jeg en kombination af to programmer: paint.net og excel.

I maling skabte jeg alle ikonerne og menuskærme en efter en. Brug af maling er en stor hjælp, fordi du nemt kan kopiere, male, slette og manipulere billedet. Ikke desto mindre var denne del meget hård for mig, fordi jeg havde svært ved at komme med brugerdefinerede ikoner, der står op for hver handling, indstilling, mad og følelser.

Bemærk: I maling brugte jeg pixelgitteret til at tillade mig let at opdele et afsnit i pixels og male hver enkelt.

Efter at have afsluttet arbejdet med animationerne og ikonerne nummererede jeg ikonerne i grupper og begyndte at arbejde på at oprette ikonens bitmap. For at gøre det brugte jeg mit yndlingsstik i Excel til at oprette bitmappen.

Jeg har lavet et Excel-regneark, der gør det muligt for mig at "male" med celler i et bestemt område, og så spytter det ud bitmapet i det format jeg ønsker.

Derefter er det kun et spørgsmål om at klare bitmapene ind i koden og begynde at skrive softwaren.

Trin 7: Software: Endelig kode

Hoveddelen af ​​dette projekt er softwaren, og det er det, der giver projektet dette tegn.

Nu vil jeg ikke gå over koden i detaljer her, fordi jeg har gjort det i selve koden, så forvent at se mange kommentarer der (nogle med nogle forfærdelige stavefejl: D).

Koden bruger 3 biblioteker, men de kommer alle sammen med Arduino IDE, så der er ikke behov for at downloade nogen.

Jeg skrev koden uden nogen specielle biblioteker for at redde problemerne med at holde koden opdateret og finde disse biblioteker i fremtiden, det er derfor koden er lang og har mange er hvis forskellige funktioner.

Nu har koden det selv to hoveddele: Hovedsløjfen, som håndterer alle spilreglerne og "kæledyrsadfærd" og en timerinterruptrutine, som håndterer opdateringen af ​​skærmen.

Mit arbejde på koden er stadig ikke færdig, fordi der altid er nye ting at tilføje og forbedre i det, så jeg opdaterer koden fra tid til anden. Men for nu er koden i den fungerende tilstand og fuldt udstyret.

Trin 8: Du er færdig! Hvad er det næste?

Yay! Vi er færdige! eller gør vi?

Vi har en fuldt fungerende bænk top Tamagotchi med alle de grundlæggende funktioner, men hvorfor stoppe der?

Der er masser af ting at tilføje og forbedre, og det er op til dig at gøre det. Så tag forhindringer og forbedre, skift og sjov med det!

Og ikke glem at lægge på dit dæk med stolthed og vise din nye skabelse.

P. S.

Pas godt på det og glem ikke at fodre det fra tid til anden:)