Arduino LED-Skript: bitte um Tipp, blicke nicht durch

romeon

Vice Admiral
Registriert
Feb. 2005
Beiträge
6.517
Hallo,

Bitte schaut auch mal dieses Skript an:
Hier

Damit werden LEDs angesteuert und zwar hintereinander über verschiedene Programme. Z.B. verschiedene Farbübergänge, die Farben pulsieren, danach Regenbogeneffekte etc.

Ich verstehe leider die Reihenfolge nicht. Bzw. was muss man darin ändern, um bestimmte Effekte zu entfernen oder andere zu wiederholen.

Aktuell steht das Skript auf "Rainbow-Loop" (ledmode 3). Welche Effekte laufen da hintereinander ab? Oder beim "Demo-Mode (ledmode 888)? Ich würde da gerne etwas herumspielen, nur hab ich keinen Plan, wo ich etwas ändern muss.

Sind die einzelnen Effekte diese "Void"-Absätze bis zur geschlossenen geschweiften Klammer, zB hier ?
void rainbow_fade() { //-m2-FADE ALL LEDS THROUGH HSV RAINBOW
ihue++;
if (ihue > 255) {ihue = 0;}
for(int idex = 0 ; idex < LED_COUNT; idex++ ) {
leds[idex] = CHSV(ihue, thissat, 255);
}
LEDS.show();
delay(thisdelay);
}

Falls ja, laufen diese Voids dann nacheinander ab oder werden sie in einer bestimmten Reihenfolge angesprungen, die ich noch nicht durchschaut habe?


Für jede Hilfe wäre ich dankbar ;)

Thx!
 
Diese voids sind sogenannte Funktionen. Solange da nichts mit if oder while oder for steht, laufen diese hintereinander ab. Was die Funktion macht, kannst du an dem Teil hinter den // erkennen, das ist nämlich ein Kommentar.
 
puuh ich fand das ganze ding auch sehr kurios. aber es gibt bestimmt welche die sich sehr gut mit der software auskennen.

ich war froh als meine 50 lichter hinten am TV angebracht waren und ambi-light-mäßig zur geltung kamen
(da hatte ich aber glaub noch 2 andere kleine progrogramme die genau das gemacht haben)

deswegen kann ich dir hier keinen tipp geben (bzw gibts sicher noch paar skripte die man ausm netz fischen kann) ;(
 
Ich hab es jetzt ein bisschen besser durchschaut. Nicht verstanden habe ich den Ablauf von ledmode 888, was dann demo_modeA sein müsste. Wenn dort hingesprugnen wird, läuft dann "nur" demo_modeA durch oder auch zB demo_modeB, was dahinter kommt?
Das zu wissen wäre super, wenn man einen eigenen Programm-Modus (also mit mehreren Effekten) basteln möchte ...


@runagrog: ein bisschen komplexer scheint das aber schon zu sein. Die Anmerkungen beschreiben zB keine Sprünge, sdn sind eher die Beschreibungen zu den Effekten bzw. zur Konfiguration. Das ist natürlich super, aber könnte gerade zum Ablauf noch ausführlicher sein :).

@eston: das Ambilight ist dagegen (imo) ziemlich einfach, weil die Funktion fertig in zig Skripten zur Verfügung steht. Meines lief in relativ kurzer Zeit, natürlich auch dank Ambibox. Dieses Skript hier soll etwas anderes möglichst schick "beleuchten" ;).
 
hi,

nein, ich meinte bei den voids im Skript:
- innerhalb des voids für demo_modeA steht gegen Ende demo_modeB(); . Könnte ein Aufruf für B sein, oder?
- und wird nach dem Durchlaufen vom void für demo_modeA dann nicht automatisch das nächste void durchlaufen? Direkt dahinter steht das void für B, auch kein break nirgends.

mhmm.
 
Zuletzt bearbeitet:
ich hab zwar noch nicht alle geblickt, aber immerhin konnte ich ein neues "Programm" mit mehreren Einträgen anlegen (neuer int ledMode), das jetzt in einer Schleife durchlaufen wird. Ziel fürs Erste erreicht :).
 
Um die test.ino zu deinen Wünschen zu modifizieren, am besten den Teil mit
Code:
//------------------MAIN LOOP------------------
suchen. Dort wird aktuell der ledMode abgefragt und je nach Wert einer der aufgeführten Funktionen aufgerufen. Anschließend kommen noch Blöcke, wie man über eine serielle Schnittstelle den Modus ändern kann, das brauchst du offenbar nicht. Daher den ganzen Inhalt aus der loop-Funktion schmeißen und nur die Funktionsaufrufe rein schreiben, die du gerne nutzen möchtest. Mehrere würden aber immer nacheinander im Wechsel ausgeführt, das kannst du mit zusätzlichen for-Schleifen steuern wie oft.
Beispiel:
Code:
//------------------MAIN LOOP------------------
void loop() {
  new_rainbow_loop();
}
 
Zurück
Oben