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
  Taster 1 mal drücken = LED 2 mal blinken oder aufblitzen gordolino 19 1.352 03.11.2017 15:14
Letzter Beitrag: ardu_arne
  2 LEDs unabhängig blinken lassen cappy0815 1 310 26.09.2017 07:42
Letzter Beitrag: hotsystems
  blinken mit millis Gonmaus 13 889 08.09.2017 21:12
Letzter Beitrag: Bitklopfer
  LEDs und Sound synchron nach kurzem Tastendruck Thor Wallhall 32 1.929 24.06.2017 21:01
Letzter Beitrag: georg01
  LED blinken zeitversetzt starten Sky-Shadow 6 643 17.06.2017 15:12
Letzter Beitrag: Sky-Shadow
  Ausgang "blinken" lassen NormanIGB 11 1.337 28.12.2016 17:20
Letzter Beitrag: Tommy56
  tip für Qellcode nur 1mal ablaufen lassen himbeersirup 4 678 19.05.2016 11:51
Letzter Beitrag: himbeersirup
  Programme lassen sich nicht auf das Gemma Board downloaden! Jack Sparrow 13 1.233 08.04.2016 10:01
Letzter Beitrag: hotsystems
  Lampe mit Key leuchten lassen FCraftLP 1 842 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 885 08.12.2015 15:03
Letzter Beitrag: arduinofan

Gehe zu:


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