Sommario:

Arduino e Touchpad Tic Tac Toe: 8 passaggi (con immagini)
Arduino e Touchpad Tic Tac Toe: 8 passaggi (con immagini)

Video: Arduino e Touchpad Tic Tac Toe: 8 passaggi (con immagini)

Video: Arduino e Touchpad Tic Tac Toe: 8 passaggi (con immagini)
Video: 8 Cool Arduino Science Projects 2024, Settembre
Anonim
Arduino e Touchpad Tic Tac Toe
Arduino e Touchpad Tic Tac Toe

Oppure, un esercizio sul multiplexing di input e output e sul lavoro con i bit. E una presentazione per il concorso Arduino.

Questa è un'implementazione di un gioco tic tac toe che utilizza una serie 3x3 di LED bicolori per un display, un semplice touchpad resistivo e un Arduino per collegare tutto insieme. Per vedere come funziona, guarda il video: Cosa richiede questo progetto: Parti e materiali di consumo Una scheda perf (o strip board) Nove LED bicolore, catodo comune Nove resistori identici, nell'intervallo 100-220 ohm Sei resistori identici, nel Gamma 10kohm - 500kohm Un interruttore unipolare, a due vie Un gruppo di pin di testa Un gruppo di cavi elettrici Un piccolo foglio quadrato di acrilico trasparente, spesso circa 1 mm, 8 cm di lato Nastro adesivo trasparente Termorestringenti (opzionale) Tutto quanto sopra sono articoli abbastanza comuni, il costo totale non deve superare $ 20 USD. Strumenti Una configurazione Arduino (Arduino Duemilanove, Arduino IDE, computer, cavo USB) Consueti strumenti elettrici (multimetro, saldatrice, cesoie, tagliafili) Tutto ciò che riguarda Arduino può essere disponibile su https://www.arduino.cc. Avanti con la costruzione!

Passaggio 1: cablaggio della matrice LED

Cablaggio della matrice LED
Cablaggio della matrice LED
Cablaggio della matrice LED
Cablaggio della matrice LED

Affinché un LED si accenda, entrambi i suoi cavi devono essere collegati. Se dovessimo dedicare una coppia di pin a ciascuno dei 18 LED (9 rossi, 9 verdi), finiremmo rapidamente i pin su Arduino. Tuttavia, con il multiplexing, saremo in grado di indirizzare tutti i LED con solo 9 pin! Per fare ciò, i LED sono cablati in modo incrociato, come mostrato nella prima figura. I LED sono raggruppati in colonne di tre e i loro catodi sono raggruppati in file di sei. Impostando una particolare linea anodica alta e una particolare linea catodica bassa, e avendo un'alta impedenza su tutte le altre linee anodica e catodica, possiamo selezionare quale LED vogliamo accendere, in quanto esiste un solo percorso possibile che la corrente può seguire. Ad esempio, nella seconda figura, impostando la linea verde dell'anodo 1 alta e la linea del catodo 1 bassa, si accende il LED verde in basso a sinistra. Il percorso corrente in questo caso è mostrato in blu. Ma cosa succede se si desidera accendere più di un LED su linee diverse? Useremo la persistenza della visione per raggiungere questo obiettivo. Selezionando le coppie di linee LED molto molto velocemente, si dà l'illusione che tutti i LED selezionati siano accesi contemporaneamente.

Passaggio 2: disposizione della matrice LED

Disposizione matrice LED
Disposizione matrice LED
Disposizione matrice LED
Disposizione matrice LED

Lo schema elettrico seguente mostra come sono fisicamente cablati i LED (G1-G9: LED verdi, R1-R9: LED rossi). Questo diagramma è per LED rossi e verdi singoli, se si utilizzano LED rosso/verde a catodo comune bicolore, c'è solo una gamba del catodo per coppia rosso/verde che è necessario cablare. Le linee dell'anodo rosso e verde vanno nei pin PWM dell'Arduino (pin 3, 5, 6, 9, 10, 11 sul Duemilanove), in modo da poter avere effetti come dissolvenza in seguito. Le linee del catodo vanno nei pin 4, 7 e 8. Ognuna delle linee del catodo e dell'anodo ha resistori da 100 ohm per la protezione.

