Arduino er meget populær til bygning af hobbyprojekter og -spil, og vi har tidligere brugt Arduino til at bygge Snake-spil, bordtennis-spil, Space Race-spil osv. I dag bygger vi endnu et populært spil ved hjælp af Arduino- Buzz wire-spil eller Steady hand-spil.
Til dette projekt bruger vi en Arduino Uno-, Buzzer- og to aluminiumsledninger. En 16x2 LCD er også grænseflade for at vise spilstatus. Begge ender af labyrintledningen vil være forbundet med den digitale pin 2 & 3 på Arduino, og håndtagstråden er forbundet til Arduino's jordstift. De digitale ben er defineret som INPUT_PULLUP ben. Så når håndtagstråden berører labyrintledningen, ændrer den de digitale stifttilstand til lav, og summeren afgiver en lyd.
En diode er forbundet i slutningen af labyrintledningen, så når du går forbi til den diode og berører labyrintledningen med et rundt håndtagstråd, vil kun en pin (ben 3) gå lavt. I den tilstand vises en lykønskningstekst (Godt klaret) på LCD.
Komponenter, der kræves
- Arduino Uno
- Aluminiumtråd
- 16x2 LCD
- I 2 C-modul
- Brødbræt
- Summer
- Diode
Kredsløbsdiagram
Kredsløbsdiagrammet til Arduino Buzz Wire Game er angivet ovenfor. SCL- og SDA-stifter på I2C-modulet er forbundet til A5- og A4-stifter på Arduino, mens V CC og GND-stift på I2C-modulet er forbundet til 5V og GND-stift i Arduino. Den positive skinne af Buzzer er forbundet til den digitale pin 4 i Arduino, og den negative skinne er forbundet til GND. Skær en aluminiumtråd og bøj den i Zig-Zag-form. Lod en diode i den ene ende af ledningen. Skær derefter en anden ledning for at lave et håndtag, og bøj den ene ende i en løkke.
16x2 LCD kan også interfaces med Arduino uden brug af et I2C-modul.
Tilslut D2 & D3-stifterne på Arduino til begge ender af Zig-Zag-ledningen og tilslut håndtaget til GND-stiften på Arduino.
Kode Forklaring
Komplet kode til dette Arduino Buzz Wire-spil findes i slutningen af dokumentet.
Start din kode ved at inkludere biblioteksfilen til LCD-modulet. LiquidCrystal_I2C.h-biblioteket bruges til I2C-kommunikation mellem Arduino- og LCD-moduler.
#omfatte
Derefter defineres Arduino-benene til summeren, startpunktet for ledningen og ledningens slutpunkt.
const int startPin = 2; const int endPin = 3; const int summer = 4;
Definer derefter to variable start & slut_. Disse variabler vil blive brugt til at gemme trådmålingerne.
int start, slut_;
Definer nu summerstiften som output og ledningstifter som INPUT_PULLUP . Arduino har interne pull-up-modstande med en værdi på omkring 20k ohm. Disse modstande kan tilsluttes internt ved hjælp af INPUT_PULLUP . Definition af en INPUT_PULLUP er funktionelt det samme som at forbinde en ~ 20k ohm modstand mellem stiften og + 5V.
pinMode (summer, OUTPUT); pinMode (startPin, INPUT_PULLUP); pinMode (startPin, INPUT_PULLUP);
Inde i hulrummet skal du læse status på ledningspindene.
start = digitalRead (startPin); end_ = digitalRead (endPin);
Sammenlign nu aflæsningerne af wire pins. Hvis begge stifter er lave, betyder det, at du har rørt ved ledningen, så summeren giver lyd, og hvis startstiften på ledningen er høj, og endenålen er lav, betyder det, at du nåede slutpunktet.
hvis (start == LAV && slut _ == LAV) {digitalWrite (summer, HIGH); forsinkelse (1000); digitalWrite (summer, LAV); lcd.setCursor (0,0); lcd.print ("Prøv igen"); Serial.print ("Prøv igen"); } ellers hvis (start == HIGH && end _ == LOW) {lcd.setCursor (0,0); lcd.print ("Godt udført"); Serial.print ("Godt udført"); }
Test af Buzz Wire Game
Efter tilslutning af hardware og upload af den givne kode kan du begynde at spille spillet. Så hold ledningen med en cirkel i hånden, og prøv at få ledning med cirkel hele vejen forbi til dioden loddet med zig-zag-ledning uden at lade den runde ledning røre overalt. Hvis du rører ved ledningerne, afgiver summeren en lyd, og LCD-displayet viser " Prøv igen ". Og hvis du gennemfører spillet uden at røre ved ledningen, vil det vise " Godt gået ".
Sådan kan du lave et Buzz Wire-spil med en Arduino. En arbejdsvideo og en komplet kode er angivet nedenfor.