Sommario:

Display LED in linea Giochi Arduino: 7 passaggi (con immagini)
Display LED in linea Giochi Arduino: 7 passaggi (con immagini)

Video: Display LED in linea Giochi Arduino: 7 passaggi (con immagini)

Video: Display LED in linea Giochi Arduino: 7 passaggi (con immagini)
Video: Accendere LED in sequenza casuale con Arduino #22 2024, Luglio
Anonim
Image
Image
Componenti principali
Componenti principali

alias sistema di gioco con display a scala a LED.

Un Attiny-85 dotato di hardware e software per giocare a "videogiochi" ricchi di azione, su un display a LED in linea.

Ha un display ladder a 12 LED multiplex e supporta fino a 6 ingressi per pulsanti e un'uscita audio opzionale.

È ricco di 4 giochi di abilità, con più livelli di difficoltà e alcune varianti (aggiornato a 16 giochi, se utilizzato con un MCU ATMega).

[Video]

Passaggio 1: componenti principali

Ho costruito il mio progetto in modo modulare (due assiemi separati). Un sottogruppo Display principale; che può essere utilizzato da solo stand-alone. E un sottoassieme di input Button. In questo modo posso utilizzare nuovamente il pulsante o il gruppo display in un altro progetto. Ciò consente anche opzioni di montaggio flessibili.

Ho anche portato la linea di controllo a un pin-header per l'assemblaggio della scala a LED in modo da poter utilizzare un Arduino Nano (o uno Uno), per sviluppare software per esso e utilizzarlo in altri progetti. Un Digispark non funzionerà a causa degli altri componenti sul suo circuito.

Ho scelto di utilizzare le stesse assegnazioni dei pin per la scala LED delle istruzioni precedenti per rendere più semplice l'utilizzo del software da parte di coloro che hanno già un'implementazione hardware di questo tipo, anche se non ho trovato le assegnazioni fatte per la logica più chiara in il software.

Le due linee tra i moduli sono PB4 e terra. Poiché tutto ciò che si trova sul gruppo multi-pulsante sono resistenze e interruttori, non dipende dalla polarità e non importa invertire la connessione.

Con il supporto di più pulsanti è possibile implementare una maggiore varietà di giochi (o applicazioni). Due dei giochi in questo istruibile si giocano meglio con due pulsanti. I quattro pulsanti principali possono essere utilizzati per accedere direttamente a un gioco associato. Presto realizzerò un gioco che dipende dall'uso di tutti e quattro i pulsanti principali.

Questo progetto utilizza fino a sei pulsanti. Quattro principali BTN 1-4, questi pulsanti possono essere rilevati individualmente anche quando due di essi vengono premuti contemporaneamente. Gli altri due sono pulsanti speciali, in primo luogo c'è l'equivalente del pulsante singolo nei progetti precedenti che crea una connessione rigida tra l'ingresso PB4 a terra, lo chiamo BTN0 o ESC poiché questo interruttore può sempre essere rilevato e bloccherà il rilevamento di nessuno degli altri. L'altro tasto speciale è il tasto funzione, se premuto quando vengono premuti BTN 0-4 può essere rilevato e utilizzato per modificare la funzionalità.

In questo schizzo di gioco di abilità uso:

  • Tasto Fnc+Btn1 torna alla modalità menu
  • Tasto Fnc+Btn2 avanza il livello di difficoltà (se al più alto torna al più basso)
  • Tasto Fnc+Btn4 Pausa istantanea (premi un tasto qualsiasi per riattivare la pausa)
  • FncKey + Btn 0 o 3 non sono definiti.

Passaggio 2: elenco delle parti

Elenco delle parti
Elenco delle parti

Parti richieste

  • LED, rosso, giallo, verde e blu come questi
  • Schede PCB articoli simili potrebbe essere necessario acquistare una scheda più grande e tagliarla alla dimensione desiderata.
  • articoli simili per presa pin dip
  • Chip Attiny-85
  • resistenti
  • interruttori a pulsante utilizzati: pulsanti tattili momentanei PCB 12x12x8mm e 6x6x6mm

consigliato:

  • cicalino 5v, tipo attivo
  • un bastoncino di ghiacciolo
  • Striscia di intestazione pin da 2,54 mm
  • Filo da 30 ga e strumento per avvolgere il filo https://www.ebay.com/itm/351798901037 il collegamento sopra è per un filo che è più simile a 36 ga. Vorrei sapere di un affare del genere per 30 ga reali. filo

Passaggio 3: punti salienti della costruzione

Punti salienti della costruzione
Punti salienti della costruzione
Punti salienti della costruzione
Punti salienti della costruzione
Punti salienti della costruzione
Punti salienti della costruzione
Punti salienti della costruzione
Punti salienti della costruzione

Sul gruppo della scheda principale ho elettricamente lo stesso di altri precedenti progetti di scale a LED, a cui potresti voler fare riferimento per ulteriori istruzioni di costruzione di base

Tuttavia, non utilizzo una resistenza di pull-up esterna sull'ingresso analogico A2 (PB4), inoltre utilizzo LED rosso, giallo, verde e blu, invece di un unico colore, il che è desiderabile per alcuni dei giochi che ho creato per questo hardware.

Ecco le assegnazioni di I/O come previsto dagli sketch software allegati:

Progetto MCU AT-85 Uno/Nano

Nomi nome pin# brd nome --------- ---- ---- --------- Rosso L1-3 PB3 2 D-11 Giallo L4-6 PB0 5 D-8 Verde L7-9 PB1 6 D-9 Blu L10-11 PB2 7 D-10 Ain PB4/A2 3 A-2 Audio PB5 1 D-3

L'unica differenza significativa è che ho due pulsanti collegati a PB4. Il primo va direttamente da PB4 a massa ma senza resistenza di pull up esterna (lo chiamo BTN0). Ho anche un interruttore a pulsante (che chiamo BTN1) collegato con un 75Kohm in serie a massa. Questa scheda madre può essere utilizzata senza la scheda di assemblaggio "Button", ma con alcune funzionalità limitate.

I resistori di limitazione della corrente che vanno ai set di LED dovrebbero essere scelti in base alla luminosità dei diversi LED di colore che usi e alla luminosità che vuoi. Ho finito con 91 Ohm per il set rosso, 75 giallo, 430 verde e 150 Ohm per il blu. Questi valori possono sembrare bassi, ma ricorda che i led sono multiplexati (generalmente molto < 100% delle volte)

Ho usato led da 3mm e li ho distanziati un po'. Avevo le gambe del LED a cavallo di un bastoncino di ghiacciolo. In questo modo hanno resistito tutti nella stessa quantità e soprattutto gli altri componenti. Ho intenzione, ad un certo punto, di montare l'unità con solo i LED che sporgono attraverso una cornice.

Ho scelto di avvolgere i cavi delle interconnessioni dei led. Senza uno speciale circuito stampato questo è più facile che saldare in spazi ristretti con molte interconnessioni; non tende a produrre cortocircuiti ed è più facile da ricablare in caso di errore. Con tutte le correnti dentro e intorno al microcontrollore nei milliampere, il filo da 30 ga è sufficiente.

Pulsanti e relative resistenze:

Ho ideato una configurazione unica (una sorta di doppia Y) di resistenze e pulsanti, in modo tale che il software possa distinguere le pressioni dei pulsanti singoli e doppi (in teoria è possibile identificare qualsiasi combinazione di questi quattro pulsanti). Ho provato diverse configurazioni con una moltitudine di valori di resistenze in un foglio di calcolo alla ricerca della configurazione migliore, quindi le ho simulate nel software facendogli provare tutte le possibili combinazioni di resistenze per trovare il set (che sto usando) che avrebbe prodotto la differenza massima o minima di letture analogiche tra qualsiasi e tutte le pressioni del pulsante singolo e doppio. Li ho disposti in modo che Btn1, Btn4 e Btn1+4 in particolare fossero distinti.

Fare riferimento al diagramma della rete di pulsanti sopra.

È necessario coprire tutti i cavi che si interconnettono a PB4 (e possibilmente commutare contatti e resistenze) con nastro isolante, colla a caldo o qualcos'altro che non conduce affatto, poiché una semplice resistenza da mega-ohm annullerà la capacità di determinare quali interruttori vengono premuti; e qualsiasi contatto del genere che fai mentre tieni un'assemblea lo farebbe.

Instructables associati in seguito:

4-Pulsante-Giochi-Utilizzando-Un-Ingresso-Analogico/

Dual-Power-per-il-Micro-Controller-Portatile-Proj/

Custodia-stampata in 3D per console-display-LED-in-line-e/

Passaggio 4: ulteriori opzioni e note

Ulteriori opzioni e note
Ulteriori opzioni e note

Uscita audio opzionale

L'uscita audio opzionale utilizza PB5. Ho collegato un cicalino da 5 V, in serie con una resistenza da 150 Ohm per limitare la sua fastidiosa uscita altrimenti rumorosa. Ti consiglio di usare 50-200 Ohm. Si potrebbe mettere in parallelo il cicalino con un cappuccio (2-10 uf) per renderlo meno roco, o utilizzare un altoparlante da 32 Ohm del driver da 10 mm rotto da un set di auricolari stereo economici, invece del resistore e del cicalino. Mi piace, per i suoni del gioco, meglio come ce l'ho.

Per impostazione predefinita, l'Attiny-85 utilizza PB5 come ripristino, efficace significa che l'audio funzionerebbe ma non avrà alcun effetto negativo su qualsiasi altra operazione. Quando si utilizza un Nano o Uno, l'audio funzionerà (esce il suo D3). Per ottenere l'audio con Attiny dovrai modificare la configurazione dei pin interni in modo che il software possa utilizzare PB5 come uscita. Ci sono ramificazioni significative nel fare questo; si prega di fare riferimento a questi:

forum.arduino.cc/index.php?topic=178971.0

www.instructables.com/id/Simple-and-cheap-F…

e

Generalmente durante il gioco un errore o un fallimento invocherà un cinguettio o un breve suono di lampone. C'è una melodia di congratulazioni suonata quando completi un livello o vinci, come a ping-pong. Trovo che avere l'audio di accompagnamento aumenti davvero la gioia di giocare.

Pulsanti del tipo di controller di gioco alternativo

Per i miei nipoti, che hanno problemi con l'attrezzatura, ho realizzato pulsanti separati resistenti, Btn1 e Btn4, all'estremità di lunghi cavi. Guarda la foto. Ho montato i pulsanti in impugnature truccate; con un 75Kohm in linea con Btn1 e un ~37Kohm in linea con Btn4. In serie con Btn4 ho effettivamente usato un 36K, un 33K o forse anche un 39K. Tenendo a mente i pulsanti a stantuffo esterni, sarebbe una buona idea disporre di un set separato di pin di intestazione, per il collegamento di pulsanti palmari esterni visti come Btn1 e Btn4.

Necessaria alimentazione di qualità

Come fonte di alimentazione è possibile utilizzare direttamente l'uscita USB 5v di un PC, tablet, caricatore da muro, un power bank o una batteria da 3,7 Li.

Ho scoperto che quando alimentavo l'unità da alcuni caricabatterie USB e diversi power bank USB, avrei notato sfarfallio e occasionali comportamenti mancati e persino reset. Se si verifica questo problema, trovare una fonte di alimentazione con una regolazione migliore, altrimenti potrebbe essere utile aggiungere un condensatore di grandi dimensioni (100-1000 uf) attraverso +V a terra.

test

Ho anche incluso un programma di test per aiutare a convalidare ed eseguire il debug del tuo hardware. Il codice è un work-in-progress e ha un grande bisogno di essere ripulito. Spero di arrivarci, ma intanto dovrebbe servire alle tue esigenze. L'ho usato di recente solo con un Nano che guida i gruppi display e tastiera. È possibile utilizzare quasi tutti i pulsanti per selezionare gli elementi dalla modalità menu. Per uscire di nuovo da una demo/test, premi quasi tutti i pulsanti. Per uscire dal test del pulsante (#4) premi FncKey + Btn1 o tieni premuto il tasto EscKey (messa a terra PB4) o riaccendi l'alimentazione.

A causa delle differenze nelle resistenze interne dell'MCU e nelle tolleranze dei resistori, potrebbe essere necessario eseguire alcune regolazioni in modo che tutte le pressioni dei pulsanti singoli e doppi vengano rilevate correttamente. Per fare ciò, utilizzare test-4 (per selezionarlo fare riferimento alla descrizione del funzionamento del menu di seguito) del programma di test. Nota che non ho usato un resistore di pull-up esterno poiché ho ulteriormente pianificato usi per l'ingresso PB4 che sono incompatibili con qualsiasi pull-up.

Passaggio 5: panoramica del software

Lo sketch LadderGames.ino implementa quattro giochi incluse alcune versioni alternative.

Lo schizzo può essere scaricato ed eseguito da un ATtiny-85, Nano, Uno ecc. Per programmarlo in un chip Attiny, vedere: https://www.instructables.com/id/Program-an-ATtiny… e/o per programmare il tuo chip ATtiny-85:

Cambia l'orologio interno dell'ATtiny85 a 8MHz, poiché le prestazioni sono desiderate per il gioco. Fare riferimento:

forum.arduino.cc/index.php?topic=276606.0

Questo schizzo dovrebbe essere retrocompatibile con la maggior parte dei precedenti progetti di scale a led ATtiny-85, senza modifiche, ma avrà alcune funzionalità limitate.

Funzionamento del menu

All'avvio c'è un controllo dello stato sotto forma di una scansione dei LED e una serie di segnali acustici. Quindi entra in modalità menu principale. Ogni set di LED di un colore si accende per un paio di secondi in successione. Un gioco viene selezionato premendo un pulsante mentre un set associato è acceso, gioco 1: rosso, gioco 2: giallo, gioco 3: verde, gioco 4: blu. In modalità menu è possibile premere Btn2, Btn3, Btn4 per passare direttamente ai giochi 2, 3, 4 rispettivamente. Una volta selezionato un gioco dovrai indicare la variazione che desideri. Per ogni variazione disponibile lampeggerà una serie di led colorati. Basta premere un pulsante su quello che si desidera. Le variazioni, “versioni”, per ogni gioco sono ulteriormente descritte di seguito.

La versione uno di tutti e quattro i giochi può essere giocata con un solo pulsante. O uno cablato tra PB4 e terra (Btn-0) come nelle precedenti istruzioni ladder a LED o con un interruttore che collega un carico di 75k a terra (Btn-1). Uno di questi andrà bene nei giochi quando le istruzioni parlano di una pressione di un pulsante non specifica.

Per uscire da qualsiasi gioco puoi usare FncKey + Btn1, tieni premuto EscKey (aka: Btn0) per 1-2 secondi o spegni e riaccendi.

Passaggio 6: gioco

Gioco 1: Premilo

Questo è un adattamento del mio gioco "Push-It" da uno dei miei primi istruttori

www.instructables.com/id/Play-a-Game-with-a…

L'obiettivo del gioco è aumentare il più possibile il numero di lampeggi e il numero di LED accesi. Push-It inizia con un numero di lampeggi, che poi si ripeteranno. Se si preme il pulsante dopo l'ultimo flash della serie e quando ne esisterebbe uno aggiuntivo, il LED successivo si accenderà e il conteggio dei flash aumenterà di uno. Ma se "spingi" prima o dopo il periodo di tempo di un potenziale flash aggiuntivo, il conteggio dei flash nel set sarà ridotto.

Ogni volta che riesci ad aumentare il numero di flash, il livello di difficoltà aumenta man mano che i tempi accelerano un po', rendendo sempre più difficile arrivare a conteggi di flash più alti.

Il numero di conteggio corrente viene memorizzato nella memoria EEPROM per il riavvio successivo allo stesso livello.

Gioco 2: Ping-Pong

Grande (anche se l'unico) gioco competitivo per due giocatori qui; dove la palla (singolo lampo di luce) va da una parte all'altra, sempre più veloce, ogni volta che viene 'colpita' indietro.

Ho implementato per la prima volta questo gioco di luci a fila singola attraverso le luci dei pulsanti del pannello frontale di un super-mini computer aerospaziale negli anni '70.

Per colpire la pallina avanti e indietro l'apposita paletta deve colpirla (pulsante premuto) quando si trova nella posizione finale (ultimo LED). Il primo lato che sbaglia perde e le luci sul lato vincente lampeggiano.

Ci sono due varianti, una che richiede un solo pulsante (Btn 0 o 1), che colpirà la palla alle due estremità; e una seconda versione, per due persone testa a testa, che richiede due pulsanti; pulsante 1 sul lato sinistro e pulsante 4 o 0 sull'altro. È preferibile l'uso dei pulsanti 1 e 4, in quanto non interferiscono tra loro; ciascuno può essere colpito per restituire la palla dalla sua estremità, indipendentemente dallo stato dell'altro pulsante.

Il vincitore di un rally è sempre il server per il prossimo.

Gioco 3: Tiro a segno

Spara a tutti i bersagli (luci) per completare un livello. In ogni livello superiore l'azione è più veloce.

Ci sono due versioni; uno in cui il sito è fisso e gli obiettivi si muovono e un altro in cui il sito si sposta e gli obiettivi sono fermi. In ogni caso un colpo mette fuori gioco una luce bersaglio; e un errore fa apparire un bersaglio. Quando un bersaglio è in vista, il mirino si illumina di più, altrimenti è fioco.

Nella prima versione il mirino inizia a sinistra (in basso) e scansiona a destra. Nella versione 2 il mirino è fisso al centro mentre il bersaglio si sposta da destra a sinistra. Guardando il codice ci sono versioni spettrali 3 e 4 che potrebbero essere attivate, ma metti il tuo benessere a tuo rischio.

Gioco 4: JumpMan

L'idea è che stai correndo attraverso un livello di gioco in cui gli oggetti arrivano lungo i quali devi saltare, mentre avanzi arrivano più velocemente. In un'altra versione del gioco ci sono anche oggetti sopra la testa sotto cui devi nasconderti.

Nella versione uno ci sono solo oggetti su cui saltare. Per saltare è necessario premere il pulsante quando l'oggetto arriva nell'ultima cella a sinistra; che si illumina quando ciò si verifica. Per saltare 2 o più oggetti consecutivi devi saltare (premere) sul primo e tenere premuto il pulsante per il resto.

Nella versione 2 vengono aggiunti oggetti sopra la testa (lampeggianti). Questi vengono saltati "saltando durante la cella precedente e rilasciati mentre si trova nella cella finale". Può lampeggiare solo un overhead alla volta, quindi una volta che uno è passato potresti vederne un altro (non lampeggiante prima) nudo su di te. Non ci saranno mai overhead consecutivi ma possono essere adiacenti a uno o più oggetti di salto (tipo masso).

Nella versione del gioco 3 devi, arrivare, usare un pulsante separato per gli oggetti sopra la testa (Btn- 2, 4 o 0 a tua scelta); i salti richiedono quindi Btn-1.

Una volta che hai superato quattro oggetti in più rispetto a quelli in cui hai fallito, avanzi di livello; c'è un complimento audio e visivo, poi una ripresa a un ritmo più veloce. Ottenere da un insieme di oggetti consecutivi conta come un singolo oggetto.

Ti consiglio di stampare le regole di funzionamento dei giochi e di rileggerle prima di giocare a un gioco a cui non hai giocato di recente. Altrimenti, puoi frustrarti; pensare che il gioco non funzioni correttamente quando in realtà lo è, ma tu e il gioco avete modi e aspettative diversi. Io stesso sono caduto a questo punto più di un paio di volte.

Passaggio 7: aggiornamenti, più giochi

Image
Image

Ho realizzato una custodia per console stampata in 3D per ospitare il display e i pulsanti della scala a LED in linea.

Ho ideato più giochi che utilizzano questo hardware. Dai un'occhiata e divertiti:

Nuovi giochi da "Whack a Mole" a "Tug of War"

Dicembre 2016. Ora, alla fine del collegamento sopra, c'è una versione unificata del codice che include tutti i 12 giochi.

17 febbraio 2017: Ecco l'ultimo set di giochi per questo progetto, ora con 16 giochi (schizzo sotto). Questo verrà eseguito su qualsiasi implementazione MCU con 32 KB di memoria di programma flash. Tutto però da uno a 3 o 4 dei 16 giochi possono essere inseriti in un ATtiny. Consiglio di usare gli arduino Nano 3. Gli ultimi 4 giochi aggiunti sono "Le Mans" corse, "Spray" gara di verniciatura a spruzzo testa a testa., "PIG" tiro al canestro da basket, "BiFunc" un gioco a quiz di operazioni binarie.

Con un gioco più ampio e diversificato di questi giochi miglioramenti alle loro capacità di gioco, è possibile il divertimento per tutti i giocatori di livello. Penso che ci sia molto spazio per migliorare nelle corse di Le Mans attraverso il design del tracciato e il tempismo di gioco.

Ho scritto circa altre 10 attività/giochi/funzioni, alcune delle quali spero di rendere disponibili intorno all'autunno 2017.

Anche questi giochi a una riga possono essere modificati per un display LCD 2x16 a 2 righe, con una riga di oggetti di gioco e un'altra per del testo. Ho fatto un po' di questo, ma, dato che sono supportato da progetti per quanto posso vedere, non so quando o se ci riuscirò. Quindi, se qualcuno è motivato ad adottare e ottimizzare questi giochi per un LCD 2x16, condividili con me e altri.

Oltre ai 4 nuovi giochi qui in Menu_16Games.ino, ho incluso il mio progetto e ho creato istruttori correlati: Console di gioco LED in linea Custodia e alimentazione del tuo progetto MCU portatile

Spero che molti si prendano il tempo e… GODITI questi giochi.

Gioco di gruppo: 1– Rosso 2- Giallo 3 – Verde 4 – Blu

1 rosso PushIt PingPong ShootEmUp JumpMan 2 Yel QuickDraw Tug_a_War Chicken Hot_Hands 3 Grn Le_Mans Spray PIG BiFunc 4 Blu SimonSays Whack_Mole Sea_Hunt Flip_d

2 settembre 2017: Miglioramento della capacità di lavoro con i vecchi pulsanti joystick esterni rumorosi e sporchi, nel gioco testa-testa (gruppo 2).

13 dicembre 2017: Migliorata la gestione del rimbalzo del pulsante e dell'assestamento della misurazione, risolti problemi minori. Avevo provato a utilizzare un condensatore sulla linea di ingresso analogico del pulsante, ma per essere efficace risultava in un lento assestamento della misurazione che produceva false identificazioni di livello o che il software attendeva così a lungo quell'azione di gioco veloce è stata compromessa.

Aprile 2018: ho scoperto che gli accoppiatori a compressione da 5/8 sono ottimi per i pulsanti esterni in stile stantuffo. Poiché ai miei figli piace usare un paio di questi, ho aggiunto i perni di intestazione in modo da collegarne facilmente due (come Btn1 e Btn4).

Nota che ho creato un altro progetto, lo scorso ottobre, basato sull'hardware di questo istruibile. È nello spirito di Halloween e può essere molto divertente, soprattutto per i bambini. Instructable: dispositivi influenzati dalla psiche spettrale

Consigliato: