Cuprins:
Video: Tenis Pong cu LED Matrix, Arduino și Joysticks: 5 pași (cu imagini)
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Acest proiect este destinat atât începătorilor, cât și jucătorilor cu experiență. La un nivel de bază, se poate face cu o placă de prindere, fire jumper și lipit de o bucată de material rezidual (am folosit lemn) cu Blu-Tack și fără lipire. Cu toate acestea, la un nivel mai avansat, poate fi lipit pe o placă de perfecționare sau pe un PCB personalizat.
Deoarece acesta a fost un proiect de blocare, nu am avut acces la multe instrumente sau materiale, de aceea este lipit de o bucată de resturi de lemn care este puțin prea mică cu Blu-Tack, cu toate acestea, în ciuda acestui fapt, este un proiect distractiv care vine împreună rapid și este alcătuit din piese disponibile în mod obișnuit, care pot fi găsite ieftin online.
Pasul 1: Piese
Pentru a crea jocul Pong ai nevoie;
- 1x Un Arduino (orice tip va funcționa)
- 4x MAX7219 Matrici LED 8x8
- 2x Joysticks
- 1x Piezo Buzzer (opțional)
- 15x fire jumper feminin-feminin (3x grupuri de 5)
- 15x fire jumper masculin-feminin (3x grupuri de 5)
- 18x fire jumper masculin-masculin
- 1x placă de pâine
- 1x rezistor de 220Ω
În loc de o placă Arduino Uno sau Nano puteți utiliza o placă de calcul Arduino pe bază de;
- 1x ATmega328p 28pin IC
- 1x Oscilator de cristal de 16 kHz
- Condensatori ceramici 2x 22pF
- 1x USB FTDI UART Converter
- 1x condensator electrolitic 100uF
- 1x Micro USB Breakout (Opțional)
Unelte;
- PC cu Arduino IDE (și LedControl Library)
- Cablu USB relevant pentru Arduino
- Power Bank pentru a alimenta jocul departe de computer
Pasul 2: Cablare
Cablarea este foarte simplă, deoarece nu aveți nevoie decât de fire jumper pentru a conecta anteturile Matricelor și Joystick-urilor la Arduino. Singura complicație este puterea, deoarece Arduino Uno are doar 3 conexiuni GND și o conexiune de 5v. În cazul în care panoul de intrare intră și acționează ca o șină de distribuție a energiei pentru toate componentele, dacă folosiți un NANO, placa de pană va avea același scop și vă va permite să conectați totul.
Pentru cablare, urmați aceste conexiuni.
- Joystick stâng - GND și 5v la șinele de alimentare respective. SW - pinul 9, VRx - A0, VRy - A1.
- Joystick dreapta - GND și 5v la șinele de alimentare respective. SW - pinul 8, VRx - A2, VRy - A3.
- Matricea LED din dreapta - GND și 5v la șinele de alimentare respective. DIN - 13, CS - 11, CLK - 12. (Conform liniei 25)
- Toate celelalte matrici cu LED-uri pot fi înlănțuite pe ieșirea primei, mergând de la dreapta la stânga, astfel încât codul să funcționeze corect.
- Buzzer opțional - Anod (+) prin rezistor de limitare a curentului de 220Ω la pinul 10, catod (-) - GND.
Pasul 3: Cablare alternativă
După ce l-am conectat cu un Arduino UNO pentru a economisi spațiu, am decis să pun Arduino IC de la UNO pe panou cu un oscilator de cristal de 16 MHz și o pereche de condensatori de 22 pF de la fiecare parte la masă. Cred că a fost o modificare care merită, deoarece face ca proiectul să pară mai ordonat și mai finalizat, totuși trebuie să utilizați un programator USB FTDI pentru a actualiza programul.
Pasul 4: Cod + Explicație
Pentru a încărca codul în Arduino descărcați biblioteca LedControl de pe GitHub aici, github.com/wayoda/LedControl și adăugați fișierul Zip sau adăugați-l prin Managerul de bibliotecă din IDE. După aceea deschideți schița atașată, selectați Arduino în setările de bord și port sub instrumente și încărcați-l pe arduino.
Explicaţie
Linia 1: adaugă biblioteca
Linia 5-23: Setează toate variabilele, constantele și numerele de pin.
Linia 25: Setează LED-ul Martix și setează pinii de control și câte afișaje.
Linia 27: Setează funcția de resetare.
Linia 30-35: Funcția de oprire pentru a porni / opri toate afișajele împreună.
Linia 38-43: funcția SetIntensity pentru a seta luminozitatea tuturor afișajelor împreună.
Linia 46-51: funcția ClearAll pentru a șterge toate afișajele împreună.
Linia 53-64: joystick Funcție pentru a obține poziția joystick-urilor, le mapează la cele 7 poziții posibile ale liliacului pentru lovirea mingii și apoi mută liliacul în noua poziție.
Linia 67-435: Funcție care mută mingea către jucătorul stâng la înălțimea și viteza specificate, verifică dacă jucătorul a lovit-o și fie continuă și stabilește starea de blocare la adevărat sau rotește mingea înapoi, adaugă 1 la scor și crește viteza.
Linia 438-811: Funcție care mută mingea către jucătorul potrivit la înălțimea și viteza specificate, verifică dacă jucătorul a lovit-o și fie continuă și stabilește starea de blocare la adevărat sau rotește mingea înapoi, adaugă 1 la scor și crește viteza.
Linia 813-823: Funcție pentru afișarea unui Smiley Face, Tick, Cross sau Question Mark pe afișajul specificat (0 în dreapta până la 3 în stânga).
Linia 861-979: Funcție pentru afișarea numerelor 0-9 pe afișajul specificat.
Linia 981-1047: Funcție pentru afișarea scorului pe fiecare parte a jucătorilor de pe ecran.
Linia 1049-1064: Funcție pentru a verifica dacă playerul este pregătit.
Linia 1066-1076: Secțiunea de configurare a codului pentru codul care se execută o dată când pornește programul.
Linia 1078-1136: Secțiunea Buclă principală pentru logica jocului în care sunt utilizate toate funcțiile și unde se decide cine câștigă și apoi repornește programul după 5 secunde de afișare a scorului.
Pasul 5: Vă mulțumim pentru lectură
Vă mulțumim că ați citit acest Instructable, a fost un proiect distractiv de blocare care s-a reunit în câteva zile, pe măsură ce am aflat mai multe despre programarea Arduino. Dacă v-a plăcut, nu ezitați să o votați la concursul Arduino.