Innehållsförteckning:

Arduino Battleship Game: 3 steg
Arduino Battleship Game: 3 steg

Video: Arduino Battleship Game: 3 steg

Video: Arduino Battleship Game: 3 steg
Video: We built an LED battleship game box in a week 2024, Juli
Anonim
Arduino Battleship Game
Arduino Battleship Game

Jag minns att jag spelade en papper och pennaversion av Battleship Game som barn. Faktum är att det har funnits sedan ungefär första världskriget. Jag hade också en "elektronisk" variant i början av 1960 -talet som kallades "Sonar Sub Hunt" som hade ljus och ljud och dolda gruvor. Enligt dagens videospelstandarder är Battleship ganska tråkigt men jag trodde att jag skulle göra en i alla fall bara för att se vad barnbarnen tyckte om det. När allt kommer omkring kan retro ibland vara coolt.

Det finns bitar av det här projektet som skulle vara användbart någon annanstans även om du inte är intresserad av att göra Battleship -spelet. Den har ett enkelt 4-bitars 1602 LCD-gränssnitt som innehåller en rutin för att ställa in en specifik teckenplats. Det finns också ett gränssnitt för avkodning av en 4x4 -switchmatris. Dessa två gränssnitt är tillgängliga som separata inkluderar filer så att de är lätta att transportera. Spelet har också olika ljudeffektrutiner och en enkel en-transistor ljudförstärkarkrets.

Steg 1: Hårdvara

Hårdvara
Hårdvara
Hårdvara
Hårdvara

Schemat som presenteras här är för en enda spelare så två enheter skulle behöva göras. Enheterna kommunicerar med ett 3-trådars gränssnitt som inkluderar UART TX- och RX-linjerna och en jordledning. Jag valde att använda ett standard 1/8 tums stereohörlursuttag och en standardkabel med hankontakter i båda ändarna. RX från en låda går till TX i den andra lådan och vice versa. Du kan göra det genom att byta trådarna som är lödda till hörlursuttaget inuti lådan eller byta dem på kretskortet när du bygger det.

Det klassiska spelet var utformat som en matris men jag bestämde mig för att göra en enkel implementering med en 1602 LCD för displayen. Den första raden visar spelarens skeppslägen och motståndarens skott. Den andra raden visar spelarens skott och alla träffar på motståndarens fartyg. Det ger 16 möjliga platser för fartyg. Antalet fartyg anges i programvaran och jag valde godtyckligt 5.

De 16 skeppslägena passar bra in på omkopplarkraven eftersom det möjliggör en 4x4 -matris. Det finns 4x4 matrisomkopplare, men jag valde att använda enskilda switchar i en enda rad för att matcha den linjära displayen. Jag trådade dock omkopplarna som en 4x4 -matris så att bara åtta Arduino -stift behövs. Se omkopplarens kopplingsschema och schemat för korrekta anslutningar.

LCD-skärmen är ansluten för ett 4-bitars gränssnitt. Jag lade också till en extern lysdiod på stift D13 för att indikera vilken spelare som skulle ta ett skott. Inledningsvis bestämmer spelarna vem som tar det första skottet och sedan styr mjukvaran automatiskt fram och tillbaka i spelet.

Jag ville lägga till enkla ljudeffekter för skottet, explosionerna, spelet klart och vinnaren/förloraren. Jag försökte använda en enkel piezo -summer men slutade med en liten högtalare istället. Strömmen som krävs av högtalaren överstiger vad Arduino kan hantera så en enkel transistorförstärkare tillkom. Ljudet är fortfarande inte bra men det är bättre än med summern. Min högtalare är 4 ohm men om du har en 8-ohm, ändra sedan motståndet i schemat från 39 ohm till 33 ohm. Om du använder en piezosummer bör du kunna köra den direkt från Arduino -stiftet med den andra sidan av summern ansluten till marken.

En extern återställningsomkopplare ingår också och är ansluten direkt mellan marken och "reset" -stiftet på Arduino. Det ger medel för att starta om spelet.

Steg 2: Programvara

Programvaran har inkluderingsfilen för mitt LCD -gränssnitt och jag skapade också en inkluderingsfil för 4x4 switch -matrisskanning. Initialiseringen uppmanar spelaren att välja platser för sina fartyg och går sedan till ett "Ready" -läge. När båda spelarna är klara startar en av dem spelet genom att trycka på en strömbrytare.

Skottplatsen överförs via UART till den andra spelaren och lämpligt resultat överförs tillbaka till spelaren som avlossade skottet. Som nämnts tidigare styr programvaran när det första skottet är taget, vem som tar nästa skott. Innan ett skott överförs kontrolleras det mot platserna för de föregående skotten. Om den platsen redan har använts skickas inte bilden. Lysdioden”My_Shot” avgör vems tur det är. Det genereras också ett skottljud för ett giltigt urval och ett explosionsljud om ett fartyg träffas. Ljudeffekterna härrör från exempel som finns online med ändringar som passar spelet.

När en motståndares fartyg alla har träffats visas ett meddelande på varje LCD - ett som vinnare och ett som förlorare. Meddelandet anger också att spelet kan startas om genom att trycka på återställningsknappen. Det finns också separata ljudeffekter för vinnaren och förloraren.

Steg 3: Skärmbilder

Skärmbilder
Skärmbilder
Skärmbilder
Skärmbilder
Skärmbilder
Skärmbilder
Skärmbilder
Skärmbilder

Här är några skärmdumpar från spelet. Det är det för det här inlägget. Kolla in mina andra instruktioner och även min webbplats på: www.boomerrules.wordpress.com

Rekommenderad: