Sommario:
- Passaggio 1: parti
- Passaggio 2: cablaggio
- Passaggio 3: cablaggio alternativo
- Passaggio 4: codice + spiegazione
- Passaggio 5: grazie per la lettura
Video: Pong Tennis con matrice LED, Arduino e joystick: 5 passaggi (con immagini)
2025 Autore: John Day | [email protected]. Ultima modifica: 2025-01-10 13:47
Questo progetto è destinato sia ai principianti che agli esperti di bricolage. A un livello base può essere fatto con una breadboard, dei ponticelli e attaccato a un pezzo di materiale di scarto (ho usato il legno) con Blu-Tack e senza saldature. Tuttavia, a un livello più avanzato, può essere saldato su una scheda perf o su un PCB personalizzato.
Dato che si trattava di un progetto di blocco, non avevo accesso a molti strumenti o materiali, quindi perché è rimasto bloccato su un pezzo di legno di scarto che è leggermente troppo piccolo con Blu-Tack, tuttavia nonostante questo è un progetto divertente che si riunisce rapidamente ed è composto da parti comunemente disponibili che possono essere trovate a buon mercato online.
Passaggio 1: parti
Per realizzare il Pong Game di cui hai bisogno;
- 1x Un Arduino (qualsiasi tipo funzionerà)
- 4x MAX7219 8x8 matrici LED
- 2x joystick
- 1x cicalino piezoelettrico (opzionale)
- 15x cavi jumper femmina-femmina (3x gruppi di 5)
- 15x cavi jumper maschio-femmina (3x gruppi di 5)
- 18x cavi jumper maschio-maschio
- 1x tagliere
- 1x resistenza da 220Ω
Invece di una scheda Arduino Uno o Nano puoi usare un Arduino basato su breadboard con;
- 1x CI ATmega328p 28pin
- 1x oscillatore a cristallo da 16kHz
- Condensatori ceramici 2x 22pF
- 1x convertitore USB FTDI UART
- 1x condensatore elettrolitico da 100uF
- 1x Micro USB Breakout (opzionale)
Utensili;
- PC con Arduino IDE (e libreria LedControl)
- Cavo USB rilevante per il tuo Arduino
- Power Bank per alimentare il gioco lontano dal tuo computer
Passaggio 2: cablaggio
Il cablaggio è molto semplice in quanto tutto ciò che serve sono i ponticelli per collegare le intestazioni delle matrici e dei joystick ad Arduino. L'unica complicazione è la potenza in quanto Arduino Uno ha solo 3 connessioni GND e una connessione 5v. È qui che entra in gioco la breadboard e funge da binario di distribuzione dell'alimentazione per tutti i componenti. Se stai utilizzando un NANO, la breadboard servirà allo stesso scopo oltre a consentirti di collegare tutto.
Per il cablaggio seguire questi collegamenti.
- Joystick sinistro - GND e 5v ai rispettivi power rail. SW - pin 9, VRx - A0, VRy - A1.
- Joystick destro - GND e 5v ai rispettivi power rail. SW - pin 8, VRx - A2, VRy - A3.
- Matrice LED più a destra - GND e 5v ai rispettivi binari di alimentazione. DIN - 13, CS - 11, CLK - 12. (Come riga 25)
- Tutte le altre matrici LED possono essere collegate a margherita dall'uscita della prima andando da destra a sinistra in modo che il codice funzioni correttamente.
- Buzzer opzionale - Anodo(+) tramite resistore di limitazione della corrente da 220Ω al pin 10, Catodo(-) - GND.
Passaggio 3: cablaggio alternativo
Dopo averlo cablato con un Arduino UNO per risparmiare spazio, ho deciso di mettere l'IC Arduino dell'UNO sulla breadboard con un oscillatore a cristallo da 16 Mhz e una coppia di condensatori da 22 pF da ciascun lato a terra. Ritengo che questa sia stata una modifica utile in quanto rende il progetto più ordinato e più rifinito, tuttavia è necessario utilizzare un programmatore USB FTDI per aggiornare il programma.
Passaggio 4: codice + spiegazione
Per caricare il codice su Arduino scarica la libreria LedControl da GitHub qui, github.com/wayoda/LedControl e aggiungi il file Zip o aggiungilo tramite il Gestore della libreria all'interno dell'IDE. Dopodiché apri lo schizzo allegato, seleziona il tuo Arduino nella scheda e le impostazioni della porta in Strumenti e caricalo su Arduino.
Spiegazione
Riga 1: aggiunge la libreria
Riga 5-23: Imposta tutte le variabili, costanti e numeri di pin.
Riga 25: imposta il LED Martix e imposta i pin di controllo e quanti display.
Riga 27: imposta la funzione di ripristino.
Riga 30-35: Funzione di spegnimento per accendere/spegnere tutti i display insieme.
Riga 38-43: Funzione SetIntensity per impostare la luminosità di tutti i display insieme.
Riga 46-51: Funzione ClearAll per cancellare tutti i display insieme.
Riga 53-64: joystick Funzione per ottenere la posizione dei joystick, mapparli sulle 7 possibili posizioni della mazza per colpire la palla e quindi spostare la mazza nella nuova posizione.
Riga 67-435: Funzione che sposta la palla al giocatore sinistro all'altezza e alla velocità specificate, controlla se il giocatore l'ha colpita e continua e imposta lo stato di crash su true o fa rimbalzare la palla, aggiunge 1 al punteggio e aumenta la velocità.
Riga 438-811: Funzione che sposta la palla al giocatore destro all'altezza e alla velocità specificate, controlla se il giocatore l'ha colpita e continua e imposta lo stato di crash su true o fa rimbalzare la palla, aggiunge 1 al punteggio e aumenta la velocità.
Riga 813-823: Funzione per visualizzare una faccina sorridente, un segno di spunta, una croce o un punto interrogativo sul display specificato (da 0 a destra a 3 a sinistra).
Riga 861-979: Funzione per visualizzare i numeri 0-9 sul display specificato.
Riga 981-1047: Funzione per visualizzare il punteggio a ciascun lato dello schermo dei giocatori.
Riga 1049-1064: Funzione per verificare se il lettore è pronto.
Riga 1066-1076: Setup Sezione del codice per il codice che viene eseguito una volta all'avvio del programma.
Riga 1078-1136: Sezione Main Loop per la logica di gioco in cui vengono utilizzate tutte le funzioni e dove viene deciso chi vince e quindi riavvia il programma dopo 5 secondi dalla visualizzazione del punteggio.
Passaggio 5: grazie per la lettura
Grazie per aver letto questo Instructable, è stato un divertente progetto di blocco che si è riunito in un paio di giorni mentre imparavo di più sulla programmazione di Arduino. Se ti è piaciuto, sentiti libero di votarlo nel concorso Arduino.