Inhoudsopgave:

Arduino slagschipspel - Ajarnpa
Arduino slagschipspel - Ajarnpa

Video: Arduino slagschipspel - Ajarnpa

Video: Arduino slagschipspel - Ajarnpa
Video: Уроки Ардуино #0 - что такое Arduino, куда подключаются датчики и как питать Ардуино 2024, November
Anonim
Arduino slagschip spel
Arduino slagschip spel

Ik herinner me dat ik als kind een versie van het slagschipspel op papier en met potlood speelde. In feite bestaat het al sinds ongeveer de Eerste Wereldoorlog. Ik had begin jaren zestig ook een "elektronische" variant genaamd "Sonar Sub Hunt" met lichten en geluiden en verborgen mijnen. Volgens de huidige normen voor videogames is Battleship behoorlijk saai, maar ik dacht dat ik er toch een zou maken om te zien wat de kleinkinderen ervan vonden. Soms kan retro tenslotte cool zijn.

Er zijn stukjes en beetjes van dit project die elders nuttig zouden zijn, zelfs als je niet geïnteresseerd bent in het maken van de Battleship-game. Het heeft een eenvoudige 4-bit 1602 LCD-interface die een routine bevat voor het instellen van een specifieke tekenlocatie. Er is ook een interface voor het decoderen van een 4x4 schakelmatrix. Deze twee interfaces zijn beschikbaar als afzonderlijke meegeleverde bestanden, zodat ze gemakkelijk kunnen worden getransporteerd. De game heeft ook verschillende geluidseffectroutines en een eenvoudig audioversterkercircuit met één transistor.

Stap 1: Hardware

Hardware
Hardware
Hardware
Hardware

Het hier gepresenteerde schema is voor een enkele speler, dus er zouden twee eenheden moeten worden gemaakt. De units communiceren via een 3-draads interface die de UART TX- en RX-lijnen en een aardingsdraad omvat. Ik koos ervoor om een standaard 1/8 inch stereo hoofdtelefoonaansluiting en een standaard kabel met mannelijke stekkers aan beide uiteinden te gebruiken. De RX van de ene doos gaat naar de TX van de andere doos en vice versa. U kunt dat doen door de draden die aan de koptelefoonaansluiting in de doos zijn gesoldeerd om te wisselen of ze op de printplaat te verwisselen wanneer u deze bouwt.

Het klassieke spel was ingedeeld als een matrix, maar ik besloot een eenvoudige implementatie te doen met een 1602 LCD voor het display. De eerste regel toont de scheepslocaties van de speler en de schoten van de tegenstander. De tweede regel toont de schoten van de speler en eventuele treffers op de schepen van de tegenstander. Dat levert 16 mogelijke locaties voor schepen op. Het aantal schepen is ingesteld in de software en ik heb er willekeurig 5 gekozen.

De 16 scheepslocaties sluiten mooi aan bij de switch-eisen omdat er een 4x4 matrix mogelijk is. Er zijn 4x4 matrix-schakelpads beschikbaar, maar ik heb ervoor gekozen om afzonderlijke schakelaars in een enkele regel te gebruiken om bij het lineaire display te passen. Ik heb de schakelaars echter als een 4x4-matrix aangesloten, zodat er slechts acht Arduino-pinnen nodig zijn. Raadpleeg het schakelschema en het schema voor de juiste aansluitingen.

Het LCD-scherm is bedraad voor een 4-bits interface. Ik heb ook een externe LED op pin D13 toegevoegd om aan te geven welke speler een opname moet maken. In eerste instantie beslissen de spelers wie het eerste schot neemt en vervolgens regelt de software automatisch het heen en weer van het spel.

Ik wilde eenvoudige geluidseffecten toevoegen voor het schot, de explosies, het spel klaar en de winnaar/verliezer. Ik probeerde een eenvoudige piëzo-zoemer te gebruiken, maar kreeg in plaats daarvan een kleine luidspreker. De stroom die de luidspreker nodig heeft, overtreft wat de Arduino aankan, dus werd een eenvoudige transistorversterker toegevoegd. Het geluid is nog steeds niet geweldig, maar het is beter dan met de zoemer. Mijn luidspreker is 4 ohm, maar als je een 8-ohm hebt, verander dan de weerstand in het schema van 39 ohm naar 33 ohm. Als u een piëzo-zoemer gebruikt, moet u deze rechtstreeks vanaf de Arduino-pin kunnen aansturen met de andere kant van de zoemer verbonden met aarde.

Een externe reset-schakelaar is ook inbegrepen en is rechtstreeks bedraad tussen aarde en de "reset" -pin op de Arduino. Dat biedt de middelen om het spel opnieuw te starten.

Stap 2: Software

De software heeft het include-bestand voor mijn LCD-interface en ik heb ook een include-bestand gemaakt voor het scannen van de 4x4 switch-matrix. De initialisatie vraagt de speler om de locaties voor zijn schepen te selecteren en gaat dan naar een "Klaar"-status. Als beide spelers klaar zijn, begint een van hen het spel door op een schakelaar te drukken.

De schotlocatie wordt via de UART naar de andere speler verzonden en het juiste resultaat wordt teruggestuurd naar de speler die het schot heeft gelost. Zoals eerder vermeld, bepaalt de software wie de volgende opname maakt zodra de eerste opname is gemaakt. Voordat een opname wordt verzonden, wordt deze vergeleken met de locaties van de vorige opnames. Als die locatie al is gebruikt, wordt de opname niet verzonden. De “My_Shot” LED bepaalt wie aan de beurt is. Er wordt ook een schotgeluid gegenereerd voor een geldige selectie en een explosiegeluid als een schip wordt geraakt. De geluidseffecten zijn afgeleid van voorbeelden die online zijn gevonden met aanpassingen die bij het spel passen.

Zodra alle schepen van een tegenstander zijn geraakt, wordt op elk LCD-scherm een bericht weergegeven: één als winnaar en één als verliezer. Het bericht geeft ook aan dat het spel opnieuw kan worden gestart door op de reset-knop te drukken. Er zijn ook aparte geluidseffecten voor de winnaar en de verliezer.

Stap 3: Schermafbeeldingen

Schermafbeeldingen
Schermafbeeldingen
Schermafbeeldingen
Schermafbeeldingen
Schermafbeeldingen
Schermafbeeldingen
Schermafbeeldingen
Schermafbeeldingen

Hier zijn enkele screenshots van het spel. Dat was het voor dit bericht. Bekijk mijn andere Instructables en ook mijn website op: www.boomerrules.wordpress.com

Aanbevolen: