Rainbowduino Anfängerfrage

Hallo liebes Forum,

vor ca. 1 Stunde ist mein Rainbowduino angekommen,
und ich tue mich ein wenig schwer.

Ich möchte nicht die Standardmatrix benutzen, sondern RGB-Leds
seperat verdrahten.

Gut, ich weiß bei einer Matrix werden die Anoden bzw. Kathoden Zeilen bzw. Spaltenweise zusammengelegt.

Soweit alles klar, jetzt habe ich aber mal einen Blick auf die Seedstudio RGB Matix bzw. in dessen Datenblatt geworfen.

http://www.watterott.com/download/2088RGBMatrix.pdf

Und nun ist es aus mit meinem Verständnis.
Ich lese das Datenblatt wahrscheinlich verkehrt.

Ich sehe einmal die horizontale und verikale Lednumerierung,
und so dachte ich, die Pin-Nummern am Rainbowduino.

Das kann aber nicht sei, da diese bis 32 durchnummeriert sind,
der Rainbowduino aber nur 24 RGBPins aufweist.
Zudem sind sie ja in RGB aufgeteilt.

Dann habe ich gedacht, ok... da sind ja noch die GNDs... wären 32 Pins quasi... bloß, ich habe trotzdem in der Beschriftung des Schaltplans auf den RGB-Leds eine Nummerierung bis 28.

Ich versteh es also meinen besten willen nicht.

Als beispiel wie ich es verstehen würde:

  • an Pin 9 würde ich alle "Rot-Anoden" der ersten Led-Spalte anlegen.
    (So siehts für mich im Schaltplan aus)

Wir haben am Rainbowduino aber nur rot-pins 1-8.
Gut würde ich denken, dann ist das trotzdem die erste Spalte im Schaltplan... also am Rainbowduino an red1...

Ist der Gedankengang so richtig?
Ich stehe restlos auf dem Schlauch.

Vielleicht hat hier jemand schon Erfahrungen mit dem Rainbowduino machen können, wohlbemerkt ohne Standardmatrix...

Wäre für ein bisschen Informationen bei meinen Startschwierigkeiten sehr dankbar.

Lieber Gruß
ChrisS

Willst du nicht im ersten Schritt eine Standardmatrix einsetzen und dabei die Funktion der Matrix verstehen?
Anschliessend kann man sich an die Sonderschaltung-und Ansteuerung wagen.

Ist einfach stressfreier und erfahrungsgemäss der einfachere Weg sich in ein Thema einzuarbeiten.

Datenblatt:
aus dem Datenblatt (dein Link) sind die mechanischen Anschlusspins der Matrix-Anzeige nicht sichtbar.
Vielleicht hilft dir das Datenblatt es Rainbowduino. Hier sind auf Seite 4 32 Anschlusspins (8xCommon Anode und je 8 Pins für Red, Green und Blue) für die Matrix-Ansteuerung eingezeichnet.
http://www.seeedstudio.com/wiki/images/c/c0/Rainbowduino_Manual.pdf

Du hast zwar recht, aber mein Problem liegt aktuell nicht in der Ansteuerung sondern in der Verdratung.

Und das Problem würde sich auch mit der Matrix nicht verändern, da ich die Matrix für den Einsatz nicht benutzen kann. Ich würde also nach den Tests mit der Matrix genau an dieser Stelle sein, und daher möchte ich mir die Matrix eigentlich ersparen.

Ich danke Dir für den Link auf das Handbuch, allerdings ist auch in der aktuellen V1.1 des Handbuches die Schematik absolut rudimentär und für weiteres eigentlich nicht zu gebrauchen. Um sich da ein Bild machen zu können bräuchte man ein Pinlayout... das ist ja aufgedruckt....

So siehts aus:

Das sagt erheblich mehr aus als das Handbuch... trotzdem weiß ich noch nicht wie ich an die Sache rangehen kann.

Habe bisher auch nicht ein Tutorial wie schließe ich 9 RGB Leds an den Rainbowduino an finden können. Habe gegooglet und zwar ein Video auf einem Breadbord gefunden, allerdings waren Details nicht sichtbar.

Lieber Gruß
ChrisS

hmm - nettes Teil!

Verstehe nicht so ganz was du nicht verstehst :wink:

R 1-8
G 1-8
B 1-8
VCC 1-8

im Schaltbild der Matrix entpricht meinen Meinung VCC 1-8 den Zeilen RGB 1-8 den Spalten

Viele Grüsse, Michi

Nochmal in andern Worten:
Vielleicht ist dein "Hänger", dass du die 8 VCCs (unten in deinem Bild) als VCCs siehst. Sind aber die common-Anoden 1-8 :slight_smile:

