Domanda

Ho appena comprato un Rainbowduino per controllare un carico di singoli LED (non una matrice RGB). Tutta la documentazione finora è rivolto verso il controllo array RGB che è non quello che sto cercando.

Se si ha familiarità con l'Rainbowduino si tratta di un Arduino clone con 24 canali a corrente costante di 120 mA, 8 eccellente fonte canale pilota di 500 mA ciascuno e un'ampia adattamento tensione di uscita da 5 V - 12 V CC. Perfetto per il pilotaggio di LED. La pagina web del prodotto è qui: http://www.seeedstudio.com/blog/?page_id= 187

Ho collegato a 16 LED e voglio essere in grado di trasformare ognuno e disattivare individualmente con digitalWrite(). Ho caricato un codice demo alla scheda che non è davvero lavorando. Ho lavorato che gli 8 canali sorgente conducente sono facilmente controllabili con digitalWrite() sui pin 3-11. Tuttavia controllare gli altri 24 canali del dissipatore è più difficile. Apparentemente sono controllati da 3 registri a scorrimento (uno ciascuno) che posso accedere solo con SHIFTOUT. Non ho idea di come funziona. Qualcuno può aiutarmi a punto nella giusta direzione?

La metà dei LED sono cablati in Blu 1-8 e l'altra metà sono cablati in Verde 1-8. Le gambe positivi sono cablati in VCC1-2 che sono stati impostati su HIGH. Sono sicuro che il circuito è collegato correttamente, è la programmazione che sto avendo problemi con.

Ho guardato il codice di esempio che viene fornito con il Rainbowduino, ma non riesco a dare un senso di esso. Come posso risolvere questo problema?

È stato utile?

Soluzione

L'uso di un registro a scorrimento per multiplare (o de-multiplex, a seconda dei punti di vista) ingressi / uscite è molto comune nel campo dell'elettronica digitale.

In sostanza, è il commercio risparmiando pin sul controller per dover includere un altro chip (il registro a scorrimento) nel progetto.

In questo caso, il registro funziona come un convertitore seriale-parallelo; ha una linea di ingresso seriale, che è alimentato con punte di CPU. Inoltre ha 8 uscite parallele, collegate ad una memoria a 8 bit che viene caricato serialmente dalla CPU. Usando questo, si può "spostare" su 8 bit di dati su un singolo perno (più uno spinotto per clock, tipicamente), che vengono poi memorizzati nel registro a scorrimento e può guidare 8 LED in parallelo.

In questo caso particolare, è necessario capire che AVR portuali perni i registri a scorrimento (driver sink corrente costante MBI5168 contengono i registri a scorrimento, qui) sono collegate a. Dovrebbero essere incatenato ad una coppia di uscite, una per i dati e uno per l'orologio. Una volta che sai quei pin, si dovrebbe essere in grado di guidare da soli utilizzando il SHIFTOUT comando .

Scavando un po 'oltre, questo campione "sketch" contiene le seguenti definizioni, nel file denominato "Rainbow.h":

//MBI5168
#define SH_DIR_OE    DDRC
#define SH_DIR_SDI   DDRC
#define SH_DIR_CLK   DDRC
#define SH_DIR_LE    DDRC

#define SH_BIT_OE    0x08
#define SH_BIT_SDI   0x01
#define SH_BIT_CLK   0x02
#define SH_BIT_LE    0x04

#define SH_PORT_OE   PORTC
#define SH_PORT_SDI  PORTC
#define SH_PORT_CLK  PORTC
#define SH_PORT_LE   PORTC

Questo è naturalmente totale "per sentito dire" digitale (non ho proprio il dispositivo, non ho mai programmato su qualsiasi tipo di Duino *), ma direi che questo è il sistema di consegna della pallottola di particelle sputa te' re cercando.

Interpreto questo modo:

  • PORTC è quello collegato ai registri a scorrimento, tutti i perni di comando sono in PORTC.
  • Quattro perni sono dedicati (piuttosto che il ottimistica due che ho citato sopra).
  • L'orologio è pin PORTC: 2 ed i dati sono PORTC:. 1

Altri suggerimenti

Il controllo di ogni singolo LED è tempo piuttosto costoso, è meglio pensare in file, mentre ogni colore del LED è presentato come il bit, quindi è 8 bit x 3 colori (rosso, verde, blu). Ho scritto una piccola biblioteca Rainbowduino, che permette di impostare ogni riga o frame facilmente:

leggere il mio post sul blog che

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top