PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Lichtlaufsignale per LED Kette



oderlachs
26.10.2011, 12:26
Muss mal hier nachfragen ob wer da einen Lösungsansatz weiss, bzw mich in meinen Vorstellungen korrigieren , verbessern kann.
Zur Sache auf einer runden Platine sind nebeneinander 24 LED sozusagen im Kreis angeordnet. Diese sollen nun verschiedenartig leuchten...links herrum , rechtsherrum, aus der Mitte verlöschen/leuchten .
ich würde für jede dieser Variante eine OutPut BitTabelle schreiben und diese je Port in einer Loop oder doWhile Schleife abarbeiten lassen zBsp:


Data &B00000000 '0
Data &B00000001 '1
Data &B00000011 '2
Data &B00000111 '3
Data &B00001111 '4
Data &B00011111 '5
Data &B00111111 '6
Data &B01111111 '7
Data &B11111111 '8
usw...

Dann weiss ich nicht ob der Speicher im Cotroler µC reichen wird oder ob ich dann extra diese LED Platine mit einem µC versehen sollte, da ja jede variante extra Tabellen braucht..

Dies Leuchten sollen oben als Warn/Signalleuchten auf meinen Robby befestigt werden , der von einem Arduino One Board gesteuert wird.

Dank schon mal im Voraus

Gruss Gerhard

kruemeltee
05.11.2011, 16:07
Data &B00000000 '0
Data &B00000001 '1
Data &B00000011 '2
Data &B00000111 '3
Data &B00001111 '4
Data &B00011111 '5
Data &B00111111 '6
Data &B01111111 '7
Data &B11111111 '8
usw...

Dann weiss ich nicht ob der Speicher im Cotroler µC reichen wird oder ob ich dann extra diese LED Platine mit einem µC versehen sollte, da ja jede variante extra Tabellen braucht..


Die Frage genau ist? Du willst wissen, ob der Platz reicht oder ob mans anders besser machen kann?

Obige Tabelle braucht genau 9Byte, es sind 9 Einträge.
24LEDs brauchen 3 Bytes, jedes Bit steht für eine LED. So kannst du dir ja leicht ausrechnen, dass der mega8 (was ja mindestens auf dem Arduino steckt), für 100erte Kombinationen reicht, wenn die Daten fest im Flash abgelegt werden.

Bei Bascom bin ich nicht daheim, daher "Pseudocode" in C:

Nacheinander die LEDs anmachen:


uint32_t ledwerte = 0; // 32bit breiter datentyp, BIT0 = LED0, BIT23 = LED23, rest ungenutzt
unsigned char i, temp = 1;

for(i = 0; i < 24; i ++) {
ledwerte |= temp;
temp *= 2;
leds_schalten(ledwerte);
}


Wenn du das mit deiner jetzigen Tabelle machen würdest hättest du 3byte*24 Schritte = 72byte nur für die Tabelle verbraten, der Code dürfte vom Compiler kürzer werden.