Go Down

Topic: Rainbowduino Anfängerfrage (Read 2 times) previous topic - next topic

ChrisS

#15
May 20, 2010, 11:25 am Last Edit: May 20, 2010, 11:27 am by ChrisS Reason: 1
So, habe direkt  bei Seedstudio ein Example gefunden wie RGB-Ledstrips angesteuert werden.
http://www.seeedstudio.com/blog/?p=512

Das sieht auch sehr übersichtlich aus:

Code: [Select]
#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
Sturmfabrik - mediale Dienstleistungen
www.sturmfabrik.de

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
Sturmfabrik - mediale Dienstleistungen
www.sturmfabrik.de

Pumbaa

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...)

ChrisS

#18
May 22, 2010, 01:02 am Last Edit: May 22, 2010, 08:40 am by ChrisS Reason: 1
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.
Sturmfabrik - mediale Dienstleistungen
www.sturmfabrik.de

Sic

@Chriss: Schau dir mal die neue rainbowduino Firmware von Uncle Fester an. Mit setPixel Funktion...
Sic
- auch ein Opfer von "plug and shine"

ChrisS

WooooooW, das sieht guuuut aus!!!

Danke für den Tipp!!!!

Lieber Gruß
ChrisS
Sturmfabrik - mediale Dienstleistungen
www.sturmfabrik.de

Pumbaa

#21
May 28, 2010, 12:06 am Last Edit: May 28, 2010, 12:17 am by willich Reason: 1
Sorry ,jetzt grad erst wieder reingeschaut. War nicht aggro gemeint, sondern als Tip wie ichs machen würd, wenn ichs müsste :)
War nicht Lehrerhaft gemeint; wusste das Ergebnis meines Tips nicht. ICH habe sie mir nicht aufgeschrieben. Und wusste NICHT obs zum Ziel führt. Aber hat es ja augenscheinlich geklappt.

HEX->DEZ, da das ja die bits sind, die ins schieberegister geschoben werden. 'Ne DEZ-Zahl da rein entzieht sich ja der intuitiven vorstellung. Daher der Gedanke zu HEX->BIN....
Woher du rausbekommst, wie die LED-strips angeschlossen sind weiß ich auch nicht. Ansonsten Trial-and-error. Ne 1, ne 2, ne 4, ne 8..... rein. Und nacheinander gucken was passiert.

Und Portmani generell, da Bildgebende Verfahren schon zeitkritisch sind :)

Aber die "Null" mit nur einem "ausm Pin" bietet sich ja gut an zum testen. Dass die Pins wohl invertiert werden klingt für mich logisch, da ich glaube (hab ja keinen...) dass die Pins ja die Kathoden darstellen. Und daher zum leuchten ja schon auf "0" gesetzt werden müssen. Um den Saft der Anode durchzulassen


Kann dein setpixel nun das was dir kopfschmerzen machte? Wäre schade. Ohne die Firmware hättest wohl bald den Rainbowduino verstanden  ::)
Obwohl ich's dir gönne, dass es dann so läuft wie du willst.

ChrisS

#22
May 28, 2010, 10:48 am Last Edit: May 28, 2010, 02:11 pm by ChrisS Reason: 1
Hehe, also ich glaube ich verstehe den Rainbowduino tatsächlich so langsam. Habe die 2. Firmware noch nicht getestet.

Danke für die Antwort.
Was ich nicht verstehe, daß es tausend Libraries für jeden Schnittenschmierautomat gibt, für einen Rainbowduino der nun wirklich im Bezug auf Ledansteuerung ausgereift scheint, ein (aus meiner Sicht) mangelhaftes Handbuch, eine Firmware die für Einsteiger kaum zu gebrauchen ist, und auch sonst relativ wenig Infos.

Das scheint sich ja langsam zu ändern, und darüber freue ich mich.

Ich fänds schade wenn dieses wirklich coole Teil wirklich nur den Sinn eines Plasmademos auf ner KaufMatrix erfüllen könnte, weil die Community und die Entwickler keine Zeit haben mehr daraus zu machen.

Wenn also Libraries entickelt werden, um das ganze benutzbar zu machen, dann wäre es sinnvoll auf jegliche Verkomplizierung zu verzichten. Nicht unbedingt, weil niemand etwas lernen soll, sondern
weil es der Sinn einer Library ist Arbeit abzunehmen, und Benutzbarkeit/Einfachheit zu schaffen.

Ein SetPixel wurde hier des öfteren angefragt, nicht nur von mir, und mtxControl macht das mal sehr schön per Processing-Backend.

Ich würde mich freuen, wenn Tobi, der hier die nächsten Tage reinschauen will, vielleicht ein bisschen von seinem KnowHow in die neue Firmware steckt.

Wenn man wissen bündelt, kommt immer besseres bei raus, als wenn lauter Einzelprojekte aus Teilwissen entstehen.

Mein Einsatzgebiet wird eine Lichtsteuerung fürs Wohnzimmer über Ethernet/Wlan... und da war es einfach mal suuuuuper frustrierend zu entdecken daß es für einen Rainbowduino-Käufer nicht möglich ist (aus dem Stand) eine Led anzusteuern. Was aus meiner Sicht der Sinn des Rainbowduinos ist. Natürlich kann man, aber nicht einfach sondern nur mit komplexen Vorwissen.

Ein Setpixel (PixelNr,R,G,B) oder (X,Y,R,G,B) würde für jeden Einsteiger das ermöglichen was er vom Rainbowduino verlangt...

Naja, das scheint sich ja dann mit der neuen Firmware zu ergeben.

Ich bin sehr gespannt, allerdings auch ziemlich fertig, weil Grippe mit schön Fieber... momentan keine Kraft das ganze auszuprobieren...
aber ich freue mich schon drauf.

Um der folgenden Leserschaft noch den Link zu UncleFesters Firmware zukommen zu lassen:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1274728464/4

Ich hoffe daß Ihm ein wenig unter die Arme gegriffen wird um etwas ganz großes zu erschaffen.

Lieber Gruß
ChrisS
Sturmfabrik - mediale Dienstleistungen
www.sturmfabrik.de

Go Up