Passaggio 3: indirizzamento della matrice LED

Per il codice tic tac toe, dovremo essere in grado di memorizzare le seguenti informazioni sui LED: - se un LED è acceso o meno - se acceso, se è rosso o verde Un modo per farlo è memorizzare lo stato in un array di 9 celle, utilizzando tre cifre per rappresentare lo stato (0 = spento, 1 = rosso acceso, 2 = verde acceso). Ogni volta che dobbiamo controllare gli stati del LED, ad esempio, per verificare se c'è una condizione di vincita, dovremo scorrere l'array. Questo è un metodo praticabile, ma piuttosto goffo. Un metodo più snello sarebbe quello di utilizzare due gruppi di nove bit. Il primo gruppo di nove bit memorizza lo stato di accensione/spegnimento dei LED, mentre il secondo gruppo di nove bit memorizza il colore. Quindi, la manipolazione degli stati dei LED diventa semplicemente una questione di aritmetica e spostamento. Ecco un esempio funzionante. Diciamo che disegniamo graficamente la nostra griglia del tris, e prima usiamo 1 e 0 per rappresentare lo stato on-off (1 è acceso, 0 è spento): 000 000 = matrice con LED in basso a sinistra acceso 100 100 010 = matrice con diagonale LED accesi 001 Se enumeriamo le celle in basso a sinistra, possiamo scrivere le rappresentazioni di cui sopra come una serie di bit. Nel primo caso sarebbe 10000000, e nel secondo sarebbe 001010100. Se pensiamo a queste come rappresentazioni binarie, allora ogni serie di bit può essere condensata in un unico numero (256 nel primo caso, 84 nel secondo caso). Quindi, invece di usare un array per memorizzare lo stato della matrice, possiamo semplicemente usare un singolo numero! Allo stesso modo, possiamo rappresentare il colore del LED allo stesso modo (1 è rosso, 0 è verde). Supponiamo innanzitutto che tutti i led siano accesi (quindi lo stato on-off è rappresentato da 511). La matrice sottostante rappresenterà quindi lo stato del colore dei LED: 010 verde, rosso, verde 101 rosso, verde, rosso 010 verde, rosso, verde Ora, quando si visualizza la matrice di LED, non ci resta che scorrere ciascuno dei bit, prima nello stato on-off e poi nello stato colore. Ad esempio, supponiamo che il nostro stato on-off sia 100100100 e lo stato del colore sia 010101010. Ecco il nostro algoritmo per accendere la matrice LED: Passaggio 1. Eseguire un'aggiunta bit per bit dello stato on-off con un 1 binario (cioè bit mascheramento). Passaggio 2. Se è vero, il LED è acceso. Fai ora un'aggiunta bit per bit dello stato del colore con un binario 1. Passaggio 3. Se è vero, accendi il LED rosso. Se è falso, accendi il LED verde. Passaggio 4. Spostare sia lo stato on-off che lo stato del colore, un bit a destra (ovvero lo spostamento del bit). Passaggio 5. Ripetere i passaggi 1 - 4 finché non sono stati letti tutti e nove i bit. Nota che stiamo riempiendo la matrice al contrario: iniziamo con la cella 9, quindi procediamo di nuovo fino alla cella 1. Inoltre, gli stati on-off e colore sono memorizzati come un tipo intero senza segno (parola) invece di un tipo intero con segno. Questo perché nello spostamento dei bit, se non stiamo attenti, potremmo inavvertitamente cambiare il segno della variabile. In allegato il codice per l'accensione della matrice LED.

Passaggio 4: costruzione del touch pad

Costruzione del touch pad
Costruzione del touch pad
Costruzione del touch pad
Costruzione del touch pad
Costruzione del touch pad
Costruzione del touch pad
Costruire il Touch Pad
Costruire il Touch Pad

Il touchpad è costituito da un foglio di acrilico sottile, abbastanza grande da sovrapporsi alla matrice LED. Quindi, fissa i fili della riga e della colonna sul foglio acrilico, usando del nastro adesivo trasparente. Il nastro trasparente viene utilizzato anche come distanziatore isolante tra i fili, alle intersezioni. Assicurati di utilizzare strumenti puliti, per evitare che il grasso delle dita penetri sul lato adesivo del nastro. Le macchie di impronte digitali non solo sembrano brutte, ma rendono il nastro meno appiccicoso. Taglia un'estremità di ciascuna delle linee e salda l'altra estremità a un filo più lungo. Saldare un resistore in linea con i fili, prima di saldare i connettori. I resistori utilizzati qui sono 674k, ma qualsiasi valore compreso tra 10k e 1M dovrebbe andare bene. Le connessioni all'Arduino vengono effettuate utilizzando i 6 pin analogici, con i pin 14-16 collegati alle righe della griglia metallica e i pin 17-19 collegati a le colonne.

Passaggio 5: il touch pad: come funziona

Il touch pad: come funziona
Il touch pad: come funziona
Il touch pad: come funziona
Il touch pad: come funziona

Proprio come abbiamo utilizzato un multiplexer crossbar per configurare una matrice LED con pin minimi, possiamo utilizzare un multiplexer crossbar simile per configurare un array di sensori tattili, che possiamo quindi utilizzare per attivare i LED. Il concetto di questo touch pad è semplice. È essenzialmente una griglia metallica, con tre fili scoperti che corrono in file e tre fili scoperti che corrono in colonne sopra le righe. Ad ogni punto di intersezione c'è un quadratino di isolamento che impedisce ai due fili di toccarsi. Un dito che tocca l'intersezione entrerà in contatto con entrambi i fili, risultando in un'enorme, ma limitata resistenza tra i due fili. È quindi possibile far passare una corrente piccola, ma rilevabile, da un filo all'altro, tramite il dito. Per determinare quale intersezione è stata premuta, è stato utilizzato il seguente metodo: Passaggio 1: Impostare tutte le righe di colonna su OUTPUT LOW. Passaggio 2: impostare le righe di riga su INPUT, con i pullup interni attivati. Passaggio 3: eseguire una lettura analogica su ciascuna riga di riga finché il valore non scende al di sotto di una determinata soglia. Questo ti dice in quale riga si trova l'intersezione premuta. Passaggio 4: ripeti i passaggi 1-3, ma ora con le colonne come input e le righe come output. Questo indica quale colonna è l'intersezione premuta. Per ridurre al minimo gli effetti del rumore, viene eseguita una serie di letture e quindi viene calcolata la media. Il risultato medio viene quindi confrontato con una soglia. Poiché questo metodo controlla solo rispetto a una soglia, non è adatto per rilevare pressioni simultanee. Tuttavia, poiché il tic tac toe procede a turno, è sufficiente leggere una singola pressione. In allegato è uno schizzo che illustra come funziona il touchpad. Come con la matrice LED, i bit vengono utilizzati per rappresentare quale intersezione è stata premuta.

Passaggio 6: mettere tutto insieme

Mettere tutto insieme
Mettere tutto insieme

Ora che tutti i singoli componenti sono finiti, è il momento di metterli tutti insieme. Sovrapponi la griglia metallica sulla matrice LED. Potrebbe essere necessario riordinare la numerazione dei pin nel codice a matrice LED per sincronizzarlo con il sensore della rete metallica. Fissa la griglia in posizione con fissaggi o adesivi a tua scelta e incollala su una bella tavola da gioco. Aggiungi un interruttore tra il pin 12 e la massa dell'Arduino. Questo interruttore serve per alternare tra la modalità a 2 giocatori e la modalità a 1 giocatore (rispetto al microcontrollore).

Passaggio 7: programmazione di Tic Tac Toe

In allegato c'è il codice del gioco. Per prima cosa suddividiamo il gioco del tic tac toe nelle sue varie fasi, nella modalità a due giocatori: Fase 1: Il giocatore A sceglie una cella vuota toccando un incrocio. Passaggio 2: il LED di quella cella si illumina con il colore A. Passaggio 3: controlla se il giocatore A ha vinto. Passaggio 4: il giocatore B sceglie una cella vuota. Passaggio 5: il LED di quella cella si illumina con il colore B. Fase 6: controlla se il giocatore B ha vinto. Fase 7: ripeti da 1 a 6 fino a quando non c'è una condizione di vittoria, o se tutte le celle sono piene. Lettura delle celle:Il programma scorre tra la lettura della griglia e la visualizzazione della matrice di LED. Finché il sensore di rete non registra un valore diverso da zero, questo ciclo continuerà. Quando si preme un'intersezione, la variabile Pressed memorizza la posizione della cella premuta. Verifica se la cella è vuota: Quando si ottiene una lettura di posizione (variabile Pressed), questa viene confrontata con lo stato corrente della cella (memorizzato nella variabile GridOnOff) utilizzando un'aggiunta bit per bit. Se la cella Pressed è vuota, allora procedi all'accensione del led, altrimenti torna alla lettura delle celle. Commutazione dei colori: Una variabile booleana, Turn, serve per registrare di chi è il turno. Il colore del LED scelto quando viene selezionata una cella è determinato da questa variabile, che si alterna ogni volta che viene scelta una cella. Verifica di una condizione di vincita:Ci sono solo 8 possibili condizioni di vincita e queste sono memorizzate come variabili di parole in un array (winArray). Vengono utilizzate due aggiunte bit per bit per confrontare le posizioni delle celle piene di un giocatore con le condizioni di vincita. Se c'è una partita, il programma mostra una routine di vittoria, dopo di che inizia una nuova partita. Verifica di una condizione di pareggio: quando sono stati registrati nove turni e non c'è ancora alcuna condizione di vittoria, allora la partita è in parità. I LED vengono quindi sbiaditi e viene avviato un nuovo gioco. Passaggio alla modalità a un giocatore: se l'interruttore è in posizione di accensione, il programma passa alla modalità a un giocatore, con il giocatore umano che inizia per primo. Alla fine del turno del giocatore umano, il programma sceglie semplicemente una cella a caso. Ovviamente, questa non è la strategia più intelligente!

Passaggio 8: osservazioni e ulteriori miglioramenti

Ecco un video che mostra la modalità a un giocatore, con il programma che esegue mosse totalmente casuali: Il programma mostrato qui è solo una versione minimale e essenziale. Molte altre cose possono essere fatte con questo: 1) Accendere i LED tre alla volta Il codice corrente visualizza solo un LED alla volta. Tuttavia, con il cablaggio mostrato qui, è possibile accendere contemporaneamente tutti i LED collegati a una linea catodica. Quindi, invece di scorrere tutte e nove le posizioni, tutto ciò che devi fare è scorrere le tre linee del catodo.2) Utilizzare gli interrupt per visualizzare i LED A seconda della routine di visualizzazione dei LED e della quantità di elaborazione, i LED possono mostrare un certo grado di tremolante. Utilizzando gli interrupt, la temporizzazione dei LED può essere controllata con precisione e porterebbe a una visualizzazione più fluida.3) Un lettore di computer più intelligenteIl codice corrente occupa solo pochi kb, lasciandone un po' di più per l'implementazione di un computer più intelligente tic tac toe player. Spero che ti sia piaciuto leggere questo tutorial tanto quanto io mi sono divertito a lavorarci!

Consigliato: