Obsah:
- Krok 1: Nastavenie rozdeľovača hodín
- Krok 2: Vytvorenie zariadenia s konečným stavom (FSM)
- Krok 3: Mapovanie zobrazenia siedmich segmentov
- Krok 4: Vytvorenie komparátora
- Krok 5: Nastavenie časovača
- Krok 6: Návrh generátora pseudonáhodných čísel
- Krok 7: Vytvorenie konvertora
- Krok 8: Spojenie všetkého do herného modulu
- Krok 9: Vyskytli sa ďalšie problémy
- Krok 10: Zdrojové súbory a obmedzenia
Video: Hra s binárnymi až desatinnými miestami: 10 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:56
Tento návod ukazuje postup a moduly potrebné na vytvorenie našej hry s binárnymi až desatinnými zhodami. Do 60 sekúnd budú používatelia prekladať a zadávať toľko náhodne generovaných desatinných čísel na sedemsegmentovom displeji do binárnej podoby prepínaním prepínačov a odoslaním pomocou tlačidla hádania. Po dokončení sa zobrazí konečné skóre a potom sa resetuje, aby sa mohlo hrať znova.
Pochopenie binárnych a rýchlych reflexov je prospešné pre dobrý skutok, ale tlačidlo reset je k dispozícii pre prípad, že by ste to chceli okamžite skúsiť znova.
Krok 1: Nastavenie rozdeľovača hodín
Chrbtica celého tohto projektu pochádza zo správnej synchronizácie všetkých častí tohto gizmo. Náš konečný stavový stroj používa vnútorné hodiny, ale sedemsegmentový displej a časovač musia používať zmenenú verziu hodín.
Tieto „nové hodiny“pochádzajú z delenia vnútorných hodín požadovaným obdobím, aby sa dosiahla určitá frekvencia potrebná pre každý konkrétny komponent. Toto sa už robilo v predchádzajúcich laboratóriách a zo skúseností vieme, že časovač má „svoju“číslicu nastavenú na 0,1 Hz a „desiatkové“číslice je 1 Hz
Vstupy: ClkIn, deliteľ (32 bit)
Výstupy: ClkOut
Krok 2: Vytvorenie zariadenia s konečným stavom (FSM)
V našom zariadení s konečným stavom sme sa rozhodli, že bude potrebných päť stavov (začiatok, zobrazenie, kontrola, skóre a koniec) s piatimi vstupmi (štart, reset, odhad, rovnosť, časový limit). Jediným výstupom v našom stavovom počítači je 3 -bitové číslo, ktoré predstavuje stav, v ktorom sa používateľ nachádza (000, 001, 011, 101, 100) vzhľadom na nižšie uvedené stavy.
Pamätajte si, že konečný stavový počítač v skutočnosti nevytvára nižšie uvedené funkcie, ale iba hovorí, v akom stave je program a v čom. Čo sa skutočne stane, určuje horný modul vysvetlený nižšie.
Počiatočný stav (000)
Počiatočný stav je miesto, kde používateľ začne, kým nebude počiatočný vstup vysoký. To je tiež stav, ktorý sa dosiahne po stlačení tlačidla reset.
Stav hry (001)
Stav hry je začiatok hry, kde sa vygeneruje náhodné číslo a používateľ prepne prepínače a vytvorí vstup. Po stlačení tlačidla hádania sa hra presunie do stavu Kontrola.
Skontrolovať stav (011)
V tomto stave sa používa komparátor, ktorý porovná hodnoty vstupu používateľa a náhodne vygenerovaného čísla. Ak je podanie správne, rovnaká hodnota je vysoká a FSM prejde do stavu skóre; ak je však odoslanie nesprávne, FSM sa vráti späť do stavu zobrazenia, kým nie je odoslanie správne.
Tento stav kontroly prebieha v porovnaní s ostatnými relatívne rýchlo, pretože k nemu dochádza iba vtedy, ak je stlačené tlačidlo začiarknutia
Stav skóre (101)
Keďže rovnaká hodnota je vysoká, odoslanie bolo správne. V tomto stave sa hodnota skóre zvýši o jednu a používateľovi sa vygeneruje nové číslo, ktoré zadá. Toto nové číslo nás privádza späť do počiatočného stavu, kde používateľ znova prepne prepínače.
Koncový stav (100)
Akonáhle časový spínač 60 sekúnd vyprší, časový limit bude vysoký a používateľ sa dostane do koncového stavu, kde sa zobrazí konečné skóre. Potom sa stlačí resetovací vstup a FSM sa znova spustí v počiatočnom stave.
Vstupy: Clk, prvý, štart, odhad, rovnosť, časový limit
Výstup: stav (3 bit)
Krok 3: Mapovanie zobrazenia siedmich segmentov
Sedemsegmentový displej je kľúčovou súčasťou celého projektu, pretože prvé dve číslice na obrazovke sa používajú ako výstup generátora náhodných čísel, zatiaľ čo posledné dve číslice predstavujú časovač. Aj keď sme v minulom laboratóriu implementovali príklad z hľadiska číslic na obrazovke, zobrazoval sa hexadecimálne. Na vyriešenie tohto problému sme použili prevodník a delič hodín, ktoré sú ďalej vysvetlené nižšie.
Displej zobrazuje všetky 0, kým FSM neprejde do herného stavu; v konečnom stave by však displej mal ukazovať iba skóre používateľa.
Pretože používame všetky štyri číslice sedemsegmentového displeja, musíme každú anódu cyklovať dostatočne rýchlo pri 300 Hz, aby sme boli vnímaní ako vždy rozsvietení.
Vstupy: Clk, sedemsegmentový
Výstupy: katódy (7 bitov), anódy (4 bity)
Krok 4: Vytvorenie komparátora
Tento submodul sa v stave kontroly používa na porovnanie 7 -bitového binárneho zadaného odhadu so skutočnou desatinnou hodnotou.
Mali sme príkaz if, ktorý hodnotil vstupy aj dva výstupy v závislosti od toho, či bola rovnaká hodnota vysoká alebo nízka. Napriek tomu, že je tento modul dôležitý, je zďaleka jedným z jednoduchších programov, ktoré je možné v tomto projekte navrhnúť.
Vstupy: prepínače (8 bitov), číslo (8 bitov)
Výstup: EQ
Krok 5: Nastavenie časovača
Náš časovač sú v podstate dva rôzne počítadlá, ktoré rastú rôznym tempom. Jedno počítadlo v hodnote „niekoho“(prvý sedemsegmentový displej) a jedno počítadlo hodnoty „desať“(druhá číslica na sedemsegmentovom displeji). Každá číslica je založená na stúpajúcej hrane hodín a akonáhle počítadlo dosiahne 60 sekúnd, časový limit bude vysoký a hra sa skončí a vráti sa do počiatočného stavu.
Vstupy: Clk, stav (3 bit), štart
Výstupy: prúd (8 bitov), časový limit
Krok 6: Návrh generátora pseudonáhodných čísel
Ďalšou alternatívnou metódou pre generátor čísel špecificky pre tento prípad je mať opakujúci sa čítač od 0 do 99 (v binárnom formáte), ktorý vydáva spočítané číslo, keď je vstup vysoký, pretože by to eliminovalo potrebu použitia LFSR.
Číslo sa mení každou stúpajúcou hranou vnútorných hodín (10 nano-sekúnd) a cyklicky prechádza všetkými 100 číslami za jednu mikrosekundu. Kedykoľvek chce používateľ z generátora čísel nové číslo, vydá číslo, na ktorom bol, Aj keď tento proces nie je úplne náhodný, pravdepodobnosť nájdenia súvisiacich výstupov z tohto procesu je dostatočne nízka na to, aby bola pseudonáhodná.
Vstupy: Clk, changenum, rovnaké
Výstupy: číslo (8 bitov)
Krok 7: Vytvorenie konvertora
Nevyhnutným komponentom je Prevodník, ktorý sme použili na zobrazenie desatinných čísel na sedemsegmentovom displeji namiesto pôvodného hexadecimálneho. Aj keď obe čísla vychádzajú zo 7 -bitového binárneho čísla, vytvorili sme celý modul určený na konverziu hexadecimálneho čísla na desatinné.
Ak by napríklad náš konečný výstup pre skóre bol 0010001 (sedemnásť), sedemsegmentový displej by namiesto desatinného čísla 17 zobrazoval hexadecimálnu hodnotu 11.
Vstup: Numin (8 bitov)
Výstup: Numout (8 bitov)
Krok 8: Spojenie všetkého do herného modulu
V prípade našich komponentov sme použili potrebné prepínače 0-6, ktoré používateľ prepínal, pričom tri tlačidlá slúžili ako vstupy používateľa pre štart, reset a odhad. Sedemsegmentový displej a hodinové komponenty sú tiež komponenty, ktoré sme urobili z predchádzajúcich laboratórií, ale museli sme ich zmeniť, aby zodpovedali tomuto projektu.
Tento projekt sme rozdelili do šiestich vyššie uvedených modulov, aby sme celý gizmo rozdelili na mnoho pracovných častí, spôsob ich spojenia je však dosť komplikovaný a ukazuje to pripojený obrázok čiernej skrinky.
Počas hry sa rozsvieti 7 diód LED, ktoré upozornia používateľa, ktorý prepne na použitie, a keď sa hra skončí, naprogramovali sme tiež diódy LED, aby blikali
Vstupy: prepínače (8 bitov), Clk, reset, štart, hádanie
Výstupy: katódy (7 bitov), anódy (4 bity), LED diódy (7 bitov)
Krok 9: Vyskytli sa ďalšie problémy
Aj keď sa v tejto hre používa iba sedem prepínačov, kód ho má nastavený ako 8 -bitové číslo. Urobili sme to, aby sme mali pohodlnejší komparátor, ktorý by porovnal týchto 8 bitov s 8 bitovým číslom, ktoré sme vygenerovali z generátora náhodných čísel.
Skóre nám tiež najskôr robilo trochu problémy, pretože sme ho nastavili tak, aby zvýšil jeden bod, keď bol FSM v stave skóre; namiesto toho sa však stalo, že skóre stále rástlo, pokiaľ bol štát zapnutý, čo nám dáva neprimerane vysoké skóre, s ktorým sme sa nedokázali vysporiadať. Opravili sme to pridaním impulzného signálu, ktorý bol synchronizovaný so stúpajúcou hranou hodín, ako je vidieť v kóde v kroku 8.
Nakoniec časovač potreboval veľa času na ladenie, pretože pri odpočítavaní skreslil náš sedemsegmentový displej, takže sme ho museli zmeniť z odpočítavania zo 60 na počítanie z 0.
Krok 10: Zdrojové súbory a obmedzenia
Ak by ste namiesto vytvárania vlastných zdrojov radšej čerpali z našich zdrojových súborov, tu sú. Zahrnutý je aj súbor obmedzení.
Odporúča:
Aruduino LED hra Rýchle kliknutie Hra pre dvoch hráčov: 8 krokov
Aruduino LED hra Rýchle kliknutie Hra pre dvoch hráčov: Tento projekt je inšpirovaný @HassonAlkeim. Ak ste ochotní sa podrobne pozrieť, tu je odkaz, ktorý si môžete pozrieť https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. Táto hra je vylepšenou verziou hry Alkeim's. Jedná sa o
Náhrdelník s binárnymi korálkami: 5 krokov
Náhrdelník s binárnymi korálkami: Študenti sa dozvedia o binárnom kóde a vytvoria náhrdelník, v ktorom budú binárne napísané ich meno
5 $ KALENDÁR PCB S BINÁRNYMI HODINAMI: 7 krokov (s obrázkami)
5 $ KALENDÁR PCB S BINÁRNYMI HODINAMI: Ahoj! Tento PCB kalendár a binárne hodiny som vyrobil s Eagle CAD. Použil som ATMEGA328P MCU (od Arduina) a maticu LED 9x9. Rozmery mojej dosky sú 8 cm x 10 cm (3,14 palca x 3,34 palca). Je to príliš malé, ale za prvé: bezplatná verzia Eagle CAD umožňuje 80 cm^2
Stolný zosilňovač so zvukovou vizualizáciou, binárnymi hodinami a FM prijímačom: 8 krokov (s obrázkami)
Stolný zosilňovač so zvukovou vizualizáciou, binárnymi hodinami a FM prijímačom: Mám rád zosilňovače a dnes sa podelím o svoj nízkoenergetický stolný zosilňovač, ktorý som nedávno vyrobil. Zosilňovač, ktorý som navrhol, má niekoľko zaujímavých funkcií. Má integrované binárne hodiny a môže ukazovať čas a dátum a môže vizualizovať zvuk často nazývaný zvukový
Hra s binárnymi prepínačmi: 6 krokov
Hra Binary Switch: Inšpirovaná Hexovou hrou Ben Hecka Toto je binárna hra, ktorú som vytvoril, aby som naučil svojich priateľov o binárnej hre. Nakoniec sa s tým v triede pohrám, aby som nespal. Konvertujete náhodné denárne (0-255) alebo hexadecimálne (0-ff) hodnoty na obrazovke na binárne a potom my