Va bene.
Sulla tua squadra
Sedici e trentotto hanno pulsanti.
Molto probabilmente hai solo otto pulsanti, ma il chip del controller può gestire fino a 16 pulsanti.
Quindi se hai fornito la tua scheda personale chissà quanti pulsanti ha su di esso il controller
legge quattro righe di pulsanti Multiplex.
Quindi, quando richiedi una lettura dei pulsanti, il controller restituirà i byte.
Fornisce questi dati in un formato simile alle altre istruzioni e dati che la strobo va bassa.
Si invia un'istruzione con un registro a scorrimento.
Quell'istruzione è seguita dai byte di dati e quindi lo stroboscopio diventa alto.
Ora c'è una differenza significativa.
Il controllore sta ora inviando i dati sulla linea d i o che non lo riceve ora sulle nostre schede Hitachi controlliamo la direzione delle
linee dati utilizzando la riga di scrittura read.
Se tenessimo la linea RW bassa stavamo scrivendo alla lavagna.
Se tenevamo alta la linea RW, stavamo leggendo il tabellone della squadra.
Sedici e trenta la direzione dei dati non viene commutata da una linea di controllo ma attraverso le
istruzioni del controllore stesso.
Ora c'è solo un'istruzione che lo fa cambiare direzione sulla linea di uscita dell'ingresso digitale e
questo è l'esadecimine due per due.
L'istruzione di leggere i pulsanti così
nel momento in cui viene ricevuta l'istruzione quarantadue i sedici e trentaquattro della squadra commutano la
linea di uscita dell'ingresso digitale in uscita e utilizza un registro di shift out per inviare i quattro byte dalla matrice della tastiera.
Ora, una volta impostati questi byte, il controller reimposta la linea desiderata su input.
Ovviamente dobbiamo cambiare le modalità sul nostro pin di uscita dell'ingresso digitale Arduino.
Lo stavamo usando come output, quindi abbiamo ottenuto un passaggio dall'output all'ingresso ricevuto i 4 byte utilizzando uno shift in
register e poi abbiamo impostato la linea di uscita dell'ingresso digitale R dinos nuovamente in uscita.
Ma a pagina 2 della scheda tecnica si legge la nota D I dati di output Io sono n pipe open drain.
Uscita quando leggere richiesta chiave collegare resistenza da 1 a 10 K aumentando la resistenza in aumento di 10 K, i dati
letti sono instabili durante il controllo D I O e l'azione del tubo sul fronte di discesa del cambio si
farebbe riferimento al grafico 6 sottostante.
I dati sono stabili durante l'ascesa e se guardi il bel disegno inizi a capire il significato del
formicolio.
Quindi, in sostanza, quello che stanno dicendo è che hai bisogno di un resistore di pull-up qui è sulla linea D Io quando stai
ricevendo i dati su di esso.
La ragione è che usano un effetto di massa sull'output che ha una resistenza così elevata quando è spento che
la linea D I low a d d i o sarà come un filo fluttuante e si ricorda cosa hanno fatto i
cavi fluttuanti sui nostri ingressi digitali ad alta impedenza di ingresso.
Erano così sensibili che avrebbero assorbito il rumore elettrico indotto quindi inserendo un resistore di pull up da 10
k Il filo non è più fluttuante ma tenuto alto per eliminare i segnali errati comodamente sia sul pick che su Arduino
abbiamo la possibilità di utilizzare il segnale interno resistori di pull up che si trovano intorno
al valore di 10 K.
Perfezionare.
Quindi, quando cambiamo la linea dati designata su Arduino dall'output all'entrata, useremo l'istruzione pull
up di input.
Ora ho codice di esempio nella sezione download.
Se ti piace, abbiamo impostato tutto come facevamo prima e se vuoi lasciare il tuo display spento puoi
farlo.
L'ho fatto, ma non importa.
Quindi impostiamo lo strobe troppo basso per inviare un'istruzione che è di quarantadue avvisi, non impostiamo la linea dello stroboscopio
in alto.
Dopo questa istruzione, il controller cambia immediatamente la linea desiderata in uscita.
Quando ottiene quell'istruzione, così cambiamo la linea di dati dell'hardware sul naso in input pull up prendi i quattro byte con 4 shift
nelle
istruzioni e puoi vedere che ho chiamato i miei byte da 1 a 4.
Una volta ricevuti i 4 byte.
Commuta la linea di uscita dell'ingresso digitale R Dino in uscita e imposta la linea stroboscopica in alto.
Siamo tutti di nuovo pronti per inviare più istruzioni ora nel mio schizzo.
Ho impostato la comunicazione seriale e nella funzione loop ho inviato un identificatore
per ogni byte e poi il numero che era effettivamente nel byte ho inserito un ritorno di riga sull'ultimo numero.
Quindi la prossima serie di numeri sarà su una linea separata.
Mi prendo solo una volta che si rompe e poi ricomincia daccapo.
Ora quando flash il mio arduino eseguo il
monitor seriale e ora ricevo un feed di azione dal vivo mentre premo i pulsanti e posso vedere esattamente ciò
che il byte legge che questi
numeri dipenderanno dalla tua scheda perché il controller è costruito per leggere una matrice .
Ora ciò che i pulsanti fanno dipenderà dal modo in cui il produttore ha progettato e cablato la scheda.
Quindi con questo schizzo puoi vedere direttamente quale output stai ottenendo ora sul tuo cheat sheet
jet pack Ho mostrato quali pulsanti influenzano quali bit in quale byte per le schede sono forniti nei miei figli.
Ora, a causa del modo in cui hanno progettato e cablato la scheda, è possibile leggere più pulsanti contemporaneamente.
Quindi se premo s 1 e s allo stesso tempo, Byte 0 leggerà 17 perché entrambi i bit 0 e 4 saranno alti.
Anche a causa del cablaggio di questa scheda, tutti i bit contrassegnati con una X leggeranno sempre 0 perché semplicemente
non sono collegati a nulla.
Quindi quello che fai ora con le tue letture dei pulsanti è limitato solo dalla tua creatività.
Ad esempio, ho un codice di esempio numero 2 che è il primo codice di esempio 4 tranne che ho abbandonato il monitor seriale che ho
abbandonato
la scrittura del monitor seriale e aggiunto alcune linee extra nella funzione loop.
Ho dichiarato una nuova variabile chiamata LCD array in quanto ne avrò bisogno momentaneamente.
Ho quindi configurato la scheda ma ho fatto lampeggiare tutti gli LCD.
Ho spento tutte le OLED prima di accendere il display.
Ho semplicemente messo in modalità sequenziale l'impostazione della modalità di indirizzamento per un ciclo proprio qui per cancellare tutti i 16 indirizzi e
quindi ho attivato il display e l'ho acceso in piena luminosità.
Quindi nella funzione loop ho usato lo stesso codice e le stesse variabili per leggere i pulsanti su quattro byte.
Ho quindi scritto i singoli bit nella variabile dell'array LCD in modo che ogni bit della variabile si allinea con il pulsante
in modo che 0 il bit più a destra nel byte sia premuto il pulsante 8 il bit pulsante 7 di
destra 7
bit 7 sia il più lontano bit di sinistra e viene attivato dal pulsante numero uno di estrema sinistra.
Così ora che ho un singolo
byte con 8 bit che rappresentano tutti gli 8 pulsanti, posso impostare l'indirizzo
sequenziale scrivendo sulla scheda e usare un ciclo for per scrivere la sequenza che scrivo hex 0 0 ai display del
segmento meridionale e poi semplicemente leggi il bit corrente che stiamo leggendo nel nostro byte dell'array LCD e invia quel valore al registro LCD discreto.
Quel valore sarà 0 o 0.
Quindi, quello che succede ora è premere un pulsante per accendere il display LCD corrispondente.
Il codice è essenzialmente lo stesso per scrivere sul segmento sud. I caratteri che scrivi su
un LCD non corrispondono ai loro valori esadecimali.
Ad esempio, se voglio scrivere il carattere 6 su un display a 7 segmenti, non invierò un valore esadecimale
di 6.
In effetti ho mostrato quel personaggio come uno degli esempi sul Cheat Sheet Page 2 per visualizzare un 6.
Vorrei inviare un 7 D esadecimale quindi se dovessi scrivere caratteri da 1 a 8 sul settimo display di
segmenti avrei bisogno di una lunga lista di istruzioni che controllano i singoli bit nel byte
LCD che poi invierebbero un numero esadecimale specifico per visualizzare uno specifico personaggio.
Ora puoi farlo anche con un array.
Non sono entrato negli array nel nostro Dino.
In ogni caso ci vorrà un bel po 'di codice e fondamentalmente alcune tabelle di caratteri per visualizzare correttamente
i singoli numeri sul segmento meridionale mostrano un altro progetto.
Si potrebbe fare è si potrebbe montare questa scheda sul muro al di fuori della porta della camera da letto gli otto pulsanti sono
un modo per inserire il codice top secret per sbloccare la porta della camera da letto.
Potresti avere il tuo Dino che controlla un motore server all'interno che blocca o sblocca un chiavistello sulla tua
porta.
Ad ogni pressione di tasto viene visualizzato il numero che è stato premuto in sequenza sul display del segmento sud digitare il
codice corretto.
Trasforma il servomotore d'argento in posizione di sblocco e sblocca la porta.
Se hai fatto un progetto del genere dovresti eseguire una sorta di quasi rimbalzo dei tasti D.
Si vedono questi pulsanti R D rimbalzati.
Ma se tengo premuto il pulsante ogni volta che passa e legge i tasti, leggerà quel tasto premuto.
Quindi vuoi prima registrare un pulsante, ma poi continuare a tornare indietro e leggere i tasti fino a quando non hai
letto che il pulsante è stato rilasciato.
Quindi puoi procedere a leggere i tasti cercando il pulsante successivo.
Stampa.