INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
LED synchron blinken lassen
05.10.2014, 16:43 (Dieser Beitrag wurde zuletzt bearbeitet: 05.10.2014 19:26 von Nimes.)
Beitrag #1
LED synchron blinken lassen
Hallo Forum,
in meinem Projekt verwende ich einen NeoPixel-Ring mit 12 LED's und die FastLED-Lib. Nun sollen unterschiedliche LED's, die in verschiedenen Programmteilen aufgerufen werden, synchron reagieren, z.B. synchon blinken. Wie kann das am besten realisiert werden?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.10.2014, 16:53
Beitrag #2
RE: LED synchron blinlen lassen
Hi,
wie ruft man denn eine LED auf? ...und auf was genau sollen sie reagieren?
Beschreibe das mal etwas genauer.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.10.2014, 18:15
Beitrag #3
RE: LED synchron blinlen lassen
Jetzt komm Thorsten...du weißt doch was ich (Laie) meine Undecided

Aber ein paar Schnipsel serviere ich gerne:
Hier im MENU1 blinkt LED 7:
if (nextAction == ACTION_MENU1)
{
Serial.println(master_count);
delay(10);
leds[0] = CRGB::Red; FastLED.show();
leds[1] = CRGB::Red; FastLED.show();
leds[2] = CRGB::Red; FastLED.show();
leds[4] = CRGB::Blue; FastLED.show();
leds[7] = CRGB::ForestGreen; FastLED.show(500); delay(100); // Grün blinker für Modus Auto-Lauf
leds[7] = CRGB::Black; FastLED.show(500); delay(100); // Grün blinker für Modus Auto-Lauf
delay(10);

. . . und hier in den Untermenüs case0....bis case5 blinken ebenfalls (je nach case) jeweils andere LED's, die mit LED 7 synchron blinken sollen- was sie aber nicht tun:
switch (Zeitwahl){
case 0:
leds[4] = CRGB::ForestGreen; FastLED.show(500); delay(100); // Grün blinker für v0
leds[4] = CRGB::Black; FastLED.show(500); delay(100); // Grün blinker für v0
leds[5] = CRGB::ForestGreen; FastLED.show(500); delay(100); // Grün blinker für v1
leds[5] = CRGB::Black; FastLED.show(500); delay(100); // Grün blinker für v1
break

case 1:
leds[4] = CRGB::ForestGreen; FastLED.show(500); delay(100); // Grün blinker für v0
leds[4] = CRGB::Black; FastLED.show(500); delay(100); // Grün blinker für v0
leds[5] = CRGB::ForestGreen; FastLED.show(500); delay(100); // Grün blinker für v1
leds[5] = CRGB::Black; FastLED.show(500); delay(100); // Grün blinker für v1
leds[6] = CRGB::ForestGreen; FastLED.show(500); delay(100); // Grün blinker für v2
leds[6] = CRGB::Black; FastLED.show(500); delay(100); // Grün blinker für v2
break

case 2:
leds[4] = CRGB::ForestGreen; FastLED.show(500); delay(100); // Grün blinker für v0
leds[4] = CRGB::Black; FastLED.show(500); delay(100); // Grün blinker für v0
leds[5] = CRGB::ForestGreen; FastLED.show(500); delay(100); // Grün blinker für v1
leds[5] = CRGB::Black; FastLED.show(500); delay(100); // Grün blinker für v1
leds[6] = CRGB::ForestGreen; FastLED.show(500); delay(100); // Grün blinker für v2
leds[6] = CRGB::Black; FastLED.show(500); delay(100); // Grün blinker für v2
leds[7] = CRGB::ForestGreen; FastLED.show(500); delay(100); // Grün blinker für v3
leds[7] = CRGB::Black; FastLED.show(500); delay(100); // Grün blinker für v3
break
.
.
.
.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.10.2014, 18:47
Beitrag #4
RE: LED synchron blinlen lassen
Hi,
naja, Du lässt ja auch eine nach der anderen an und wieder ausgehen. Ich nehme mal an, dass die grünen auch nicht synchron blinken. Versuch mal das:
Code:
leds[4] = CRGB::ForestGreen; FastLED.show(500); delay(100);
leds[5] = CRGB::ForestGreen;
FastLED.show(500);
delay(100);
leds[4] = CRGB::Black;
leds[5] = CRGB::Black;
FastLED.show(500);
delay(100); // Grün blinker für v1
Das müsste zumindest mal die grünen im Takt blinken lassen.
Um das mit den "anderen Programmteilen" hinzubekommen müsstest Du wahrscheinlich erst einmal die delays loswerden.
Versuch erst einmal ein einfacheres Beispiel: Zwei LEDs in zwei verschiedenen Programmteilen synchron blinken lassen.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.10.2014, 19:12
Beitrag #5
RE: LED synchron blinlen lassen
Ich bin ja dran die delays unter Verwendung der millis loszuwerden - zunächst aber für die Drehgeberauswertung.
Zu den "Grünen": Doch, die Grünen blinken alle - soweit ersichtlich - synchron. Aber halt nicht mit der einen LED [7].

Dennoch baue ich mal deine Version ein und schaue mal was sich dadurch ergibt.

Andere Idee:
Man sollte doch den gesamten Strang von 12 LED als array ansprechen können, aber wie geht das? Hab bislang keine Hinweise, Tutorial o.ä. finden können.

Ach ja und noch was: Die LED 0, 1 und 2 sollten ja eigentlich rot leuchten (s.sketch)...aber wollen nur in Grün leuchten! Woran kann das liegen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.10.2014, 20:33
Beitrag #6
RE: LED synchron blinlen lassen
(05.10.2014 19:12)Nimes schrieb:  Zu den "Grünen": Doch, die Grünen blinken alle - soweit ersichtlich - synchron.
Das Coding sieht aber eher nach Lauflicht aus.

Zitat:Andere Idee:
Man sollte doch den gesamten Strang von 12 LED als array ansprechen können, aber wie geht das? Hab bislang keine Hinweise, Tutorial o.ä. finden können.
??? Aber genau das machst Du doch schon. Die Variable "leds" ist ein Array.

Zitat:Ach ja und noch was: Die LED 0, 1 und 2 sollten ja eigentlich rot leuchten (s.sketch)...aber wollen nur in Grün leuchten! Woran kann das liegen?
Keine Ahnung, ich kenne die fastLED Lib nicht wirklich. Schreibe mal einen Sketch, der den ganzen Farbraum durchgeht. Dann siehst Du, ob die Dinger irgendwann rot werden. Vielleicht sind's ja einfarbige grüne.

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.10.2014, 08:09 (Dieser Beitrag wurde zuletzt bearbeitet: 06.10.2014 08:24 von Nimes.)
Beitrag #7
RE: LED synchron blinken lassen
Nimes schrieb: Zu den "Grünen": Doch, die Grünen blinken alle - soweit ersichtlich - synchron.
Das Coding sieht aber eher nach Lauflicht aus.


Thorsten, Du hast natürlich Recht: Die Grünen leuchten nicht synchron, was ja auch das Problem ist. Ich habe die Farben verwechselt , was dann ja auch meine nächste Frage war. Also nochmals zur Verdeutlichung:
Die vermeintlich grünen [5,6 und7] sollen synchron blinken.


Zitat:Ach ja und noch was: Die LED 0, 1 und 2 sollten ja eigentlich rot leuchten (s.sketch)...aber wollen nur in Grün leuchten! Woran kann das liegen?
Keine Ahnung, ich kenne die fastLED Lib nicht wirklich. Schreibe mal einen Sketch, der den ganzen Farbraum durchgeht. Dann siehst Du, ob die Dinger irgendwann rot werden. Vielleicht sind's ja einfarbige grüne.
[/quote]
Ich habe mich schon als Laie geoutet, aber so wenig weiss ich nun auch wieder nicht, um das nicht schon geprüft zu haben! Claro haben die auch schon rot geleuchtet weil: Alle Elemente des neoPixel-Rings können so ziemlich jede Farbe! Gucks Du hier: http://www.adafruit.com/categories/184

Aber ein wirklicher Tipp oder Hinweis war das bislang noch nicht. Es stehrt immer noch die Frage offen, wie man LEDs, die durch das Programm aber in unterschiedlichen Programmteilen synchron zum Blinken gebracht werden können.
VD
Nimes
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.10.2014, 08:36
Beitrag #8
RE: LED synchron blinken lassen
(06.10.2014 08:09)Nimes schrieb:  Thorsten, Du hast natürlich Recht: Die Grünen leuchten nicht synchron, was ja auch das Problem ist. Ich habe die Farben verwechselt , was dann ja auch meine nächste Frage war.
Aha, ist damit auch das Problem mit dem Rot statt Grün gelöst?

Zitat:Also nochmals zur Verdeutlichung:
Die vermeintlich grünen [5,6 und7] sollen synchron blinken.
Ich denke, dazu habe ich Dir schon Coding geliefert.

Zitat:Ich habe mich schon als Laie geoutet, aber so wenig weiss ich nun auch wieder nicht, um das nicht schon geprüft zu haben! Claro haben die auch schon rot geleuchtet
Ok, wenn sie schon rot geleuchtet haben, dann mach's doch in Deinem Sketch genauso... Falls Dir das nicht hilft, dann vergleiche mal den Sketch, mit dem sie rot leuchten, mit dem, mit dem, mit dem sie es nicht tun.

Zitat:Aber ein wirklicher Tipp oder Hinweis war das bislang noch nicht.
Naja, ich denke schon, dass ich ein paar Tipps gegeben habe. Lies Dir den Thread nochmal durch. Zum Beispiel habe ich geraten, dass Du mal einen einfachen Sketch schreiben solltest, der einfach nur zwei LEDs synchron blinken lässt.

Zitat:Es stehrt immer noch die Frage offen, wie man LEDs, die durch das Programm aber in unterschiedlichen Programmteilen synchron zum Blinken gebracht werden können.
Die Antwort ist: Wahrscheinlich gar nicht. Du musst wahrscheinlich Dein Programm so umstrukturieren, dass das Blinken in einem einzelnen Unterprogramm erfolgt.
Das kann man z.B. so machen:
* Definiere Dir ein Array mit der Farbe für jede LED, dann noch eins, in dem Du festlegst, ob die betreffende LED blinken soll oder nicht.
* Da, wo Du momentan die LED-Farben setzt bzw. die LEDs blinken lässt, setzt Du nur das entsprechende Array-Element.
* Definiere eine Funktion, die das Array ausliest, die Farben entsprechend setzt und sich um das Blinken kümmert. Das muss natürlich ohne delay() passieren, sondern mit millis(). Da Du die LEDs synchron blinken lassen willst, ist das ziemlich einfach. (Unabhängig blinkende/flackernde LEDs sind da schon komplexer.)
* Die Funktion rufst Du dann jedes mal im loop() auf.

Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  tip für Qellcode nur 1mal ablaufen lassen himbeersirup 4 353 19.05.2016 11:51
Letzter Beitrag: himbeersirup
  Programme lassen sich nicht auf das Gemma Board downloaden! Jack Sparrow 13 565 08.04.2016 10:01
Letzter Beitrag: hotsystems
  Lampe mit Key leuchten lassen FCraftLP 1 474 05.03.2016 11:44
Letzter Beitrag: hotsystems
  Mit dem Pin 8 und 9 vom Yun werden zwei LED wechselseitig blinken über http arduinofan 1 551 08.12.2015 15:03
Letzter Beitrag: arduinofan
  Leds blinken lassen mit if-Abfrage und millis ferdi 11 1.524 24.10.2015 08:54
Letzter Beitrag: Bitklopfer
  Counter rückwärts laufen lassen???? Haustechno 6 916 10.08.2015 18:26
Letzter Beitrag: Haustechno
  mal wieder ein kleines Problem mit blinken ohne delay :) Sbbfreack 6 1.734 06.07.2015 15:59
Letzter Beitrag: Sbbfreack
  mehrere funksteckdosen über arduino laufen lassen. purzele06 12 1.973 28.03.2015 02:03
Letzter Beitrag: Homer
  Arduino mit der Außenwelt kommunizieren lassen raspido 0 747 22.03.2015 19:50
Letzter Beitrag: raspido
  LED Blinken lassen ohne delay und mit einem Ende EddyErdmann 3 3.010 26.10.2014 19:33
Letzter Beitrag: Thorsten Pferdekämper

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste