Sommario:

Matrice LED che utilizza i registri a scorrimento: 7 passaggi (con immagini)
Matrice LED che utilizza i registri a scorrimento: 7 passaggi (con immagini)

Video: Matrice LED che utilizza i registri a scorrimento: 7 passaggi (con immagini)

Video: Matrice LED che utilizza i registri a scorrimento: 7 passaggi (con immagini)
Video: Elettronica digitale facile facile 11: I registri a scorrimento 2024, Luglio
Anonim
Matrice LED che utilizza i registri a scorrimento
Matrice LED che utilizza i registri a scorrimento
Matrice LED che utilizza i registri a scorrimento
Matrice LED che utilizza i registri a scorrimento
Matrice LED che utilizza i registri a scorrimento
Matrice LED che utilizza i registri a scorrimento

Questo istruibile vuole essere una spiegazione più completa di altre disponibili online. In particolare, ciò fornirà più spiegazioni sull'hardware di quelle disponibili nel LED Marquee istruibile da led555.

Obiettivi

Questo istruibile presenta i concetti coinvolti con i registri a scorrimento e i driver high side. Illustrando questi concetti con una matrice LED 8x8 spero di fornirti gli strumenti necessari per adattarti ed espanderti alle dimensioni e al layout richiesti dal tuo progetto.

Esperienza e Competenze

Direi che questo progetto è di media difficoltà:

  • Se hai già esperienza nella programmazione di microcontrollori e nel lavoro con i LED, questo progetto dovrebbe essere abbastanza facile da completare e da ridimensionare a matrici di luci più grandi.
  • Se hai appena iniziato con i microcontrollori e hai lampeggiato un LED o due, dovresti essere in grado di completare questo progetto con l'aiuto del nostro amico google.
  • Se hai poca o nessuna esperienza con i microcontrollori o la programmazione, questo è probabilmente al di là di ciò in cui dovresti entrare. Prova alcuni altri progetti per principianti e torna quando avrai più esperienza nella scrittura di programmi per microcontrollori.

Esclusione di responsabilità e credito

Innanzitutto, non sono un ingegnere elettrico. Se vedi qualcosa che non va o non è una best practice, faccelo sapere e farò la correzione. Fallo a tuo rischio e pericolo! Dovresti sapere cosa stai facendo o potresti causare danni al tuo computer, al tuo microcontrollore e persino a te stesso. Ho imparato molto da Internet, in particolare dai forum su: https://www.avrfreaks.netSto usando un set di caratteri fornito con la libreria C universale ks0108. Dai un'occhiata qui:

Passaggio 1: parti

Elenco delle parti

Parti generali

Per creare una griglia di LED 8x8 e controllarli avrai bisogno di:

  • 64 LED a scelta
  • 8 Resistenze per i LED
  • 1 registro a scorrimento per le colonne
  • 1 array di driver per le righe
  • 8 resistori per la commutazione dell'array driver
  • 1 microcontrollore
  • 1 sorgente di clock per microcontrollore
  • 1 scheda di prototipazione
  • 1 alimentatore
  • Cavo di collegamento

Parti specifiche utilizzate qui

Per questo istruibile ho usato quanto segue:

  • 64 LED verdi (parte Mouser #604-WP7113GD)
  • 8 resistori da 220ohm 1/4 watt per i LED (parte Mouser #660-CFS1/4CT52R221J)
  • 1 driver LED HEF4794 con registro a scorrimento (parte Mouser #771-HEF4794BPN)
  • 1 mic2981 Array di driver sorgente ad alta tensione ad alta corrente (parte Digikey n. 576-1158-ND)
  • 8 resistori da 3,3 kohm 1/4 watt per la commutazione dell'array di driver (Radio Shack parte #271-1328)
  • 1 microcontrollore Atmel ATmega8 (parte Mouser #556-ATMEGA8-16PU)
  • 1 cristallo da 12 MHz per la sorgente di clock del microcontrollore (parte Mouser n. 815-AB-12-B2)
  • 1 Scheda di prototipazione da 2200 fori (Radio Shack parte #276-147)
  • Alimentatore ATX convertito: vedere questo Instructable
  • Cavo di collegamento a nucleo solido da 22 AWG (Radio Shack parte #278-1221)
  • Breadboard senza saldatura (Radio Shack parte #276-169 (non più disponibile, prova: 276-002)
  • Drago AVR (parte Mouser #556-ATAVRDRAGON)
  • Dragon Rider 500 di Ecros Technologies: guarda questo Instructable

Note relative alle parti

Driver di riga e colonna: probabilmente la parte più difficile di questo progetto è la scelta dei driver di riga e colonna. Prima di tutto, non credo che un registro a scorrimento 74HC595 standard sia una buona idea qui perché non possono gestire il tipo di corrente che vogliamo inviare attraverso i LED. Per questo ho scelto il driver HEF4794 in quanto può assorbire facilmente la corrente presente quando tutti gli 8 led sono accesi in una riga sono accesi. Lo shift register è presente sul lato basso (il pin di massa dei led). Avremo bisogno di un driver di riga in grado di fornire corrente sufficiente per mettere insieme più colonne. Il mic2981 può fornire fino a 500 mA. L'unica altra parte che ho trovato che svolge questo compito è l'UDN2981 (digikey parte #620-1120-ND) che è la stessa parte di un produttore diverso. Per favore mandami un messaggio se conosci altri driver high-side che funzionerebbero bene in questa applicazione. Matrice LED: questa matrice è 8x8 perché i driver di riga e colonna hanno ciascuno 8 pin. Un array di LED più grande può essere costruito mettendo insieme più matrici e sarà discusso nella fase "concetti modulari". Se desideri un array di grandi dimensioni, ordina tutte le parti necessarie in una sola volta. Sono disponibili matrici LED 8x8, 5x7 e 5x8 in un comodo pacchetto. Questi dovrebbero essere facili da sostituire per una matrice fai-da-te. Ebay è una buona fonte per questi. Mouser ha alcune unità 5x7 disponibili come la parte #604-TA12-11GWA. Ho usato LED verdi economici perché sto solo giocando e mi diverto. Spendere di più per LED ad alta luminosità e alta efficienza può permetterti di produrre un display dall'aspetto molto più spettacolare … questo è abbastanza buono per me però! Hardware di controllo: la matrice è controllata da un microcontrollore Atmel AVR. Avrai bisogno di un programmatore per questo. Poiché sto prototipando, sto usando Dragon Rider 500 per il quale ho scritto sia le istruzioni di montaggio che quelle di utilizzo. Questo è uno strumento facile per la prototipazione e lo consiglio vivamente.

Fase 2: La matrice

La matrice
La matrice
La matrice
La matrice
La matrice
La matrice

Costruirò la mia matrice LED per questo progetto utilizzando LED da 5 mm e una scheda di prototipazione di Radio Shack. Va notato che è possibile acquistare moduli led a matrice di punti 8x8 da diverse fonti, incluso ebay. Dovrebbero funzionare bene con questo istruibile.

Considerazioni sulla costruzione

Allineamento I LED devono essere allineati in modo che siano rivolti nella stessa direzione con la stessa angolazione. Ho scoperto che l'opzione più semplice per me era mettere il corpo del LED a filo della scheda e tenerlo lì con un piccolo pezzo di plexiglass e un morsetto. Ho posizionato alcuni LED a un paio di centimetri dalla riga su cui stavo lavorando per assicurarmi che il plexiglass fosse parallelo alla scheda di prototipazione. Righe e colonne Abbiamo bisogno di una connessione comune per ogni riga e per ogni colonna. A causa della nostra scelta di driver di riga e colonna, dobbiamo avere l'anodo (cavo positivo del LED) collegato per riga e il catodo (cavo negativo del LED) collegato per colonna. Fili di controllo Per questo prototipo sto usando un cavo di collegamento a nucleo solido (conduttore singolo). Questo sarà molto facile da interfacciare con una breadboard senza saldatura. Sentiti libero di usare un tipo di connettore diverso per adattarsi al tuo progetto.

Costruire la matrice

1. Posizionare la prima colonna di LED nella scheda di prototipazione.2. Ricontrolla che la tua polarità per ciascun LED sia corretta, questo sarà molto difficile da risolvere se te ne rendi conto in seguito.3. Saldare entrambi i cavi del LED alla scheda. Verificare che siano allineati correttamente (non ad angoli strani) e staccare i cavi del catodo. Assicurati di non tagliare il cavo dell'anodo, ne avremo bisogno in seguito, quindi lascialo rivolto verso l'alto.4. Rimuovere l'isolamento da un pezzo di filo a nucleo solido. Saldare questo pezzo di filo a ciascun catodo a livello della scheda.

  • Ho attaccato questo ad ogni estremità, poi sono tornato indietro e ho aggiunto un po' di saldatura ad ogni giunzione.
  • Questo cavo dovrebbe passare oltre l'ultimo LED per creare un'interfaccia semplice quando aggiungiamo i cavi di controllo.

5. Ripetere le parti 1-4 finché tutti i LED non sono in posizione e tutti i bus di colonna sono saldati.6. Per creare un bus di fila, piegare diversi cavi dell'anodo con un angolo di 90 gradi in modo che tocchino gli altri cavi dell'anodo nella stessa fila.

  • Ci sono immagini dettagliate di questo sotto.
  • Fare attenzione a non farli entrare in contatto con i bus di colonna, creando un corto circuito.

7. Saldare i cavi a ciascuna giunzione e tagliare i cavi dell'anodo in eccesso.

Lascia l'ultimo anodo attaccato al LED finale. Questo sarà utilizzato per collegare i cavi di controllo del driver di riga

8. Ripetere le parti 6 e 7 finché tutte le file di bus non sono state saldate.9. Collegare i cavi di controllo.

  • Ho usato un filo rosso solido per le righe e nero per le colonne.
  • Collega un filo per ogni colonna e uno per ogni riga. Questo può essere fatto facilmente alla fine di ogni autobus.

Importante

Questa matrice di LED non ha resistori di limitazione della corrente. Se lo provi senza resistori, probabilmente brucerai i tuoi LED e tutto questo lavoro sarà inutile.

Passaggio 3: l'hardware di controllo

L'hardware di controllo
L'hardware di controllo
L'hardware di controllo
L'hardware di controllo

Dobbiamo controllare le colonne e le righe della nostra matrice LED. La matrice è stata costruita in modo che gli Anodi (lato tensione del LED) costituiscano le righe e i Catodi (lato massa del LED) costituiscano le colonne. Ciò significa che il nostro driver di riga deve fornire corrente e il nostro driver di colonna deve assorbirlo. Per risparmiare sui pin sto usando un registro a scorrimento per controllare le colonne. In questo modo posso controllare un numero quasi illimitato di colonne con solo quattro pin del microcontrollore. È possibile utilizzarne solo tre se il pin Enable Output è collegato direttamente alla tensione. Ho selezionato il driver LED HEF4794 con registro a scorrimento. Questa è un'opzione migliore rispetto a un 74HC595 standard in quanto può facilmente assorbire la corrente presente quando tutti gli 8 LED sono accesi contemporaneamente. Sul lato alto (sorgente di corrente per le righe) sto usando un mic2981. Lo schema mostra un UDN2981, credo che questi due siano intercambiabili. Questo driver può fornire fino a 500 mA di corrente. Poiché stiamo guidando solo 1 riga alla volta, questo offre molte opportunità di espansione, fino a 33 colonne per questo chip (più su questo nel passaggio "concetti modulari").

Costruire l'hardware di controllo

Per questo istruibile ho appena eseguito il breadboard di questo circuito. Per una soluzione più permanente, vorrai incidere il tuo circuito stampato o utilizzare la scheda di prototipazione.1. Autista di fila

  • Posiziona il mic2981 (o UDN2981) nella breadboard
  • Collegare il pin 9 alla tensione (questo è fonte di confusione nello schema)
  • Collegare il pin 10 a terra (questo è fonte di confusione nello schema)
  • inserire resistori 3k3 collegandoli ai pin 1-8
  • Collegare dalla porta D dell'ATmega8 (PD0-PD8) alle 8 resistenze
  • Collegare i fili di controllo a 8 righe della matrice LED ai pin 11-18 (notare che ho collegato la riga più bassa di LED al pin 18 e la riga più alta al pin 11).

2. Driver di colonna

  • Posiziona l'hef4794 nella breadboard
  • Collegare il pin 16 alla tensione
  • Collegare il pin 8 a terra
  • Collegare i resistori da 220 ohm ai pin 4-7 e 11-14.
  • Collega gli 8 cavi di controllo della colonna dalla matrice LED agli 8 resistori appena collegati.
  • Collegare il Pin1 (Latch) al PC0 dell'ATmega8
  • Collegare il Pin2 (Dati) al PC1 dell'ATmega8
  • Collegare il Pin3 (Orologio) al PC2 dell'ATmega8
  • Collegare il Pin15 (Enable Output) al PC3 dell'ATmega8

3. Orologio in cristallo

Collegare un cristallo da 12 MHz e caricare i condensatori come mostrato nello schema

4. ISP

Collegare l'intestazione di programmazione come mostrato nello schema

5. Condensatore di filtraggio e resistenza di pull-up

  • È meglio filtrare la tensione fornita all'ATmega8. Utilizzare un condensatore da 0,1 uf tra i pin 7 e 8 dell'ATmega8
  • Il pin di ripristino non deve essere lasciato flottante in quanto può causare ripristini casuali. Usa un resistore per collegarlo alla tensione, qualsiasi cosa su 1k dovrebbe essere buona. Nello schema ho usato una resistenza da 10k.

6. Assicurati di utilizzare un'alimentazione regolata a +5v. Sta a te progettare il regolatore.

Passaggio 4: software

Il trucco

Sì, come tutto, c'è un trucco. Il trucco è che non ci sono mai più di 8 LED accesi contemporaneamente. Perché questo funzioni bene, è necessaria un po' di programmazione astuta. Il concetto che ho scelto è quello di utilizzare un timer di interruzione. Ecco come funziona l'interruzione del display in inglese semplice:

  • Il timer conta fino a un certo punto, quando raggiunto viene eseguita la routine del servizio di interrupt.
  • Questa routine decide quale riga è la successiva da visualizzare.
  • Le informazioni per la riga successiva vengono ricercate da un buffer e spostate nel driver di colonna (questa informazione non è "bloccata", quindi non è ancora visualizzata).
  • Il driver di riga è spento, nessun LED è attualmente acceso.
  • Il driver di colonna è "bloccato" nelle informazioni che abbiamo spostato in due passaggi fa le informazioni correnti da visualizzare.
  • Il driver di riga fornisce quindi corrente alla nuova riga che stiamo visualizzando.
  • La routine del servizio di interruzione termina e il programma torna al flusso normale fino all'interruzione successiva.

Questo accade molto molto rapidamente. L'interrupt viene lanciato ogni 1 mSec. Ciò significa che stiamo aggiornando l'intero display circa una volta ogni 8 mSec. Ciò significa una velocità di visualizzazione di circa 125Hz. C'è qualche preoccupazione per quanto riguarda la luminosità perché essenzialmente stiamo facendo funzionare i LED con un ciclo di lavoro di 1/8 (sono spenti 7/8 del tempo). Nel mio caso ottengo un display adeguatamente luminoso senza lampeggi visibili. Il display a LED completo è mappato in un array. Tra le interruzioni l'array può essere modificato (attenzione all'atomicità) e apparirà sul display durante l'interruzione successiva. Le specifiche della scrittura del codice per il microcontrollore AVR e di come scrivere il codice per parlare con i registri a scorrimento sono oltre lo scopo di questo istruibile. Ho incluso il codice sorgente (scritto in C e compilato con AVR-GCC) così come il file esadecimale per programmare direttamente. Ho commentato tutto il codice, quindi dovresti essere in grado di usarlo per chiarire qualsiasi domanda su come ottenere i dati nel registro a scorrimento e su come funziona l'aggiornamento delle righe. Tieni presente che sto utilizzando un file di caratteri fornito con il ks0108 libreria C universale. Quella libreria può essere trovata qui:

Registri a scorrimento: come fare?

Ho deciso di aggiungere qualcosa su come programmare con i registri a scorrimento. Spero che questo chiarisca le cose per coloro che non hanno mai lavorato con loro prima. Cosa fanno I registri di spostamento prendono un segnale da un filo e inviano tali informazioni a molti pin diversi. In questo caso, c'è un cavo dati che riceve i dati e 8 pin che sono controllati a seconda di quali dati sono stati ricevuti. Per migliorare le cose, c'è un pin di uscita per ogni registro a scorrimento che può essere collegato al pin di ingresso di un altro registro a scorrimento. Questo si chiama cascata e rende il potenziale di espansione una prospettiva quasi illimitata. I registri Control PinsShift hanno 4 pin di controllo:

  • Latch - Questo pin indica al registro a scorrimento quando è il momento di passare ai dati appena inseriti
  • Dati - Gli 1 e gli 0 indicano al registro a scorrimento quali pin attivare vengono ricevuti su questo pin.
  • Clock - Questo è un impulso inviato dal microcontrollore che dice al registro a scorrimento di prendere una lettura dei dati e passare al passaggio successivo nel processo di comunicazione
  • Abilita uscita - Questo è un interruttore di accensione/spegnimento, Alto=Acceso, Basso=Spento

Fargli fare la tua offerta:Ecco un corso accelerato nel funzionamento dei pin di controllo di cui sopra:Fase 1: imposta Latch, Data e Clock bassi

Impostando il Latch basso si dice al registro a scorrimento che stiamo per scriverci sopra

Passaggio 2: impostare il pin dei dati sul valore logico che si desidera inviare allo Shift Register Passaggio 3: impostare il pin dell'orologio in alto, dicendo allo Shift Register di leggere il valore corrente del pin dei dati

Tutti gli altri valori attualmente nello Shift Register si sposteranno di 1 posizione, facendo spazio al valore logico corrente del pin Data

Passaggio 4: impostare il pin dell'orologio su Basso e ripetere i passaggi 2 e 3 finché tutti i dati non sono stati inviati al registro a scorrimento.

Il pin dell'orologio deve essere impostato su un valore basso prima di passare al valore di dati successivo. Commutare questo pin tra alto e basso è ciò che crea l'"impulso di clock" che il registro a scorrimento deve sapere quando passare alla fase successiva del processo

Passaggio 5: impostare Latch alto

Questo dice al registro a scorrimento di prendere tutti i dati che sono stati spostati e di usarli per attivare i pin di uscita. Ciò significa che non vedrai i dati mentre si spostano; non si verificherà alcun cambiamento nei pin di uscita finché il Latch non sarà impostato su alto

Passaggio 6: impostare Abilita uscita alto

  • Non ci sarà alcun pin output finché Enable Output non sarà impostato su alto, indipendentemente da ciò che sta accadendo con gli altri tre pin di controllo.
  • Questo pin può sempre essere lasciato in alto se lo desideri

CascadingCi sono due pin che puoi usare per la cascata, Os e Os1. Os è per gli orologi in aumento rapido e Os1 è per gli orologi in aumento lento. Aggancia questo pin al pin dati del prossimo registro a scorrimento e l'overflow da questo chip verrà inserito nel prossimo. Fine dell'aggiornamento

Affrontare il display

Nel programma di esempio ho creato un array di 8 byte chiamato row_buffer. Ogni byte corrisponde a una riga del display 8x8, la riga 0 è la parte inferiore e la riga 7 è la parte superiore. Il bit meno significativo di ogni riga è a destra, il bit più significativo a sinistra. Cambiare il display è facile come scrivere un nuovo valore su quell'array di dati, la routine del servizio di interruzione si occupa di aggiornare il display.

Programmazione

La programmazione non sarà discussa in dettaglio qui. Ti avverto di non utilizzare un cavo di programmazione DAPA poiché credo che non sarai in grado di programmare il chip una volta che funziona a 12 MHz. Tutti gli altri programmatori standard dovrebbero funzionare (STK500, MKII, Dragon, programmatori paralleli/seriali, ecc.). Fusibili: assicurarsi di programmare i fusibili per utilizzare il fusibile a cristallo da 12 MHz: 0xC9lfuse: 0xEF

In azione

Una volta programmato il chip, il display dovrebbe scorrere un "Hello World!". Ecco un video della matrice LED in azione. La qualità video è piuttosto bassa poiché l'ho realizzato con la funzione video della mia fotocamera digitale e non con un video o una webcam adeguati.

Passaggio 5: concetti modulari

Concetti modulari
Concetti modulari
Concetti modulari
Concetti modulari
Concetti modulari
Concetti modulari
Concetti modulari
Concetti modulari

Questo progetto è scalabile. L'unico vero fattore limitante sarà la quantità di corrente che l'alimentatore può fornire. (L'altra realtà è quanti LED e cambi di registro hai a disposizione).

Matematica

Sto pilotando i LED a circa 15mA (5V-1.8vDrop/220ohms=14.5mA). Ciò significa che posso pilotare fino a 33 colonne con il driver mic2981 (500mA/15mA=33,3). Diviso per 8 possiamo vedere che questo ci permette di mettere insieme 4 registri a scorrimento. Considera anche che non è necessario che tutte le 32 colonne si estendano da sinistra a destra. Potresti invece creare un array 16x16 cablato nello stesso modo in cui faresti un array 8x32. Questo verrebbe affrontato spostando in 4 byte…. i primi due si sposterebbero fino ai led della nona riga, i secondi due byte si sposterebbero nella prima riga. Entrambe le righe verrebbero fornite da un pin sul driver di riga.

Registri a scorrimento a cascata

I registri a scorrimento utilizzati sono registri a scorrimento in cascata. Ciò significa che quando si spostano i dati, l'overflow appare sul pin Os. Diventa molto utile in quanto un set di registri a scorrimento può essere collegato tra loro, dal pin Os al pin Data, aggiungendo 8 colonne con ogni nuovo chip. Tutti i registri a scorrimento si collegheranno agli stessi pin Latch, Clock e Enable Output su il microcontrollore. L'effetto "cascading" si crea quando l'Os del primo shift register è connesso al pin Data del secondo. La programmazione dovrà essere modificata per riflettere l'aumento del numero di colonne. Sia il buffer che memorizza le informazioni sia la funzione che sposta le informazioni per ciascuna colonna devono essere aggiornati per riflettere il numero effettivo di colonne. Di seguito è riportato uno schema di questo come esempio.

Driver a più file

Il driver di riga (mic2981) può fornire corrente sufficiente per pilotare 32 colonne. E se volessi più di 32 colonne? Dovrebbe essere possibile utilizzare più driver di riga senza utilizzare più pin del microcontrollore. Abbiamo bisogno che i driver di riga forniscano corrente sufficiente per accendere i LED. Se si utilizzano più colonne di quelle che è possibile illuminare contemporaneamente, i driver di riga aggiuntivi possono fornire la corrente necessaria. Vengono utilizzati gli stessi pin di input del microcontrollore, quindi non è necessario modificare la scansione delle righe. In altre parole, ogni driver controlla le righe per un blocco 8x32. Anche se 64 colonne possono avere lo stesso posizionamento FISICO delle righe, dividiamo i bus di riga in due, utilizzando un driver per le 8 righe delle prime 32 colonne e un secondo driver per le 8 righe delle seconde 32 colonne e così via. Di seguito viene fornito uno schema di questo come esempio. Potenziali passi falsi:1. Non utilizzare più driver di riga con lo stesso numero di colonne. Ciò significherebbe che ogni pin del registro a scorrimento attiverebbe più di un LED alla volta.2. È necessario disporre di un set di 8 resistori (3k3) per ogni driver di riga, un set per driver di più righe non funzionerà in quanto non fornirà la corrente necessaria per commutare i gate.

Per esempio

Ho deciso di espandere la matrice che ho costruito in precedenza. Ho aggiunto altre 7 righe per un totale di 15 poiché è tutto ciò che posso inserire su questa scheda prototipi. Ho appena scoperto anche di un concorso che Instructables sta facendo chiamato "Let it Glow". Ecco un video della mia opinione su questo. Ancora una volta, la fotocamera digitale che ho usato per girare il video non gli rende giustizia. Questo sembra fantastico all'occhio umano, specialmente dove tutti i LED lampeggiano, ma non sembra altrettanto buono nel video. Divertiti: il codice sorgente per questo display più grande è incluso di seguito.

Passaggio 6: conclusione

Possibili aggiunte

I2CI ha lasciato i pin dell'interfaccia a due fili (I2C) inutilizzati in questo progetto. Ci sono diverse prospettive interessanti che possono utilizzare questi due pin. L'aggiunta di una EEPROM I2C consentirà la memorizzazione di messaggi molto più grandi. C'è anche la prospettiva di progettare una programmazione per trasformare il mega8 in un driver video compatibile con I2C. Ciò aprirebbe la possibilità di avere un dispositivo di abilitazione USB per visualizzare i dati sul tuo array di LED passandoli sul bus I2C. Input Ci sono molti pin rimasti che potrebbero essere usati per i pulsanti o un ricevitore IR. Ciò consentirebbe di programmare i messaggi tramite un sistema di menu. Display Per questo istruibile ho implementato solo un paio di funzioni di visualizzazione. Uno scrive semplicemente i caratteri sul display, l'altro scorre i caratteri sul display. La cosa importante da ricordare è che ciò che vedi nelle luci è rappresentato in un array di dati. Se trovi modi intelligenti per modificare l'array di dati, le luci cambieranno allo stesso modo. Alcune opportunità allettanti includono la creazione di un metro grafico dalle colonne. Questo potrebbe essere usato come analizzatore di segnale con uno stereo. Lo scorrimento può essere implementato dall'alto verso il basso o dal basso verso l'alto, anche da sinistra a destra. Buona fortuna buon divertimento!

Passaggio 7: follow-up

Azione supplementare
Azione supplementare
Azione supplementare
Azione supplementare
Azione supplementare
Azione supplementare
Azione supplementare
Azione supplementare

Dopo aver lasciato il circuito del controller nella breadboard per mesi, ho finalmente progettato e inciso alcuni circuiti stampati per mettere insieme questo prototipo. Tutto ha funzionato alla grande, non credo ci fosse niente che avrei fatto diversamente.

Caratteristiche del circuito stampato

  • I registri a scorrimento sono su schede separate che possono essere collegate a margherita per aumentare le dimensioni del display.
  • La scheda controller ha il proprio regolatore di potenza, quindi può essere gestita da qualsiasi fonte di alimentazione che fornisca 7v-30v (batteria 9v o alimentazione da banco 12v entrambe funzionano bene per me).
  • Intestazione ISP a 6 pin inclusa in modo che il microcontrollore possa essere riprogrammato senza rimuoverlo dalla scheda.
  • Header a 4 pin disponibile per l'uso futuro del bus I2C. Questo potrebbe essere usato per una eeprom per memorizzare più messaggi o anche per renderlo un dispositivo slave controllato da un altro microcontrollore (ticker RSS qualcuno?)
  • 3 pulsanti momentanei sono inclusi nel design. Potrei modificare il firmware in futuro per includere l'uso di questi pulsanti.

Assemblea

Dammi plexiglass, staffe angolari, viti a macchina 6x32, dadi e rondelle, oltre a un set di rubinetti per filettare i fori e posso creare qualsiasi cosa.

Secondo premio al Let It Glow!

Consigliato: