Kazalo:

Igra Arduino Battleship: 3 koraki
Igra Arduino Battleship: 3 koraki

Video: Igra Arduino Battleship: 3 koraki

Video: Igra Arduino Battleship: 3 koraki
Video: Lego Technic Automatic Candle snuffer #Shorts 2024, November
Anonim
Igra Arduino Battleship
Igra Arduino Battleship

Spomnim se, da sem kot otrok igral različico Battleship Game na papirju in svinčniku. Pravzaprav obstaja že od prve svetovne vojne. V začetku šestdesetih let sem imel tudi "elektronsko" različico, imenovano "Sonar Sub Hunt", ki je imela luči in zvoke ter skrite mine. Po današnjih standardih video iger je Battleship precej dolgočasna, vendar sem mislil, da bi jo vseeno naredil samo zato, da vidim, kaj si vnuki mislijo o tem. Konec koncev je včasih retro lahko kul.

Obstajajo delci tega projekta, ki bi bili uporabni drugje, tudi če vas ne zanima izdelava igre Battleship. Ima preprost 4-bitni 1602 LCD vmesnik, ki vključuje rutino za nastavitev določene lokacije znakov. Obstaja tudi vmesnik za dekodiranje stikalne matrice 4x4. Ta dva vmesnika sta na voljo kot ločeni datoteki za vključitev, zato ju je enostavno prenašati. Igra ima tudi različne rutine zvočnih učinkov in preprosto vezje zvočnega ojačevalnika z enim tranzistorjem.

1. korak: Strojna oprema

Strojna oprema
Strojna oprema
Strojna oprema
Strojna oprema

Shema, predstavljena tukaj, je za enega igralca, zato bi morali izdelati dve enoti. Enote komunicirajo prek 3-žičnega vmesnika, ki vključuje linije UART TX in RX ter ozemljitveno žico. Odločil sem se, da bom uporabil standardni 1/8 -palčni stereo priključek za slušalke in standardni kabel z moškimi vtiči na obeh koncih. RX iz ene škatle gre v TX druge škatle in obratno. To lahko storite tako, da zamenjate žice, spajane v vtičnico za slušalke v škatli, ali pa jih zamenjate na vezju, ko ga gradite.

Klasična igra je bila postavljena kot matrika, vendar sem se odločil za preprosto izvedbo s pomočjo zaslona 1602 za zaslon. Prva vrstica prikazuje lokacije ladij igralca in strele nasprotnika. Druga vrstica prikazuje igralčeve strele in morebitne zadetke na nasprotnikovih ladjah. To zagotavlja 16 možnih lokacij za ladje. Število ladij je nastavljeno v programski opremi in sem poljubno izbral 5.

16 lokacij ladij se lepo prilega zahtevam stikala, saj omogoča matriko 4x4. Na voljo so matrične stikalne ploščice 4x4, vendar sem se odločil uporabiti posamezna stikala v eni vrstici, da se ujemajo z linearnim prikazom. Vseeno sem stikala povezal kot matriko 4x4, tako da je potrebnih le osem zatičev Arduino. Za pravilne povezave glejte shemo ožičenja stikala in shemo.

LCD zaslon je priključen na 4-bitni vmesnik. Na pin D13 sem dodal tudi zunanjo LED, ki označuje, kateri igralec naj strelja. Igralci se najprej odločijo, kdo bo prvi strel, nato pa programska oprema samodejno nadzira naprej in nazaj v igri.

Želel sem dodati preproste zvočne učinke za posnetek, eksplozije, pripravljeno igro in zmagovalca/poraženca. Poskušal sem uporabiti preprost piezo brenčalec, vendar sem namesto tega dobil majhen zvočnik. Tok, ki ga zahteva zvočnik, presega tisto, kar zmore Arduino, zato je bil dodan preprost tranzistorski ojačevalnik. Zvok še vedno ni odličen, vendar je boljši kot pri zvočniku. Moj zvočnik je 4 ohmov, če pa imate 8-ohmskega, spremenite shematski upor s 39 ohmov na 33 ohmov. Če uporabljate piezo -zvočni signal, bi ga morali zagnati neposredno iz zatiča Arduino z drugo stranjo zvočnika, priključeno na tla.

Priloženo je tudi zunanje stikalo za ponastavitev, ki je ožičeno neposredno med maso in zatičem za ponastavitev na Arduinu. To zagotavlja sredstva za ponovni zagon igre.

2. korak: Programska oprema

Programska oprema ima datoteko include za moj LCD vmesnik, ustvaril pa sem tudi datoteko include za skeniranje matrike stikala 4x4. Inicializacija pozove igralca, da izbere lokacije za svoje ladje, nato pa preide v stanje "pripravljen". Ko sta oba igralca pripravljena, eden od njiju začne igro s pritiskom na stikalo.

Mesto strela se prek UART posreduje drugemu igralcu, ustrezen rezultat pa nazaj igralcu, ki je sprožil strel. Kot smo že omenili, programska oprema ob prvem posnetku nadzira, kdo bo naredil naslednji posnetek. Pred prenosom posnetka se preveri glede na lokacije prejšnjih posnetkov. Če je bila ta lokacija že uporabljena, posnetek ne bo prenesen. LED »My_Shot« določa, kdo je na vrsti. Za veljavno izbiro se ustvari tudi zvok strela in zvok eksplozije, če je zadeta ladja. Zvočni učinki izhajajo iz primerov na spletu s spremembami, ki ustrezajo igri.

Ko so zadete vse nasprotnikove ladje, se na vsakem LCD -prikazovalniku prikaže sporočilo - eno kot zmagovalca in eno kot poraženega. Sporočilo določa tudi, da se lahko igro znova zažene s pritiskom na gumb za ponastavitev. Za zmagovalca in poraženca obstajajo tudi ločeni zvočni učinki.

3. korak: Posnetki zaslona

Posnetki zaslona
Posnetki zaslona
Posnetki zaslona
Posnetki zaslona
Posnetki zaslona
Posnetki zaslona
Posnetki zaslona
Posnetki zaslona

Tukaj je nekaj posnetkov zaslona iz igre. To je to za to objavo. Oglejte si moje druge Instructables in tudi mojo spletno stran na: www.boomerrules.wordpress.com

Priporočena: