Cuprins:

Joc de reacție rapidă: Versiune la distanță: 5 pași (cu imagini)
Joc de reacție rapidă: Versiune la distanță: 5 pași (cu imagini)

Video: Joc de reacție rapidă: Versiune la distanță: 5 pași (cu imagini)

Video: Joc de reacție rapidă: Versiune la distanță: 5 pași (cu imagini)
Video: Cum scrii când începi un caiet nou 2024, Iulie
Anonim
Joc de reacție rapidă: versiunea la distanță
Joc de reacție rapidă: versiunea la distanță

Salut. Acesta este un instructiv despre cum să creați un joc care vă testează atât timpul de reacție, cât și sensul distanței. Acest proiect se bazează pe un proiect vechi pe care l-am făcut, implicând doi jucători care concurau pentru a vedea cine a avut un timp de reacție mai rapid făcând clic pe un buton când o lumină a devenit verde. Acesta are un scop similar, cu excepția faptului că este un singur jucător și mai degrabă decât să se stingă o lumină, jucătorului i se acordă un interval de timp pentru a distanța mâna lor un anumit spațiu departe de un senzor de distanță.

Ca toate proiectele Arduino, acest joc va necesita numeroase componente electrice în circuitul Arduino. Componentele principale, altele decât cablajul și Arduino în sine, includ placa de măsurare, un servomotor, un afișaj LCD, un LED RGB și un senzor de distanță.

Folosind https://abra-electronics.com, prețul excluzând firele și Arduino este de 32,12 USD CAD.

Pasul 1: Pasul 1: senzor de distanță

Pasul 1: senzor de distanță
Pasul 1: senzor de distanță

Primul pas este să configurați senzorul de distanță cu ultrasunete pe panou și să îl conectați la Arduino. Poziția exactă a senzorului nu contează de fapt, dar în mod ideal este aproape de o margine, astfel încât să existe loc pentru celelalte componente, așa cum se arată în imaginea de mai sus. Există patru pini pe senzor; GND, VCC, TRIG și ECHO. GND și VCC trebuie să fie conectate la pământ și, respectiv, la șinele de alimentare și să le conectați în ceilalți doi pini în doi pini de pe Arduino. Cei doi pini pe care i-am folosit au fost 12 pentru ECHO și 11 pentru TRIG. Utilizați alte două fire pentru a alimenta șina de alimentare și împământarea șinei de masă conectând șina de alimentare la știftul de 5V și șina de sol la un știft GND.

Pasul 2: Pasul 2: Servomotor

Pasul 2: Servomotor
Pasul 2: Servomotor

Următorul pas este configurarea servomotorului. În acest proiect, servomotorul funcționează ca un temporizator. Va începe de la 1 grad și, în perioada de timp în care utilizatorul trebuie să își distanțeze mâinile, se va roti la 180 de grade. Am folosit 2 secunde pentru când utilizatorul află cât de departe trebuie să-și distanțeze mâinile, astfel încât servo-ul se rotește cu 179 grade pe o perioadă de 2 secunde, rotindu-se la intervale scurte. Servomotorul are trei fire; de obicei un galben, un roșu și un maro. Cea roșie intră în șina de alimentare care este deja conectată la 5V, iar cea maro intră în șina de la sol deja cablată în GND. Sârma finală se conectează la un pin Arduino. Am ales pinul # 9 pentru acesta. Apoi, aveți nevoie de un condensator care să conecteze aceeași șină pe care sunt conectate cablurile de alimentare și de împământare ale servomotorului, așa cum se vede în imaginea de mai sus.

Pasul 3: Pasul 3: LED RGB

Pasul 3: LED RGB
Pasul 3: LED RGB

Funcția LED-ului în acesta este de a acționa ca o scară pentru scor. Când scorul jucătorului este în jur de 0, LED-ul va fi alb și va deveni mai roșu dacă scorul jucătorului scade și verde dacă scorul jucătorului crește. Acest LED are patru picioare; un picior cu lumină roșie, un picior cu lumină albastră, un picior cu lumină verde și un catod comun împărțit între celelalte trei picioare. Catodul comun, cel mai lung picior, este conectat la șina de alimentare, astfel încât să primească 5 volți. Atașați rezistențe de 330 ohm la celelalte trei picioare de culoare și atașați celelalte capete ale acestor rezistențe la pinii digitali PWM de pe Arduino. Cele pe care le-am folosit au fost pinii digitali 3, 5 și 6 pentru picioarele roșu, verde și respectiv albastru.

Pasul 4: Pasul 4: LCD

Pasul 4: LCD
Pasul 4: LCD

Componenta finală este LCD-ul, care reprezintă afișajul cu cristale lichide. Scopul acestui lucru este de a spune jucătorului scorul lor actual, precum și distanța de care au nevoie pentru a pune mâinile departe de senzor. Există patru pini aici; GND, VCC, SDA și SCL. GND și VCC vor fi conectate la sol și, respectiv, la șinele de alimentare ale panoului. Pinul SDA trebuie conectat la pinul analogic A4, iar pinul SCL trebuie conectat la pinul analogic A5. Spre deosebire de celelalte componente, trebuie să conectați pinii SDA și SCL la A4 și A5.

Pasul 5: Pasul 5: Codul

Acum că am conectat toate componentele, putem scrie codul. Prima parte a codului este să importăm bibliotecile necesare și să declarăm variabilele noastre și în ce pini componentele sunt conectate. Trebuie să importăm bibliotecile Wire, LiquidCrystal_I2C și Servo pentru acest cod.

#include

#include

#include

Servo myServo;

int const trigPin = 11;

int const echoPin = 12;

int redPin = 3;

int greenPin = 5;

int BluePin = 6;

int scor = 0;

int tim = 500;

int curent = aleatoriu (8, 16); // valoare aleatorie în care utilizatorul trebuie să-și distanțeze mâna de senzor

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

Acum trebuie să folosim setarea nulă () pentru a declara tipurile noastre de pini și a configura alte componente necesare.

void setup () {myServo.attach (9); Serial.begin (9600); pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); pinMode pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT); lcd.init (); lcd.backlight (); lcd.inceput (16, 2); lcd.clear (); // configurare LCD}

Acum trebuie să configurăm codul LED RGB folosind o funcție și PWM:

void setColor (int roșu, int verde, int albastru) {

roșu = 255 - roșu;

verde = 255 - verde;

albastru = 255 - albastru;

analogWrite (redPin, red);

analogWrite (greenPin, verde);

analogWrite (bluePin, blue);

}

Acum trebuie să adăugăm bucla void (). Aici, vom genera numere întregi aleatorii și vom folosi o serie de instrucțiuni if pentru a controla jocul pentru jucător. Variabila curentă, configurată mai sus, este pentru distanța curentă pe care jucătorul trebuie să se distanțeze de senzor.

Deoarece codul din bucla nulă () este foarte lung, voi lipi un link către un document care are acel cod:

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

În cele din urmă, trebuie să facem calculele efective pentru a converti valorile senzorului de distanță cu ultrasunete în inci. Senzorul de distanță cu ultrasunete nu măsoară direct distanța; eliberează sunet și înregistrează timpul necesar senzorului pentru a obține sunetul înapoi de la orice obiect din care sări.

long microsecondsToInches (microsecunde lungi) {

returnează microsecunde / 74/2;

}

Acum conectăm Arduino cu fir la computer cu codul, configurăm porturile și îl rulăm! Există două moduri în acest joc. Fie puteți utiliza doar afișajul LCD, servomotorul, senzorul și LED-ul RGB și știți doar distanța pe care trebuie să o aveți de la senzor, care este modul cel mai greu. Modul mai ușor implică utilizarea monitorului serial în Instrumente> Monitor serial, care vă va actualiza în fiecare secundă cu privire la cât de departe sunteți de senzor, astfel încât să puteți face ajustările necesare.

Mulțumesc pentru lectură!

Recomandat: