Inhoudsopgave:

Snelle reactiegame: afstandsversie: 5 stappen (met afbeeldingen)
Snelle reactiegame: afstandsversie: 5 stappen (met afbeeldingen)

Video: Snelle reactiegame: afstandsversie: 5 stappen (met afbeeldingen)

Video: Snelle reactiegame: afstandsversie: 5 stappen (met afbeeldingen)
Video: Lay's® SMAAK ICONEN Review ?⭐ | 4 SMAKEN + 1 BONUS | Livestream Replay 7.24.20 Kijk dit uit! ... 2024, November
Anonim
Snelle reactiegame: afstandsversie
Snelle reactiegame: afstandsversie

Hoi. Dit is een Instructable over hoe je een spel kunt maken dat zowel je reactietijd als je gevoel voor afstand test. Dit project is gebaseerd op een oud project dat ik deed waarbij twee spelers strijden om te zien wie een snellere reactietijd had door op een knop te klikken wanneer een lampje groen werd. Deze heeft een soortgelijk doel, behalve dat het voor één speler is en in plaats van dat er een lampje uitgaat, krijgt de speler een tijdsbestek om zijn hand op een bepaalde afstand van een afstandssensor te plaatsen.

Zoals alle Arduino-projecten, vereist dit spel een groot aantal elektrische componenten in het Arduino-circuit. De belangrijkste componenten, behalve de bedrading en de Arduino zelf, zijn het breadboard, een servomotor, een LCD-scherm, een RGB-led en een afstandssensor.

Met https://abra-electronics.com is de prijs exclusief de draden en Arduino $ 32,12 CAD.

Stap 1: Stap 1: Afstandssensor

Stap 1: Afstandssensor
Stap 1: Afstandssensor

De eerste stap is om de ultrasone afstandssensor op het breadboard in te stellen en deze op de Arduino aan te sluiten. De exacte positie van de sensor doet er eigenlijk niet toe, maar idealiter is het dicht bij een rand zodat er ruimte is voor de andere componenten, zoals weergegeven in de afbeelding hierboven. Er zijn vier pinnen op de sensor; GND, VCC, TRIG en ECHO. GND en VCC moeten respectievelijk in de grond en de stroomrails worden aangesloten en de andere twee pinnen in twee pinnen op de Arduino aansluiten. De twee pinnen die ik gebruikte waren 12 voor ECHO en 11 voor TRIG. Gebruik twee andere draden om de voedingsrail van stroom te voorzien en de aardingsrail te aarden door de voedingsrail aan te sluiten op de 5V-pin en de grondrail op een GND-pin.

Stap 2: Stap 2: Servomotor

Stap 2: Servomotor
Stap 2: Servomotor

De volgende stap is het instellen van de servomotor. In dit project fungeert de servomotor als timer. Het begint bij 1 graad, en gedurende de tijd dat de gebruiker zijn handen op afstand moet houden, zal het draaien tot 180 graden. Ik gebruikte 2 seconden voor wanneer de gebruiker erachter komt hoe ver ze hun handen moeten verwijderen, dus de servo roteert 179 graden over een periode van 2 seconden en roteert met korte intervallen. De servomotor heeft drie draden; meestal een gele, een rode en een bruine. De rode gaat in de stroomrail die al is aangesloten op 5V, en de bruine gaat in de grondrail die al is aangesloten op GND. De laatste draad wordt aangesloten op een Arduino-pin. Ik koos pin #9 voor deze. Dan hebt u een condensator nodig die dezelfde rail verbindt waarop de voedings- en aardingsdraden van de servomotor zijn aangesloten, zoals te zien is in de bovenstaande afbeelding.

Stap 3: Stap 3: RGB-LED

Stap 3: RGB-LED
Stap 3: RGB-LED

De functie van de LED hierin is om als schaal voor de partituur te fungeren. Wanneer de score van de speler rond de 0 is, zal de LED wit zijn en zal meer rood worden als de score van de speler daalt en groen als de score van de speler stijgt. Deze LED heeft vier poten; een roodlichtbeen, een blauwlichtbeen, een groenlichtbeen en een gemeenschappelijke kathode gedeeld tussen de andere drie poten. De gemeenschappelijke kathode, het langste been, is aangesloten op de stroomrail, zodat deze 5 volt ontvangt. Bevestig weerstanden van 330 ohm aan de andere drie kleurenpoten en bevestig de andere uiteinden van die weerstanden aan digitale PWM-pinnen op de Arduino. Degene die ik gebruikte waren digitale pinnen 3, 5 en 6 voor respectievelijk de rode, groene en blauwe poten.

Stap 4: Stap 4: LCD

Stap 4: LCD
Stap 4: LCD

Het laatste onderdeel is het LCD-scherm, wat staat voor liquid crystal display. Het doel hiervan is om de speler zijn huidige score te vertellen, evenals de afstand die hij nodig heeft om zijn handen weg te houden van de sensor. Er zijn hier vier pinnen; GND, VCC, SDA en SCL. GND en VCC zullen respectievelijk worden aangesloten op de grond en de stroomrails van het breadboard. De SDA-pin moet worden aangesloten op de analoge pin A4 en de SCL-pin moet worden aangesloten op de analoge pin A5. In tegenstelling tot de andere componenten, moet u de SDA- en SCL-pinnen aansluiten op A4 en A5.

Stap 5: Stap 5: de code

Nu we alle componenten hebben aangesloten, kunnen we de code schrijven. Het eerste deel van de code is om de benodigde bibliotheken te importeren en onze variabelen te declareren en op welke pinnen de componenten zijn aangesloten. We moeten de Wire-, LiquidCrystal_I2C- en Servo-bibliotheken voor deze code importeren.

#erbij betrekken

#erbij betrekken

#erbij betrekken

Servo mijnServo;

int const trigPin = 11;

int const echoPin = 12;

int redPin = 3;

int groenePin = 5;

int blauwePin = 6;

int-score = 0;

int-tim = 500;

int stroom = willekeurig (8, 16); // willekeurige waarde waarbij de gebruiker zijn hand van de sensor moet verwijderen

LiquidCrystal_I2C lcd (0x27, 16, 2); //LCD-configuratie

Nu moeten we de void setup() gebruiken om onze pintypes te declareren en andere noodzakelijke componenten in te stellen.

void setup() { myServo.attach(9); Serieel.begin(9600); pinMode (trigPin, UITGANG); pinMode (echoPin, INPUT); pinMode pinMode (redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode (bluePin, UITGANG); lcd.init(); lcd.achtergrondverlichting(); lcd.begin (16, 2); lcd.wissen(); //LCD-configuratie}

Nu moeten we de RGB LED-code instellen met behulp van een functie en PWM:

void setColor (int rood, int groen, int blauw) {

rood = 255 - rood;

groen = 255 - groen;

blauw = 255 - blauw;

analogWrite(redPin, rood);

analogWrite(greenPin, groen);

analogWrite(bluePin, blauw);

}

Nu moeten we de void loop() toevoegen. Hier gaan we willekeurige gehele getallen genereren en een reeks if-statements gebruiken om het spel voor de speler te besturen. De huidige variabele, hierboven ingesteld, is voor de huidige afstand die de speler moet nemen van de sensor.

Omdat de code in de void loop() erg lang is, plak ik een link naar een document met die code:

docs.google.com/document/d/1DufS0wuX0N6gpv…

Ten slotte moeten we de eigenlijke berekeningen uitvoeren om de waarden van de ultrasone afstandssensor om te zetten in inches. De ultrasone afstandssensor meet de afstand niet direct; het geeft geluid af en registreert de tijd die de sensor nodig heeft om het geluid terug te krijgen van welk object het ook weerkaatst.

lange microsecondenToInches(lange microseconden) {

retour microseconden / 74 / 2;

}

Nu pluggen we de bedrade Arduino in de computer met de code, stellen de poorten in en voeren het uit! Er zijn twee modi in dit spel. Of je kunt alleen het LCD-scherm, de servomotor, de sensor en de RGB-LED gebruiken en je weet alleen de afstand die je moet hebben van de sensor, wat de hardere modus is. De eenvoudigere modus omvat het gebruik van de seriële monitor in Extra > Seriële monitor, die u elke seconde zal updaten over hoe ver u zich van de sensor bevindt, zodat u de nodige aanpassingen kunt maken.

Bedankt voor het lezen!

Aanbevolen: