Innholdsfortegnelse:

Arduino slagskipsspill: 3 trinn
Arduino slagskipsspill: 3 trinn

Video: Arduino slagskipsspill: 3 trinn

Video: Arduino slagskipsspill: 3 trinn
Video: Уроки Ардуино #0 - что такое Arduino, куда подключаются датчики и как питать Ардуино 2024, Juli
Anonim
Arduino slagskipsspill
Arduino slagskipsspill

Jeg husker jeg spilte en papir- og blyantversjon av Battleship Game som barn. Faktisk har det eksistert siden første verdenskrig. Jeg hadde også en "elektronisk" variant på begynnelsen av 1960 -tallet kalt "Sonar Sub Hunt" som hadde lys og lyder og skjulte gruver. Etter dagens videospillstandarder er Battleship ganske kjedelig, men jeg trodde jeg skulle lage en uansett bare for å se hva barnebarna syntes om det. Tross alt kan noen ganger retro være kult.

Det er biter av dette prosjektet som ville være nyttig andre steder, selv om du ikke er interessert i å lage Battleship -spillet. Den har et enkelt 4-biters 1602 LCD-grensesnitt som inkluderer en rutine for å angi en bestemt tegnplassering. Det er også et grensesnitt for dekoding av en 4x4 -brytermatrise. Disse to grensesnittene er tilgjengelige som separate, inkludert filer, slik at de er lette å transportere. Spillet har også forskjellige lydeffektrutiner og en enkel en-transistor lydforsterkerkrets.

Trinn 1: Maskinvare

Maskinvare
Maskinvare
Maskinvare
Maskinvare

Skjematikken som presenteres her er for en enkelt spiller, så det må lages to enheter. Enhetene kommuniserer ved hjelp av et 3-leder grensesnitt som inkluderer UART TX og RX linjer og en jordledning. Jeg valgte å bruke en standard 1/8 tommers stereo hodetelefonkontakt og en standard kabel med hanplugger i begge ender. RX fra den ene boksen går til TX i den andre boksen og omvendt. Du kan gjøre det ved å bytte ledningene som er loddet til hodetelefonkontakten inne i boksen eller bytte dem på kretskortet når du bygger det.

Det klassiske spillet ble lagt ut som en matrise, men jeg bestemte meg for å gjøre en enkel implementering ved hjelp av en 1602 LCD for skjermen. Den første linjen viser spillerens skipsteder og motstanderens skudd. Den andre linjen viser spillerens skudd og eventuelle treff på motstanderens skip. Det gir 16 mulige steder for skip. Antall skip er angitt i programvaren, og jeg valgte vilkårlig 5.

De 16 skipstedene passer fint til bryterkravene fordi det gir mulighet for en 4x4 -matrise. Det er 4x4 matrisebryterputer tilgjengelig, men jeg valgte å bruke individuelle brytere i en enkelt linje for å matche det lineære displayet. Jeg kablet imidlertid bryterne som en 4x4 -matrise, slik at det bare trengs åtte Arduino -pinner. Se koblingsskjemaet for bryteren og skjemaet for riktige tilkoblinger.

LCD-skjermen er kablet for et 4-biters grensesnitt. Jeg la også til en ekstern LED på pinne D13 for å indikere hvilken spiller som skulle ta et skudd. I utgangspunktet bestemmer spillerne hvem som tar det første skuddet, og deretter styrer programvaren automatisk frem og tilbake i spillet.

Jeg ønsket å legge til enkle lydeffekter for skuddet, eksplosjonene, spillet klart og vinneren/taperen. Jeg prøvde å bruke en enkel piezo -summer, men endte opp med en liten høyttaler i stedet. Strømmen som høyttaleren krever overskrider det Arduino kan håndtere, så en enkel transistorforsterker ble lagt til. Lyden er fremdeles ikke god, men den er bedre enn med summeren. Høyttaleren min er 4 ohm, men hvis du har en 8-ohm, må du endre motstanden i skjematikken fra 39 ohm til 33 ohm. Hvis du bruker en piezo -summer, bør du kunne kjøre den direkte fra Arduino -pinnen med den andre siden av summeren koblet til bakken.

En ekstern tilbakestillingsbryter er også inkludert og er koblet direkte mellom bakken og "reset" -pinnen på Arduino. Det gir midler for å starte spillet på nytt.

Trinn 2: Programvare

Programvaren har inkluderingsfilen for LCD -grensesnittet mitt, og jeg opprettet også en inkluderingsfil for 4x4 switch -matriseskanning. Initialiseringen ber spilleren om å velge stedene for skipene sine og går deretter til en "Klar" -tilstand. Når begge spillerne er klare starter en av dem spillet ved å trykke på en bryter.

Skuddstedet overføres via UART til den andre spilleren, og det riktige resultatet sendes tilbake til spilleren som avfyrte skuddet. Som nevnt tidligere, når det første bildet er tatt, styrer programvaren hvem som tar det neste bildet. Før et skudd overføres, kontrolleres det mot plasseringene til de forrige skuddene. Hvis stedet allerede har blitt brukt, vil ikke bildet bli overført. “My_Shot” LED -en avgjør hvem som er sin tur. Det genereres også en skuddlyd for et gyldig utvalg og en eksplosjonslyd hvis et skip blir truffet. Lydeffektene er hentet fra eksempler på nettet med modifikasjoner som passer til spillet.

Når en motstanders skip alle har blitt truffet, vises en melding på hver LCD - en som vinner og en som taper. Meldingen spesifiserer også at spillet kan startes på nytt ved å trykke på tilbakestillingsknappen. Det er også separate lydeffekter for vinneren og taperen.

Trinn 3: Skjermbilder

Skjermbilder
Skjermbilder
Skjermbilder
Skjermbilder
Skjermbilder
Skjermbilder
Skjermbilder
Skjermbilder

Her er noen skjermbilder fra spillet. Det er det for dette innlegget. Sjekk ut mine andre instrukser og også nettstedet mitt på: www.boomerrules.wordpress.com

Anbefalt: