Nel tuo kit hai una tastiera a membrana.
Ora la maggior parte delle tastiere che si includono, inclusa la tastiera per il computer, sono una matrice.
Ora cosa intendo per Matrix.
Bene, diamo un'occhiata al cablaggio interno della tastiera.
Ne ho strappato uno aperto qui.
Quindi puoi vedere all'interno non farlo perché rovina la tastiera.
Diciamo che premo questo tasto qui.
Collega questo cavo a questo cavo.
Se premo questo pulsante e questo cavo viene collegato a questo filo è morto o se premo questo
pulsante questo cavo è collegato a questo cavo.
Quindi, come puoi vedere, è una matrice di righe e colonne collegate premendo i pulsanti.
Ora costruendo una matrice di pulsanti riduce il numero di fili necessari.
Questa è una tastiera a 20 tasti, ma possiamo leggere tutti e 20 i pulsanti usando solo nove fili.
Quindi, come leggiamo le tastiere a matrice.
Bene vediamo che l'utente ha premuto questo pulsante proprio qui il nove.
Quindi fondamentalmente scansioniamo la tastiera.
Inviamo una nota alta su una delle colonne o le righe utilizzano tutte le colonne.
Quindi invia una nota alta alla prima chiamata all'interno della scansione delle righe una per una alla ricerca del massimo
da trasmettere su una delle righe.
Non c'è nessun limite, quindi impostiamo la colonna bassa e mettiamo un high nella colonna successiva e scansioniamo le righe.
Ancora una volta non c'è nessun alto ovunque.
Quindi li impostiamo come bassi e impostiamo il prossimo alto.
Mentre scansioniamo le file alla ricerca di un massimo, vediamo una e la quarta riga perché eseguiamo il riscanning con gli
input e gli output digitali, sappiamo quale colonna era alta e quale riga era collegata a quella alta.
Quindi ora possiamo determinare quale pulsante è stato premuto se non è stato premuto alcun pulsante.
Quindi tutte le mie letture tornerebbero come zero.
Ho appena iniziato la scansione tutto da capo.
Leggendo dalla prima colonna e dalla prima riga non si capisce cosa stia scrivendo sulla tastiera.
Vedi le nostre tastiere hanno numeri.
Una sterlina è una stella anche in alcuni tasti di controllo e funzione.
Ciò non ha alcun significato per Arduino: l'Arduino comprende solo i numeri binari.
Questo è tutto.
Come è tipico della programmazione, c'è più di un modo per portare a termine il lavoro.
Quindi, come entrambi leggi e gestisci le letture della tastiera.
Ti lascerò.
Ti guiderò attraverso ciò che ho fatto solo per darti alcune idee e un punto di partenza.
Quello che ho fatto è stato impostato Ho appena impostato una funzione matematica in cui ogni colonna equivale a una certa quantità e
ogni riga equivale a una certa quantità.
Quindi, quando l'Arduino rileva un pulsante, fa semplicemente una somma del valore della colonna e del valore della regola che a
sua volta fornisce un numero univoco per ogni chiave.
Mi limito ad assicurarmi che i miei valori di riga e colonna siano tali da rendere impossibile che due chiavi
abbiano lo stesso valore.
Ad esempio, se fornisco i valori alle colonne da 1 a 4 e quindi
i valori sulle righe da 5 a 9, questa chiave due restituirà un valore di 7.
La somma del valore di colonna di due più un valore di riga di 5 ma ciò significherebbe anche che Diski restituirebbe anche ad alcuni di 7 Aspetto che
avrebbe un valore di colonna di uno e un valore di riga di sei, quindi utilizzando questi
valori di colonna e riga non funzionerà
Dovrei rendere i valori di riga un numero base di almeno quattro perché ho quattro colonne in modo che
le colonne siano uno due tre quattro e quindi farò i valori di riga a partire
da 5 e poi aumenterò di ogni riga 5 9 13 17 21.
Se avessi una tastiera con otto colonne, dovresti fare in modo che i valori delle righe vengano
saltati almeno di almeno otto.
Ora prima di andare a dare una rapida occhiata al cablaggio interno della tastiera e della striscia di collegamento.
Notare che le colonne si allineano con la striscia di connettori da sinistra a destra.
Uno due tre e quattro, ma per le file il filo della prima riga passa effettivamente alla riga inferiore.
Quindi il secondo terzo inferiore e il quinto in basso Quindi, se si dispone di una tastiera o di una tastiera
diversa, questo cablaggio potrebbe essere diverso.
Così, quando collego la tastiera all'Arduino, potrei incrociare i fili tra il connettore della tastiera e
l'Arduino, così che scruto le righe dall'alto verso il basso.
Ma seguirò lo schema attuale perché quando mi collego all'Arduino è semplicemente più semplice se vado con
i fili mentre escono dal connettore della tastiera.
Quindi tratti il connettore come una breadboard e ponticelli congelati.
E poi al tuo Arduino, così facendo in questo modo ovviamente i numeri la somma della colonna e della riga di
valori non corrisponderebbe ai numeri sui tasti a destra.
Voglio dire che la chiave sette sarebbe un valore di colonna di uno e un valore di riga di nove, dandoci una meridiana che hai 10
il valore assegnato a quella chiave non corrisponde a ciò che è scritto sulla chiave giusta.
Ma non ci interessa
Stiamo semplicemente provando a rilevare se un particolare tasto è stato premuto e designeremo un valore
specifico per ogni pulsante.
Dopotutto è possibile coprire questi pulsanti con carta adesiva e stampare significati personalizzati su ciascun tasto.
Puoi personalizzare la tua tastiera.
Non so se vuoi invece dei geroglifici egiziani.
O sappiamo che è dum dum dum dum.
Non sa né gli importa.
Vuole solo che tu gli dia un numero.
Ora con i nostri valori di riga e colonna questi sarebbero i valori di somma che otterremmo per ogni pulsante.
Un altro aspetto tecnico da considerare prima di procedere.
Dai un'occhiata da vicino alla tua scheda wino specificatamente ai pin 0 e 1.
Si noti che mostrano che questi pin sono usati per trasmettere e ricevere.
Quindi questi non sono tipici pin IO che è possibile impostare e utilizzare.
Ma se si utilizza una comunicazione seriale di qualsiasi tipo, questi pin sono la porta seriale.
È lo stesso sulla foto che sono.
C'erano specifici pin multiuso che erano collegati alla porta seriale.
Quindi, se si utilizza la comunicazione seriale, ovviamente non è possibile utilizzare gli stessi pin
per l'ingresso digitale, l'uscita o l'impulso con segnale modulato o quant'altro.
Quindi, poiché useremo il monitor seriale, non possiamo usare nessuno di
questi pin, quindi collegherò le connessioni della mia tastiera partendo dal Pin 2.
Voi ragazzi state migliorando le capacità di programmazione quindi voglio fare un suggerimento qui perché voglio la
mia tastiera per l'Arduino.
I primi quattro fili sono le colonne che verranno cablate ai pin su 3 4 e 5 su Arduino.
Ora per rendere più semplice la mia programmazione userò i numeri pin Arduino per i miei valori di colonna.
In questo modo quando indirizzo pintu il mio valore di colonna sarà anche al pin 3 darà un valore di colonna di 3.
È strettamente per semplificare la programmazione.
Così facendo, i miei valori per le colonne e le righe apparirebbero così.
Colonne 2 3 4 e 5.
E poi i valori delle righe partono da 6 aumentando di 4 volte per ogni riga.
Quindi i valori della matrice apparirebbero così.
La somma di ogni colonna e valore del rotolo.
Quindi, dopo aver collegato le colonne Tippins da 2 a 5 si collegheranno le righe ai pin da 6 a 10, imposteremo i
pin da sei a 10 come input per sfruttare le resistenze di pullup interne e risparmiarci
un sacco di problemi di cablaggio.
Questo significa che dobbiamo abbassare i nostri pin di input per indicare che il pulsante è stato premuto.
Come lo facciamo.
Inizialmente imposteremo tutti i pin Cullom troppo alti quando scansioneremo o stoccheremo i pin da 2 a 5, le colonne
verranno strozzate ognuna con un valore basso.
Quindi diciamo che sto premendo il pulsante 9 che è collegato al pin 7 di Arduino tramite la connessione rho.
Il pin 7 è tenuto in alto da un resistore di pull up.
Quindi se premo il 90 e lo strobe pin 4 che è Colonna 3 con un valore basso tirerà il pin 7 basso.
Bingo.
Se non avessimo quella resistenza di pullup interna sul chip Arduino dovremmo collegare alimentazione e resistenza
a ciascuna delle colonne.
Guardate tutti i cablaggi che stiamo salvando, abbiamo appena collegato i fili direttamente nella scheda connettore direttamente
alle connessioni ER do wino e voilà siamo pronti per il rock.
Ora programmiamo di conseguenza.
Quindi costruiamo il nostro codice.
Puoi scaricarlo nella sezione download, ma ti incoraggio vivamente a scriverlo da
solo invece di copiare e incollare.
Quindi inizieremo a dichiarare un paio di numeri interi che useremo il valore del rotolo che inizia
alle 6.
Il valore della prima riga e il valore della chiave che inizia a inizia a zero.
Il valore della chiave sarà la somma dei valori di colonna e di riga di una chiave di lettura che impostiamo i pin da
2 a 5 come 0 puts e pins da 6 a 10 come input.
Tirare su.
Ora, che diamine, impostiamo i pin da 2 a 5 in alto, perché dobbiamo iniziare quelli in alto
e poi li strozzeremo singolarmente mentre Loew ha ragione.
Quindi sputeremo la nostra lettura sul monitor dei cereali.
Quindi anche in queste funzioni di installazione inseriremo i cereali a 96 gradi verso il basso nella funzione del ciclo.
Ora creiamo la nostra routine per la scansione delle chiavi e calcolando il nostro valore chiave, le nostre colonne sono già impostate
in alto.
Quindi costruiamo un ciclo for che eseguirà lo strobed pin da 2 a 5 incrementando il conteggio di 1 in ciascun ciclo.
Inviamo un basso nella
prima colonna che risulta essere collegata al pin 2.
Quindi entriamo in un secondo ciclo per il quale attraverso le righe i perni di riga da sei a 10 aumentano di
uno in ciascun ciclo, il valore del rotolo aumenta anche di quattro.
Ogni volta che passa attraverso il ciclo, esegue un controllo per verificare se il rotolo corrente su cui ci stiamo muovendo sta leggendo in
basso, indicando che è stato premuto un tasto su quella strada.
Se rileva un basso, aggiunge il valore del rotolo.
E la colonna del numero è uguale perché il nostro numero di colonna è anche il nostro valore di colonna
e quindi otteniamo l'avviso del valore chiave qui che sto eseguendo un ciclo for all'interno di un ciclo for è subroutine subs.
Quindi, una volta che la nostra subroutine ha raggiunto il conteggio di 10 sulla nostra riga, la scansione di riga per il loop termina.
Quindi ripristiniamo il valore della riga per avviare il valore iniziale di 6 e impostiamo la colonna corrente su un valore alto.
Quindi torna al ciclo for che aumenta alla colonna successiva.
Quindi esegue nuovamente la scansione delle righe con la colonna successiva tenuta bassa.
Una volta completato questo ciclo di scansione di tutte le righe in ogni colonna, stampiamo qualsiasi valore il
nostro valore chiave per il monitor dei cereali ripristina il nostro valore
chiave ripristina il nostro valore di attesa per 100 millisecondi e poi torna indietro e ricomincia da capo.
Potresti aver notato che non ho eseguito alcun rimbalzo di Keady qui e questo perché tutte queste istruzioni
richiedono tempo e questo perché è così lento.
In genere, è necessario più tempo per leggere i tasti rispetto alla durata della restituzione di qualsiasi tasto.
Quindi stavamo facendo funzionare la tastiera al tuo Arduino e flash questo schizzo o scrivi il tuo e controlla
cosa succede quando premi il tasto.
Noterai che se premi più di un tasto otterrai una lettura zero.
Punti bonus se riesci a capire perché se i tuoi numeri sono un po 'fastidiosi controlla prima i fili
tra la tastiera e l'Arduino.
È facile ottenere due
incrociate, quindi verifica il tuo codice e assicurati che tutto sia kosher.
Ho diverse sfide che so che puoi fare se desideri tanto spingerti in avanti.
È possibile aggiungere del codice che interpreta i valori della chiave e invece di stampare il valore
della chiave sul monitor dei cereali si potrebbe invece stampare ciò che è effettivamente scritto sul tasto premuto.
Oppure puoi aggiungere al tuo codice e ai tuoi circuiti un programma di diversi colori di Ltd in modo che quando
premi premi il tasto nove il display LCD blu si illumina e quando premi il tasto uno il display LCD rosso si illumina.
Quindi qualcosa del genere solo per mettere alla prova le tue capacità di pensiero e programmazione.
O collega il tuo servomotore al tuo Dino e fallo ruotare in posizioni specifiche a seconda del pulsante che
premi sulla tastiera.