Sommario:

Moduli display LED Arduino e TM1638: 11 passaggi
Moduli display LED Arduino e TM1638: 11 passaggi

Video: Moduli display LED Arduino e TM1638: 11 passaggi

Video: Moduli display LED Arduino e TM1638: 11 passaggi
Video: Controlling a TM1638 with an Arduino Uno 2024, Dicembre
Anonim
Moduli display LED Arduino e TM1638
Moduli display LED Arduino e TM1638

Se hai bisogno di un modo semplice e veloce per aggiungere input e output dell'utente a un progetto, questi moduli di visualizzazione sono interessanti e divertenti.

Contengono otto cifre LED rosse a 7 segmenti, otto LED rossi/verdi e anche otto pulsanti per l'input dell'utente. Le unità possono anche essere collegate a margherita, consentendo fino a cinque alla volta, e un cavo corto è incluso con ogni modulo, così come alcuni distanziatori e bulloni corti, come mostrato nell'immagine.

Passo 1:

Immagine
Immagine

I distanziatori sono lunghi quanto basta per sollevare il PCB sopra una superficie, tuttavia per montare le schede in qualsiasi punto utile occorrono quelli più lunghi. Si consiglia inoltre di rimuovere le prese IDC se si desidera montare il modulo vicino alla superficie di un pannello. Questo sarebbe un semplice compito di dissaldatura in quanto sono prese a foro passante.

Passo 2:

Immagine
Immagine

La scheda è controllata da un IC TM1638.

Questo è un LED e un driver di interfaccia IC di "Titan Micro Electronics". Puoi anche acquistare questi circuiti integrati da PMD Way. Puoi anche scaricare la scheda tecnica per maggiori dettagli.

Passaggio 3: per iniziare - Hardware

Per iniziare - Hardware
Per iniziare - Hardware

Hardware: la connessione a una scheda compatibile con Arduino (o altro MCU) è abbastanza semplice. I pinout sono mostrati sul retro del PCB e corrispondono al raccordo sul cavo a nastro. Se guardi la fine del cavo come tale.

Il foro in alto a destra è il pin uno, con quello in alto a sinistra che è il pin due, il pin nove in basso a destra e il pin dieci in basso a sinistra. Pertanto i pinout sono:

  1. Vcc (5V)
  2. GND
  3. CLK
  4. DIO
  5. STB1
  6. STB2
  7. STB3
  8. STB4
  9. STB5
  10. non collegato.

Per l'uso di Arduino, i pin 1~4 sono il minimo necessario per utilizzare un modulo. Ogni modulo aggiuntivo richiederà un altro pin digitale collegato a STB2, STB3, ecc. Ne parleremo più avanti. Si noti che ogni modulo impostato alla massima luminosità con ogni LED acceso consuma 127 mA, quindi sarebbe saggio utilizzare l'alimentazione esterna con più di un modulo e altre connessioni con schede Arduino.

Passaggio 4: per iniziare - Software

Software: scarica e installa la libreria T1638 da qui. Grazie e complimenti a rjbatista su gmail dot com per la libreria. L'inizializzazione dei moduli nello schizzo è semplice. Includi la libreria con:

#includere

quindi utilizzare uno dei seguenti per ogni modulo:

Modulo TM1638 (x, y, z);

x è il pin digitale Arduino collegato al pin 4 del cavo del modulo, y è il pin digitale Arduino collegato al pin 3 del cavo del modulo e z è il pin stroboscopico. Quindi, se avessi un modulo con dati, clock e strobo collegato ai pin 8, 7 e 6, useresti:

modulo TM1638 (8, 7, 6);

Se avessi due moduli, con lo strobo del modulo uno collegato al digitale 6 di Arduino e lo strobo del modulo due collegato al digitale 5, useresti:

Modulo TM1638 (8, 7, 6); Modulo TM1638 (8, 7, 5);

e così via per più moduli. Ora per controllare il display…

Passaggio 5: i LED bicolore

I LED bicolore
I LED bicolore

Il controllo dei LED rosso/verde è facile. Per riferimento sono numerati da zero a sette da sinistra a destra. Per accendere o spegnere un singolo LED, utilizzare quanto segue:

module.setLED(TM1638_COLOR_RED, x); // imposta il numero LED x su redmodule.setLED(TM1638_COLOR_GREEN, x); // imposta il numero LED x su verde module.setLED(TM1638_COLOR_RED+TM1638_COLOR_GREEN, 0); // imposta il numero LED x su rosso e verde

L'uso del metodo sopra può essere semplice e in qualche modo inefficiente. Un modo migliore consiste nell'indirizzare tutti i LED in un'unica istruzione. Per fare ciò inviamo due byte di dati in esadecimale al display. L'MSB (byte più significativo) è costituito da otto bit, ciascuno dei quali rappresenta un LED verde acceso (1) o spento (0). L'LSB (byte meno significativo) rappresenta i LED rossi.

Un modo semplice per determinare il valore esadecimale per controllare i LED è semplice, l'immagine ha una fila di LED: i primi otto sono verdi e i secondi otto sono rossi. Impostare ogni cifra su 1 per on e 0 per off. Converti i due numeri binari in esadecimali e usa questa funzione:

module.setLEDs(0xgreenred);

Dove verde è il numero esadecimale per i LED verdi e rosso è il numero esadecimale per i LED rossi. Ad esempio, per accendere i primi tre LED come rossi e gli ultimi tre come verdi, la rappresentazione binaria sarà:

00000111 11100000 che in esadecimale è E007.

Quindi useremmo:

module.setLEDs(0xE007);

che produce l'immagine come mostrato sopra.

Passaggio 6: il display a 7 segmenti

Per cancellare il display numerico (ma non i LED sottostanti), utilizzare semplicemente:

module.clearDisplay();

o per accendere ogni segmento E tutti i LED, utilizzare quanto segue

module.setupDisplay(true, 7); // dove 7 è l'intensità (da 0~7)

Per visualizzare i numeri decimali utilizzare la funzione:

module.setDisplayToDecNumber(a, b, false);

dove a è l'intero, b è la posizione del punto decimale (0 per nessuno, 1 per la cifra 8, 2, per la cifra 7, 4 per la cifra 6, 8 per la cifra 4, ecc.) e l'ultimo parametro (vero/ false) attiva o disattiva gli zeri iniziali. Lo schizzo seguente mostra l'uso di questa funzione:

#include // definisce un modulo su data pin 8, clock pin 9 e strobe pin 7 modulo TM1638 (8, 9, 7); unsigned long a=1; void setup(){} void loop() { for (a=10000; a<11000; a++) { module.setDisplayToDecNumber(a, 4, false); ritardo(1); } for (a=10000; a<11000; a++) { module.setDisplayToDecNumber(a, 0, true); ritardo(1); } }

…con i risultati mostrati nel video.

Passaggio 7:

Image
Image

Una delle caratteristiche più interessanti è la possibilità di scorrere il testo su uno o più display. Per fare ciò non ha davvero bisogno di una spiegazione come lo schizzo dimostrativo incluso:

tm_1638_scrolling_modules_example.pde

incluso con la libreria TM1638 è facile da seguire. Basta inserire il testo nella stringa const char, assicurarsi che i moduli siano cablati secondo la definizione del modulo all'inizio dello schizzo e il gioco è fatto. Per vedere i caratteri disponibili, visita la pagina delle funzioni. Nota che il display è solo a sette segmenti, quindi alcuni caratteri potrebbero non sembrare perfetti, ma nel contesto ti daranno una buona idea: guarda il video in questo passaggio.

Passaggio 8:

Infine, puoi anche indirizzare individualmente ogni segmento di ogni cifra. Considera il contenuto di questo array:

valori in byte = { 1, 2, 4, 8, 16, 32, 64, 128 };

ogni elemento rappresenta le cifre 1~8. Il valore di ogni elemento determina quale segmento della cifra si accende. Per i segmenti a~f, dp i valori sono 1, 2, 4, 6, 16, 32, 64, 128. Quindi i risultati dell'utilizzo dell'array sopra nella seguente funzione:

module.setDisplay(values);

sarà per l'immagine.

Passaggio 9:

Immagine
Immagine

Naturalmente puoi combinare i valori per ogni cifra per creare i tuoi caratteri, simboli, ecc. Ad esempio, utilizzando i seguenti valori:

valori in byte = { 99, 99, 99, 99, 99, 99, 99, 99 };

abbiamo creato secondo l'immagine in questo passaggio.

Passaggio 10: i pulsanti

I valori dei pulsanti vengono restituiti come valore in byte dalla funzione:

module.getButtons();

Poiché ci sono otto pulsanti, ognuno rappresenta un bit di un numero binario che viene restituito come byte. Il pulsante a sinistra restituisce uno decimale e quello a destra restituisce 128. Può anche restituire pressioni simultanee, quindi premendo i pulsanti uno e otto restituisce 129. Considera lo schema seguente, che restituisce i valori delle pressioni del pulsante in forma decimale, quindi visualizza il valore:

#include // definisce un modulo su data pin 8, clock pin 9 e strobe pin 7 modulo TM1638 (8, 9, 7); pulsanti di byte; void setup(){} void loop() { button=module.getButtons(); module.setDisplayToDecNumber(buttons, 0, false); }

e i risultati nel video.

Questi tabelloni sono utili e, si spera, trovino una casa nei tuoi progetti. Questo post ti è stato presentato da pmdway.com: offre tutto per i produttori e gli appassionati di elettronica, con consegna gratuita in tutto il mondo.

Consigliato: