Frage

Ich habe gerade gekauft Rainbowduino eine Last der einzelnen LEDs steuern (nicht eine RGB-Matrix). Die gesamte Dokumentation bisher richtet sich auf RGB-Arrays zu steuern, was nicht , was ich nach.

Wenn Sie mit dem Rainbowduino nicht vertraut sind, es ist ein Arduino Klon mit 24 Konstantstromkanäle von 120 mA, 8 Supersource-Treiberkanal von 500 mA je und einer großen Ausgangsspannungsanpassung von 5 V - 12 V DC. Perfekt für den Antrieb LEDs. Die Produkt-Webseite ist hier: http://www.seeedstudio.com/blog/?page_id= 187

Ich habe 16 LEDs verbunden und will mit digitalWrite() jeden ein- und ausgeschaltet einzeln drehen können. Ich habe einige Demo-Code auf dem Board hochgeladen, die nicht wirklich funktioniert. Ich habe herausgearbeitet, dass die 8-Treiber Quellenkanäle mit digitalWrite() leicht steuerbar sind auf Stiften 3-11. die anderen 24 Kanäle sink jedoch schwieriger zu steuern ist. Offenbar sind sie durch 3 Schieberegister (jeweils) gesteuert, die ich nur mit shiftOut zugreifen kann. Ich habe keine Ahnung, wie das funktioniert. Kann mich in der richtigen Richtung jemand helfen?

Die Hälfte der LEDs verdrahtet sind in Blau 1-8 und die andere Hälfte in Grün 1-8 verdrahtet. Die positiven Beine sind in VCC1-2 verdrahtet, die auf HIGH gesetzt wurden. Ich bin zuversichtlich, ist die Schaltung richtig verdrahtet, es ist die Programmierung ich Probleme habe mit.

Ich habe über den Beispielcode sieht, die mit dem Rainbowduino versandt wird, aber ich kann nicht Sinn daraus machen. Wie kann ich dieses Problem beheben?

War es hilfreich?

Lösung

Die Verwendung eines Schieberegister zu multiplexen (oder demultiplexen, je nach Sichtweise) Ein- / Ausgänge ist sehr häufig in der digitalen Elektronik.

Grundsätzlich handeln Sie Stifte auf dem Controller sparen für die mit einem anderen Chip (das Schieberegister) in der Gestaltung einzubeziehen.

In diesem Fall arbeitet das Register als Seriell-zu-Parallel-Wandler; es verfügt über eine serielle Eingangsleitung, die mit Bits, die von der CPU zugeführt wird. Es hat auch 8 parallele Ausgänge, die mit einem 8-Bit-Speicher, der seriell von der CPU geladen wird. Mit dieser kann man „shift out“ 8 Bits von Daten auf einem einzigen Stift (plus einen Stift für die Taktung, die typischerweise), die dann in dem Schieberegister gespeichert und 8 LEDs parallel fahren kann.

In diesem speziellen Fall müssen Sie die Schieberegister, die AVR-Port-Pins, um herauszufinden, (die MBI5168 Konstantstromsenken-Treiber die Schieberegister enthalten, hier) verbunden sind. Sie sollten mit einem Paar von Ausgängen verkettet werden, einen für Daten und einen für die Uhr. Sobald Sie diese Stifte kennen, sollten Sie in der Lage sein, sie zu fahren, sich die ShiftOut Befehl .

ein bisschen weiter Graben, dieser Probe "Skizze" enthält die folgenden Definitionen, in der Datei "Rainbow.h" genannt:

//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

Das ist natürlich total digital „Hörensagen“ (ich das Gerät nicht besitzen, ich habe noch nie auf jede Art von * duino programmiert), aber ich würde sagen, das ist die Partikelspeienden Kugel Zuführsystem Sie‘ re suchen.

Ich interpretiere dies wie folgt:

  • PORTC der einen in die Schieberegister, werden alle Steuerstifte sind in PORTC.
  • angeschlossen ist
  • Vier Stifte gewidmet (statt der optimistisch zwei ich oben erwähnt).
  • Die Uhr ist Pin PORTC: 2 und die Daten PORTC. 1

Andere Tipps

wird jedes einzelne LED-Controlling ist recht zeitaufwendig, es besser ist, in Reihen zu denken, während jede LED-Farbe wie auf Bit dargestellt wird, so ist es 8 Bit x 3 Farben (rot, grün, blau). Ich schrieb eine kleine Rainbowduino Bibliothek, die Sie jede Zeile oder Rahmen leicht einstellen können:

meine Blog-Post auf dem Lese

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top