Sadržaj:
- Korak 1: Postavljanje razdjelnika sata
- Korak 2: Stvaranje stroja konačnih stanja (FSM)
- Korak 3: Mapiranje prikaza sa sedam segmenata
- Korak 4: Izrada komparatora
- Korak 5: Postavljanje mjerača vremena
- Korak 6: Projektiranje generatora pseudo slučajnih brojeva
- Korak 7: Izrada pretvarača
- Korak 8: Spajanje svega u modul igre
- Korak 9: Dodatni problemi
- Korak 10: Izvorne datoteke i ograničenja
Video: Igra binarno -decimalnog podudaranja: 10 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:33
Ova instrukcija će prikazati proces i module potrebne za izradu naše igre Batch to Decimal Matching. U roku od 60 sekundi korisnici će prevesti i unijeti što više nasumično generiranih decimalnih brojeva na ekranu sa sedam segmenata u binarni oblik prebacivanjem prekidača i slanjem pomoću gumba za pogađanje. Nakon što se završi, prikazat će se konačni rezultat, a zatim će se ponovno postaviti na igru.
Razumijevanje binarnih i brzih refleksa korisno je za dobro funkcioniranje, ali gumb za resetiranje dostupan je u slučaju da želite odmah pokušati ponovo.
Korak 1: Postavljanje razdjelnika sata
Okosnica cijelog ovog projekta dolazi od ispravne sinkronizacije svih dijelova ovog gizma. Naš stroj s konačnim stanjem koristi unutarnji sat, ali sedmosegmentni zaslon i mjerač vremena moraju koristiti izmijenjenu verziju sata.
Ovaj "novi sat" dolazi od dijeljenja unutarnjeg sata na željeno razdoblje kako bi se postigla određena frekvencija potrebna za svaku određenu komponentu. To je učinjeno u prethodnim laboratorijima i iz iskustva znamo da mjerač vremena ima cifru "jedan" postavljenu na 0,1 Hz, a znamenka "desetke" 1 Hz
Ulazi: ClkIn, djelitelj (32 bita)
Izlazi: ClkOut
Korak 2: Stvaranje stroja konačnih stanja (FSM)
U našem Stroju konačnih stanja odlučili smo da će biti potrebno pet stanja (Start, Display, Check, Score i End) s pet ulaza (start, reset, pogađanje, jednako, timeout). Jedini izlaz na našem State Machineu je 3 -bitni broj koji predstavlja stanje u kojem se korisnik nalazi (000, 001, 011, 101, 100) s obzirom na donja stanja.
Upamtite da Stroj konačnih stanja zapravo ne preformira donje funkcije, već samo govori u kojem je stanju program i u kojem. Što se zapravo događa određuje gornji modul objašnjen u nastavku.
Početno stanje (000)
Početno stanje je mjesto u kojemu će korisnik početi sve dok početni ulaz ne bude visok, to je također stanje koje će biti dosegnuto svaki put kada se pritisne gumb za resetiranje.
Stanje igre (001)
Stanje igre početak je igre u kojoj se generira slučajni broj i korisnik prebacuje prekidače kako bi stvorio ulaz. Nakon što pritisnete gumb za pogađanje, igra se prebacuje u stanje provjere.
Stanje provjere (011)
U tom se stanju koristi usporednik koji će usporediti vrijednosti unosa korisnika i nasumično generiranog broja. Ako je podnošenje ispravno, jednaka vrijednost je visoka i FSM odlazi u Score State; međutim, ako je podnošenje netočno, FSM se vraća u stanje prikaza sve dok podnošenje nije točno.
Ovo stanje provjere događa se relativno brzo u usporedbi s ostalim, jer se događa samo dok se pritisne gumb za provjeru
Bodovno stanje (101)
Budući da je jednaka vrijednost visoka, podnesak je bio točan. U tom će se stanju rezultat povećati za jedan i generirat će se novi broj koji će korisnik unijeti. Ovaj novi broj vraća nas u stanje početka gdje će korisnik još jednom prebaciti prekidače.
Završno stanje (100)
Nakon što istekne mjerač vremena od 60 sekundi, unos vremenskog ograničenja bit će visok i korisnik će doći do krajnjeg stanja gdje je prikazan konačni rezultat. Ulaz za resetiranje tada će se pritisnuti i FSM će ponovno započeti u početnom stanju.
Ulazi: Clk, rst, start, pogađanje, jednako, timeout
Izlaz: stanje (3 bita)
Korak 3: Mapiranje prikaza sa sedam segmenata
Prikaz sa sedam segmenata ključni je dio cijelog projekta jer se prve dvije znamenke na ekranu koriste kao izlaz generatora slučajnih brojeva, dok su posljednje dvije znamenke mjerač vremena. Iako smo u posljednjem laboratoriju implementirali primjer toga u smislu da na zaslonu postoje znamenke, on je prikazan u heksadecimalnom obliku. Da bismo riješili ovaj problem, koristili smo pretvarač i razdjelnik sata koji je dalje objašnjen u nastavku.
Zaslon prikazuje sve 0 sve dok FSM ne uđe u stanje igre; međutim, u krajnjem stanju, zaslon bi trebao samo prikazivati rezultat korisnika.
Budući da koristimo sve četiri znamenke zaslona sa sedam segmenata, moramo kružiti kroz svaku anodu dovoljno brzo na 300 Hz da bismo je vidjeli kao uvijek upaljenu.
Ulazi: Clk, sedamsegment
Izlazi: katode (7 bita), anode (4 bita)
Korak 4: Izrada komparatora
Ovaj podmodul se koristi u Check State -u u smislu usporedbe 7 -bitnog binarno unesenog nagađanja sa stvarnom decimalnom vrijednošću.
Imali smo if naredbu koja je procjenjivala i ulaze i dva izlaza ovisno o tome je li jednaka vrijednost visoka ili niska. Koliko god ovaj modul bio važan, on je daleko jedan od jednostavnijih programa za projektiranje u ovom projektu.
Ulazi: prekidači (8 bita), broj (8 bita)
Izlaz: EQ
Korak 5: Postavljanje mjerača vremena
Naš mjerač vremena su u biti dva različita brojača koji se povećavaju različitim tempom. Jedan brojač u vrijednosti "jedan", (prvih sedam segmenata) i jedan brojač za vrijednost "desetke" (druga znamenka na zaslonu sa sedam segmenata). Svaka znamenka temelji se na rastućem rubu sata, a nakon što brojač dosegne 60 sekundi, time_out će biti visok, a igra će se završiti i vratiti u početno stanje.
Ulazi: Clk, stanje (3 bita), početak
Izlazi: struja (8 bita), vremensko ograničenje
Korak 6: Projektiranje generatora pseudo slučajnih brojeva
Druga alternativna metoda za generator brojeva posebno za ovaj slučaj je imati ponavljajući brojač od 0-99 (u binarnom obliku) koji emitira prebrojani broj kada je ulaz visok, jer bi to uklonilo potrebu za korištenjem LFSR-a.
Broj se mijenja svaki rastući rub unutarnjeg sata (10 nano-sekundi) i kruži kroz svih 100 brojeva u jednoj mikrosekundi. Kad god korisnik želi novi broj iz generatora brojeva, on prikazuje broj na kojem je bio, Iako ovaj proces nije sasvim slučajan, vjerojatnost pronalaska povezanih rezultata iz ovog procesa dovoljno je niska da bude pseudo-slučajna.
Ulazi: Clk, changenum, jednaki
Izlazi: broj (8 bita)
Korak 7: Izrada pretvarača
Potrebna komponenta je pretvarač, koji smo koristili za prikaz decimalnih brojeva na zaslonu sa sedam segmenata umjesto izvornog heksadecimalnog broja. Iako se oba broja temelje na 7 -bitnom binarnom broju, stvorili smo cijeli modul namijenjen pretvaranju heksadecimalnog u decimalni.
Na primjer, ako je naš konačni rezultat za rezultat bio 0010001 (sedamnaest), zaslon sa sedam segmenata pokazivao bi heksadecimalnu vrijednost 11, umjesto decimalnog broja 17.
Ulaz: Numin (8 bita)
Izlaz: Numout (8 bita)
Korak 8: Spajanje svega u modul igre
Za naše komponente koristili smo potrebne prekidače 0-6 za prebacivanje korisnika, s tri gumba koji su djelovali kao korisnički ulazi za pokretanje, poništavanje i pogađanje. Komponente zaslona sa sedam segmenata i sata također su komponente koje smo radili iz prethodnih laboratorija, ali smo ih morali promijeniti kako bi odgovarali ovom projektu.
Ovaj smo projekt podijelili na šest prikazanih modula kako bismo cijeli gizmo podijelili na mnoge radne dijelove, no način na koji su spojeni prilično je zamršen i prikazan je na priloženoj slici crne kutije.
Dok se igra, 7 LED dioda svijetli kako bi obavijestilo korisnika koji se prebacuje na upotrebu, a kada igra završi, programirali smo i LED diode da trepere
Ulazi: prekidači (8 bita), Clk, reset, start, pogađanje
Izlazi: katode (7 bita), anode (4 bita), LED diode (7 bita)
Korak 9: Dodatni problemi
Iako se u ovoj igri koristi samo sedam prekidača, kôd je postavljen kao 8 -bitni broj. To smo učinili kako bismo imali prikladniji usporednik koji bi usporedio ovih 8 bita s 8 bitnim brojem koji smo generirali iz generatora slučajnih brojeva.
Bodovi su nam također u početku zadavali male probleme jer smo postavili povećanje jednog boda kada je FSM bio u bodovnom stanju; međutim, umjesto toga dogodilo se to da se rezultat neprestano povećavao sve dok je stanje u državi, dajući nam nerazumno visok rezultat s kojim se nismo mogli nositi. To smo popravili dodavanjem impulsnog signala koji je sinkroniziran s rastućim rubom sata, kao što se vidi u kodu u koraku 8.
Konačno, mjeraču vremena trebalo je puno vremena za ispravljanje pogrešaka jer bi iskrivio naš sedmosegmentni zaslon pri odbrojavanju, pa smo ga morali promijeniti s odbrojavanja sa 60 na odbrojavanje od 0.
Korak 10: Izvorne datoteke i ograničenja
Ako biste radije povukli iz naših izvornih datoteka umjesto da stvarate vlastite, evo ih. Također, uključena je i datoteka ograničenja.
Preporučeni:
DIY 37 Leds Arduino Roulette igra: 3 koraka (sa slikama)
DIY 37 Leds Arduino Roulette igra: Roulette je casino igra nazvana po francuskoj riječi koja znači mali kotačić
DINO IGRA KORISTEĆI LDR: 5 koraka
DINO IGRA KORIŠTENJEM LDR-a: Igra dinosaura, poznata i kao T-Rex igra i Dino Runner, ugrađena je igra preglednika u web pregledniku Google Chrome. Igru je stvorio Sebastien Gabriel 2014. godine, a može joj se pristupiti pritiskom na razmaknicu dok je offline u pregledniku Google Chrome.A L
Morse dekoder za binarno drvo: 7 koraka (sa slikama)
Morse dekoder za binarno stablo: a.članci {font-size: 110.0%; font-weight: bold; font-style: kurziv; ukras teksta: nema; background-color: red;} a.članci: hover {background-color: black;} Ova uputa objašnjava kako dekodirati Morzeov kod pomoću Arduino Uno R3.T
Binarno -decimalni kalkulator: 8 koraka
Binarno -decimalni kalkulator: Za jedanaesto računarsko inženjerstvo morao sam se odlučiti za konačni projekt. Isprva nisam znao što bih napravio jer je morao uključivati određene hardverske komponente. Nakon nekoliko dana, moj kolega iz razreda mi je rekao da napravim projekt temeljen na četverobitnom dodatku
Interaktivna igra Tic-Tac Toe igra s Arduinom: 6 koraka
Interaktivna igra Tic-Tac Toe nogom kontrolirana s Arduinom: Cilj projekta Physical Tic-Tac-Toe je premjestiti dobro poznatu igru u fizičko područje. Izvorno, igru igraju dva igrača na komadu papira - stavljajući simbole "X" i "O" naizmjence. Naša ideja je bila ispitati ponašanje igrača