Ah, ich glaube jetzt dämmerts.... hoffe ich zumindest :slight_smile:

im Bezug auf das Datenblatt der Matrix und der Rainbowduino Beschriftung... würde ich also für die erste Zeile:

Kathoden:
Matrix - 9,10,11,12,13,14,15,16 auf Rainbowduino Red 1-8 legen.
Matrix - 21,22,23,24,25,26,27,28 auf Rainbowduino Green 8-1 legen.
Matrix - 1,2,3,4,5,6,7,8 auf Rainbowduino Blue 1-8 legen.

und jetzt die Annoden:
würde ich alle auf VCC1 legen.

Habe ich das so richtig verstanden?

Lieber Gruß
ChrisS

Vielleicht ist dein "Hänger", dass du die 8 VCCs (unten in deinem Bild) als VCCs siehst. Sind aber die common-Anoden 1-8

Ich habe keinen Rainbowmoppel, aber mein Tip bleibt:
Die 8 Anoden an VCC1 bis VCC8 legen.

Und vom Code wird dann Rainbowduinointern sowas wie:

je 1 byte in die R,G und B -register schieben. (invers denken...Low=lampe an)
Anode1 (VCC1) auf High, evtl kurz warten. VCC1 wieder Low.

nächstes byte in RGB
Anode2 auf High, dann low.

usw.

passieren

mmh, gut... wenn hier nicht noch ein "STOOOOP!" kommt werde ichs versuchen, und hoffentlich nichts am Moppel wegburnen :slight_smile:

Ich danke Euch!

Lieber Gruß
ChrisS

So, ich nochmal ;)...

Die Leds sind nun endlich da...
ich habe mir das ganze nochmal angeschaut, und ich will nicht nerven...
aber sofern ich die Begrifflichkeiten richtig auswendig gelernt habe...
müßte es eigentlich falsch sein. (Common-Annode)

Hier nochmal das Schaltbild der Matrix:
http://www.seeedstudio.com/depot/datasheet/2088RGBMatrix.pdf

1-17 (obenlinks) müßten eigentlich alle Kathoden der ersten Zeile sein (zusammengelegt)... das Schaltzeichen der Led zeigt für mich eindeutig nach oben. ?!?! confused

Kathode ist minus... dachte ich...

1-17 bis 8-32 sind folglich die 8 freien Ports... die nicht als RGB sondern als VCC gekennzeichnet sind.

Da steht zwar VCC dran, aber müsste das nicht dann eher GND heißen?

Irgendwie beißt sich das...

Sorry wenn ich mich so anstelle, aber ich will es nicht nur löten, sondern auch verstehen....

Lieber Gruß
ChrisS

Ich weiß zwar nicht, was du mit 1-17 meinst....
Und auch sonst werd ich nich schlau aus deinen Zahlen....

Aber einfach mal von Vorne:
große Zahlen= Nummer der Reihe/Zeile. Hier egal.

Kleine Zahlen= "Pinnummern":

17-20 und 29-32 sind die CommonAnoden! Plus! VCCx am Rainbowduino :slight_smile: Passt mit Richtung der Leds. Fließt ins "Dreieckende" der LED der Strom.

1-16 und 21-28 sind die Pins Rainbowduino-RGB-Leistungsschlucker-Schieberegister. Also potentielle Kathoden, sofern mit LOW besetzt.

Wenn (zB Zeile 1, also CommonAnode Nr. 17) Saft bekommt (von VCC1), leuchten alle die LEDs der ersten Zeile, welche durch Pin 1-16 & 21-28 auf LOW stehen).

Man bringt die LED also nicht NUR zum Leuchten, indem man die Anode auf High setzt, sondern man muss GLEICHZEITIG die Kathode auf Low setzen, damit der Saft auch da ankommt!

Das meinte ich in irgendeinem Post vorher mit "umgekehrte Logik"
Nen LOW an der Kathode (bei grad "aktivierter" Anode) sorgt fürs Leuchten.

Hoffe stimmt so. Ich hab noch nie mehr als 8 LED gleichzeitig beleuchtet,bzw. was mit ner Matrix gemacht. Nur graue Theorie und angegucke...
Aber ich denke du hattest nen grundsätzlichen Anode/Kathode- (und das für eine Farbe, siehe dein ersten Post...) Verdreher...

Ok, das scheint etzt Idiotensicher... :wink:


Was ich mit meinen Zahlen meinte.... 1-17 bis 8 -32 ... ist die vertikale
Pinbezeichnung (Zeile - Pinnummer) links am Schaltbild der Matrix...
eigentlich sehr einfach zu erkennen.... aber ist auch egal...

So, wie Du es jetzt geschrieben hast, verstehe ich es sogar... :slight_smile:

Dank Dir dafür, und für die Geduld....

Lieber Gruß
ChrisS

ok. weiß nun was du meinst. Aber stell deinen Monitor mal ins Querformat. Damit wir alle dasselbe "vertikal" haben :wink:

Moins,

gähn

horizontal > Horizont... von links nach rechts oder umgekehrt mit gleichen y Koordinaten.
vertikal... das Gegenteil... von oben nach unten oder umgekehrt mit gleichen x Koordinaten :wink:

Liegst Du auf der Seite? :wink: Is ja noch früh... lach

Lieber Gruß
ChrisS

Edit: Uff.... hast Du Dich mal gefragt warum ich in fast jedem Post das Schaltbild.PDF verlinke und davon spreche?
Ich glaube Du hast einfach auf das Bild geguckt oder?
Nicht wirklich oder? Ich glaube hier liegt nicht nur der Monitor auf der Seite :wink:

Na, dann wissen wir jetzt wo der "Fehler" liegt... ich werde es dann heute mal aus probieren... und bin sehr gespannt... ich danke Dir jedenfalls sehr für Deine Hilfe... ist mir ein rätsel warum der Rainbowduino als Plattform für das eine Matrixmodul vermarketet wird. Da ist soviel mehr drin... aber für Anfänger ohne Matrixmodul so gut wie nicht zu gebrauchen... ohne Dich hätte ich längst die Lust verloren... wenn ich es auf die Reihe bekomme sollte ich vielleicht mal nen Fritzing Beispiel machen... ich finde die Doku etwas mangelhaft für "Openhardware"-Einsteigerfreundlich... aber ist Ansichtssache....

ehrlich gesagt, ich habe NUR auf das Bild geguckt. Mit den Anschlüssen des Rainbowding verglichen. Und mit 8x Source, 24x Stromaufnahme verglichen. Und dann nachgedacht.

Nur steht da nicht 1-17, sonder 1 17.
Das habe ich naheliegenderweise nicht zusammen gesehen, wegen der Schriftgröße.

Und es IST die horizontale Beschriftung. Sie liegt natürlich vertikal.
'Ne Spaltenbeschriftung liegt auch in Zeilenform vor.

Egal, wayne. Du hast es jetzt. Viel Spaß.

So, also zu meiner Schande muß ich gestehen, ich hatte quasi Common-Kathode Leds... darauf muß man erstmal kommen...

Inzwischen sind die Common-Annode Leds angekommen... und ich kann sogar meine Led per RGB ansteuern.

Jetzt käme der nächste Schritt, und hoffe auf jemanden, der auch einen Rainbowduino hat, oder soviel Knowhow daß er mir sagen kann,
wie ich die einzelnen Leds ansteuere.

Per ShowColor werden ja alle Leds auf eine Farbe geschaltet...
ich bräuchte also etwas ähnliches... aber für einzelne Leds.

Soweit ich das verstehe, müßte soetwas ja schon in der Rainbowduino Command-Firmware drin sein. Dort gibt es die Möglichkeit einzelne farbige Buchstaben zu "schreiben".

Folglich müßte das was ich suche bereits in der Firmware drin sein.

Das gleiche müßte für die mtxcontrol Firmware gelten.

Aber ehrlichgesagt, es gibt für jeden sch* eine Library... und ich bin ja nicht der erste RainbowduinoBetatester... sowas gibt es vielleicht schon?

Etwas in der Art "SetPixel(x,y,r,g,b);" .... wäre optimal....

Also wenn jemand einen Tipp hat.... wäre ich dankbar....
werde morgen nochmal versuchen irgendwie durch die Firmwares durchzusteigen....

Lieber Gruß
ChrisS

So, habe direkt bei Seedstudio ein Example gefunden wie RGB-Ledstrips angesteuert werden.

Das sieht auch sehr übersichtlich aus:

#include "Rainbow.h"
unsigned char NumTab[10]=
{
  0x77,0x06,0x5b,0x1f,0x2e,0x3d,0x7d,0x17,0x7f,0x3f
};
void setup()
{
  _init();
  close_all_line
  open_all_line
}
void loop()
{
  int i;
  for(i=0;i<10;i++)
  {
    shift_24_bit(NumTab[i],0,0);
    delay(500);
  }
}

void _init(void)    // define the pin mode
{
  DDRD=0xff;
  DDRC=0xff;
  DDRB=0xff;
  PORTD=0;
  PORTB=0;
}

void shift_1_bit(unsigned char LS) 
{
  if(LS) shift_data_1;
  else  shift_data_0;
  clk_rising;
}

void shift_24_bit(int Red,int Green,int Blue)  
{
  unsigned char i;
  le_high;
  for (i=0;i<8;i++)
  {
    if ((Green<<i)&0x80)   shift_1_bit(1);
    else                 shift_1_bit(0);

  }
  for (i=0;i<8;i++)
  {
    if ((Red<<i)&0x80) shift_1_bit(1);
    else          shift_1_bit(0);
  }
  for (i=0;i<8;i++)
  {
    if ((Blue<<i)&0x80)  shift_1_bit(1);
    else             shift_1_bit(0);
  } 
  le_low;
}

So, also es werden 7 Strips angesteuert.
Die Zahlen 0 bis 9 werden durch die strips wie bei einer normalen 7-Segmentanzeige dargestellt.

So wie es aussieht sind in dem Beispiel 18 SMD Leds vorhanden....
das sehe ich im Code nicht?!?!?!?
Folglich werden nicht die einzelnen Leds sondern die Segmente angesprochen.

Was mich jetzt total aus der Bahn wirft sind die 10 Hexcodes für die Zahlen... ich erkenne meinen besten willen keinen Zusammenhang zwischen 0-9 Dezimal....

Könnten wir zusammen den Code vielleicht ein bisschen sezieren?

Lieber Gruß
ChrisS

Gibt es vielleicht jemanden der in der Lage ist weil er sowas schon gemacht hat ein einfaches LedXY mit Farbe r,g,b Snippet zu erstellen?

Hier gibts gleichzeitig mehrere Leute die mit dem Rainbowduino nicht klarkommen.

Die Informationsquellen sind sehr eingeschränkt.

Lieber Gruß
ChrisS

Haste mal versucht, dir die Hexzahlen als Binärzahlen aufzuschreiben?
Und GENAU nachzuvollziehen (aufschreiben...) was bei den Bitshifts mit vergleich mit x80 passiert? Wenn du dann noch weißt, welcher Strip an welchen LED-anschluss angeschlossen ist, damm müsste das ja ersichtlich sein.
(Nicht dass ichs gemacht hätt, oder gewillt bin das zu tun. Aber DAS würd ich an deiner Stelle machen...)

Hört sich irgendwie ein bisschen aggressiv an, aber danke für den Hinweis. Ist nicht so daß ich mir keine Gedanken drüber gemacht hätte...

So, also dann:
0x77,0x06,0x5b,0x1f,0x2e,0x3d,0x7d,0x17,0x7f,0x3f

77=01110111
06=00000110
5b=01011011
1f= 00011111
2e=00101110
3d=00111101
7d=01111101
17=00010111
7f=01111111
3f=00111111

so und
80=10000000...

mmh, also das 80 sieht so aus, als würde es quasi invertieren.

Woher soll ich wissen wie die Ledstrips angeschlossen sind?

Egal. Nehmen wir die dargestellte 0.
77=01110111
die 80 kann nicht invertieren.... denn eine 0 wird mit 6 leuchtenden Segmenten angezeigt... muß also auf high sein... gut dann haben wir hier also die Darstellung der VCC-Common Versorgungspins.... auf pin 2,3,4,6,7,8. mmh, warum die 80 hier wichtig ist leuchtet mir noch nicht so ganz ein, wird mir bestimmt noch einfallen... denn wenn sie invertieren würde, wären die Pins auf low, und das bringt nun garnichts zum leuchten. Du sprachst von Vergleich, also wird eher das Delta gefiltert sozusagen... dann wäre pin1 dauerhaft auf high, obwohl nichts dranhängt... mmh... wenn man invertiert denkt, wäre er auf low... wäre dann sinnig, wenn man eine 7-Segmentanzeige mit 8 Pins anspricht... logisch daß da ein Pin über ist....

Naja, jedenfalls ist es ein Ansatz den man verfolgen kann....
Ich danke Dir für die Hilfe... hatte den Bezug zu Dezimal gesucht...
Pins werden ja eigentlich als Integer angesprochen. Es sei denn man nutzt Portmanipulation... hätte diesen Umweg allerdings nicht erwartet.

Naa, der Wald vor lauter Bäumen.

Danke!

Lieber Gruß
ChrisS

PS: Sehe gerade, muß die Bits wahrscheinlich von hinten lesen... damit wäre es dann bei der 0 die Pins 1,2,3,5,6,7 .... und die 8 wäre dauerhaft auf High ... aber das kann ich ja testen.

Ah, ok... jetzt sieht man auch ganz klar daß 7F alle 7 Segmente ansteuert... aber bei 7d für "6" fehlt entweder ein Segment, oder es ist wie ein "b" dargestellt.

@Chriss: Schau dir mal die neue rainbowduino Firmware von Uncle Fester an. Mit setPixel Funktion...
Sic

  • auch ein Opfer von "plug and shine"