Annuncio pubblicitario

programmazione arduinoOggi cercherò di insegnarti un po 'di Shift Registers. Queste sono una parte abbastanza importante della programmazione di Arduino, fondamentalmente perché espandono il numero di uscite che è possibile utilizzare, in cambio di soli 3 pin di controllo. È inoltre possibile registrare insieme registri a scorrimento a margherita per ottenere ancora più output.

Questo è un salto significativo in difficoltà rispetto ai tutorial precedenti, e suggerisco vivamente di averne uno ottima comprensione del materiale precedente (collegamenti alla fine di questo articolo), nonché comprensione il basi del binario Che cos'è il binario? [Spiegazione della tecnologia]Dato che il binario è così assolutamente fondamentale per l'esistenza dei computer, sembra strano che non abbiamo mai affrontato l'argomento prima, quindi oggi ho pensato di dare una breve panoramica di ciò che il binario ... Leggi di più che ho scritto l'ultima volta.

Che cos'è un registro a turni?

Un registro a scorrimento di output, tecnicamente parlando, riceve i dati in serie e li emette in parallelo. In termini pratici, ciò significa che possiamo inviare rapidamente un gruppo di comandi di output al chip, dirlo per l'attivazione e le uscite verranno inviate ai relativi pin. Invece di scorrere attraverso ciascun pin, inviamo semplicemente l'output richiesto a tutti i pin contemporaneamente, come un singolo byte o più di informazioni.

instagram viewer

Se ti aiuta a capire, puoi pensare a un registro a scorrimento come un "array" di uscite digitali, ma possiamo saltare i soliti comandi digitalWrite e semplicemente inviare una serie di bit per attivarli o off.

Come funziona?

Il registro a scorrimento che useremo - il 74HC595N incluso nel kit di avvio Oomlout - necessita solo di 3 pin di controllo. Il primo è un orologio: non devi preoccuparti troppo di questo come controllano le librerie seriali Arduino esso - ma un orologio è fondamentalmente solo un impulso elettrico on / off che imposta il ritmo del segnale dati.

Il perno di chiusura viene utilizzato per indicare al registro a scorrimento quando deve attivare e disattivare le sue uscite in base ai bit che abbiamo appena inviato, ovvero bloccandoli in posizione.

Infine, il pin dei dati è dove abbiamo inviato i dati seriali effettivi con i bit per determinare lo stato on / off degli output del registro a scorrimento.

L'intero processo può essere descritto in 4 passaggi:

  1. Impostare il pin dati su alto o basso per il primo pin di uscita sul registro a scorrimento.
  2. Pulisci l'orologio per "spostare" i dati nel registro.
  3. Continuare a impostare i dati e pulsare l'orologio fino a quando non si è impostato lo stato richiesto per tutti i pin di uscita.
  4. Pulire il perno di chiusura per attivare la sequenza di uscita.

Implementazione

Per questo progetto sono necessari i seguenti componenti:

  • Chip del registro a scorrimento 7HC595N
  • 8 LED e resistori appropriati, o qualunque cosa tu voglia trasmettere
  • La solita breadboard, connettori e un Arduino di base

Se hai lo starter kit Oomlout, puoi scaricare il layout della breadboard da qui.

Ecco il video dell'assemblaggio:

Il layout della scheda:

programmazione arduino

E la mia versione assemblata:

Programmazione Arduino - Giocare con i registri a scorrimento (a.k.a Ancora più LED) tutorial sul registro a scorrimento assemblato

Ho modificato il codice originale fornito da Ooolmout, ma se desideri provarlo invece, può essere scaricato per intero qui. La spiegazione del codice è inclusa, quindi copia e incolla il tutto dal basso o pastebin per leggere una spiegazione del codice.

/ * * | Shift Register Tutorial, basato su | * | Arduino Experimentation Kit CIRC-05 | * |.: 8 altri LED:. (74HC595 Registro a scorrimento) | * * | Modificato da James @ MakeUseOf.com | * * / // Definizioni dei pin. // 7HC595N ha tre pin. int data = 2; // dove inviamo i bit per controllare le uscite int clock = 3; // mantiene sincronizzati i dati. int latch = 4; // indica al registro a scorrimento quando attivare la sequenza di output void setup () {// imposta i tre pin di controllo su output pinMode (data, OUTPUT); pinMode (clock, OUTPUT); pinMode (latch, OUTPUT); Serial.begin (9600); // così possiamo inviare messaggi di debug al monitor seriale. } void loop () {outputBytes (); // il nostro output di base che scrive 8 bit per mostrare come funziona un registro a scorrimento. //outputIntegers(); // invia un valore intero come dati anziché byte, contando efficacemente in binario. } void outputIntegers () {for (int i = 0; i <256; i ++) {digitalWrite (latch, LOW); Serial.println (i); // Debug, invio output allo shift monitor seriale (dati, clock, MSBFIRST, i); digitalWrite (latch, HIGH); ritardo (100); }} void outputBytes () {/ * Byte, o 8 bit, sono rappresentati da una B seguita da 8 0 o 1s. In questo caso, considera questo come un array che useremo per controllare gli 8 LED. Qui ho iniziato il valore byte come 00000001 * / byte dataValues ​​= B00000001; // cambia questo per regolare il pattern iniziale / * Nel ciclo for, iniziamo tirando il latch in basso, usando la funzione shiftOut Arduino per parlare con il registro a scorrimento, inviandogli il nostro byte di dati Valori che rappresentano lo stato dei LED, quindi tirare il fermo in alto per bloccarli posto. Infine, spostiamo i bit di un posto a sinistra, il che significa che la prossima iterazione accenderà il prossimo LED della serie. Per vedere l'esatto valore binario inviato, controllare il monitor seriale. * / for (int i = 0; i <8; i ++) {digitalWrite (latch, LOW); Serial.println (dataValues, BIN); // Debug, invio output allo shift monitor seriale (dati, clock, MSBFIRST, dataValues); digitalWrite (latch, HIGH); dataValues ​​= dataValues ​​<< 1; // Sposta i bit di un posto a sinistra - cambia in >> per regolare il ritardo di direzione (100); } }

Bit-Shifting (funzione OutputBytes)

Nel primo esempio di loop - outputBytes () - il codice utilizza una sequenza di 8 bit (un byte) che poi sposta a sinistra di ogni iterazione del ciclo for. È importante notare che se si sposta oltre il possibile, il bit viene semplicemente perso.

Lo spostamento dei bit viene eseguito usando << o >> seguito dal numero di bit che si desidera spostare.

Guarda il seguente esempio e assicurati di capire cosa sta succedendo:

byte val = B00011010. val = val << 3 // B11010000. val = val << 2 // B01000000, abbiamo perso quegli altri bit! val = val >> 5 // B00000010. 

Invio di numeri interi invece (Funzione OutputIntegers)

Se si invia un numero intero al registro a scorrimento anziché un byte, il numero verrà semplicemente convertito in una sequenza di byte binari. In questa funzione (decommenta nel ciclo e carica per vedere l'effetto), abbiamo un ciclo for che conta da 0-255 (il numero intero più alto che possiamo rappresentare con un byte) e lo invia invece. Fondamentalmente conta in binario, quindi la sequenza può sembrare un po 'casuale a meno che i tuoi LED non siano disposti in una lunga fila.

Ad esempio, se leggi l'articolo spiegato binario, saprai che il numero 44 sarà rappresentato come 00101100, quindi i LED 3,5,6 si accenderanno in quel punto della sequenza.

Programmazione Arduino - Giocare con i registri a scorrimento (a.k.a Ancora più LED) binario 44

Daisy concatenamento più di un registro a turni

La cosa notevole degli Shift Registers è che se ricevono più di 8 bit di informazioni (o per quanto grande sia il loro registro), sposteranno di nuovo gli altri bit aggiuntivi. Ciò significa che è possibile collegarne una serie insieme, inserire una lunga catena di bit e distribuirla separatamente a ciascun registro, il tutto senza codifica aggiuntiva da parte dell'utente.

Anche se non forniremo dettagli sul processo o sugli schemi qui, se hai più di un registro a turni, puoi provare il progetto dal sito ufficiale di Arduino qui.

Altri articoli della serie:

  • Che cos'è Arduino e cosa puoi farci Che cos'è Arduino e cosa puoi farci?L'Arduino è un piccolo dispositivo elettronico straordinario, ma se non ne hai mai usato uno prima, esattamente cosa sono e cosa puoi fare con uno? Leggi di più ?
  • Cos'è uno Starter Kit Arduino e cosa contiene? Cosa è incluso in uno Starter Kit Arduino? [MakeUseOf Explains]In precedenza ho introdotto l'hardware open source Arduino qui su MakeUseOf, ma avrai bisogno di qualcosa di più del semplice Arduino per costruirne qualcosa e iniziare davvero. Gli "starter kit" di Arduino sono ... Leggi di più
  • Componenti più interessanti da acquistare con lo Starter Kit 8 componenti più interessanti per i tuoi progetti ArduinoQuindi, stai pensando di ottenere uno starter kit Arduino, ma ti stai chiedendo se alcuni LED e resistori di base saranno sufficienti per tenerti occupato per il fine settimana? Probabilmente no. Eccone altri 8 ... Leggi di più
  • Per iniziare con il tuo Starter Kit Arduino? Installazione dei driver e impostazione della scheda e della porta Guida introduttiva al kit iniziale Arduino - Installazione driver e impostazione della scheda e della portaQuindi, ti sei comprato un kit di avvio Arduino e forse altri componenti casuali interessanti - e adesso? Come inizi davvero a programmare questa cosa di Arduino? Come lo configuri ... Leggi di più
  • Fritzing, uno strumento gratuito per disegnare schemi elettrici Fritzing: lo strumento ideale per disegnare progetti elettronici [Cross Platform]Nonostante sembri un alcopop, Fritzing è in realtà un incredibile pezzo di software gratuito che puoi usare per creare schemi circuitali e di componenti da utilizzare con schede elettroniche a prototipazione rapida come il fantastico open source Arduino ... Leggi di più
  • Uno sguardo più da vicino alla struttura di un'app Arduino e al programma Blink di esempio Primi passi con Arduino: uno sguardo più da vicino al circuito e alla struttura di un programmaL'ultima volta che ti ho lasciato dopo aver configurato Arduino per funzionare con Mac o Windows e aver caricato una semplice app di prova che ha fatto lampeggiare il LED di bordo. Oggi spiegherò il codice ... Leggi di più
  • Progetto luci dell'albero di Natale di Arduino Un progetto Arduino: come realizzare ornamenti di luci natalizie sgargiantiQuesta è la parte successiva della nostra serie di apprendimento su Arduino e questa volta impareremo e utilizzeremo gli array per realizzare un piccolo ornamento per l'albero di Natale con varie sequenze lampeggianti. Questo sarebbe un ... Leggi di più (AKA impara sugli array)
  • Che cos'è il binario? Che cos'è il binario? [Spiegazione della tecnologia]Dato che il binario è così assolutamente fondamentale per l'esistenza dei computer, sembra strano che non abbiamo mai affrontato l'argomento prima, quindi oggi ho pensato di dare una breve panoramica di ciò che il binario ... Leggi di più

Questo è quanto avremo oggi con i registri a turni, poiché penso che abbiamo coperto molto. Come sempre, ti incoraggio a giocare con e ad adattare il codice, e non esitare a porre qualsiasi domanda tu possa avere nei commenti, o persino a condividere un link al tuo fantastico progetto basato sul registro a turni.

James ha una laurea in Intelligenza Artificiale ed è certificato CompTIA A + e Network +. È lo sviluppatore principale di MakeUseOf e trascorre il suo tempo libero giocando a paintball e giochi da tavolo VR. Costruisce PC da quando era un bambino.