Ich möchte in einer Switch Auswahl zuerst eine LED n mal aufleuchten lassen und dann die LED nach der jeweiligen Funktion ansteuern. Das alles möchte ich ohne delay() machen um andere Funktionen aufrufen zu können.
Der Modus wird über einen Taster (mit capsense) weitergeschaltet.
switch(modus)
{
case 1:
blink(1)
funktion1()
break;
case 2:
blink(2)
funktion2()
break;
case 3:
blink(3)
funktion3()
break;
...
}
hab noch mal eben im Atmel Studio gebastelt. Passte bei mir sogar ins Projekt
Funktion solltest du problemlos, falls überhaupt erwünscht, auf "Arduino Style" umbauen können.
Der Code ist getestet und funktioniert. Sobald die Led 10mal getoggelt (10mal an + 10mal aus) ist, übergibt sie 1/true als Rückgabewert. Entsprechend geht die Switch-Anweisung einen Schritt weiter. (break in Case 1 beabsichtig weggelassen, würde aber auch mit gehen). Zum testen, ob die Funktion auch ein 2. mal ordentlich gestartet werden kann, lasse ich in bei default nach einer gewissen Zeit diese erneut starten.
Hatte gedacht den Topic nicht aufgemacht (verschickt) zu haben :~ :~ :~ Hatte geglaubt ihn gelöscht zu haben.
Wie so oft wenn man um Hifle schreibt, hat man das Problem schon so aufgearbeitet, daß man selbst eine Lösung gefinden hat. Ich benutze eine WS2812LED zu 8mm mit der FastSPI_LED Bibliothek und einen Taster mit Capsense-Bibliothek
Meine Lösung ist:
Die Blinkfunktion:
void blink(byte number_blink)
{
if (status_blink == 0)
{
previous_millis_blink = millis();
set_color_led(0, 255, 255, 255); // GRB for WS2812LED set white
FastSPI_LED.show();
LED_blink_status = 1;
number_blink_aktual = number_blink;
status_blink = 1;
}
if(millis() - previous_millis_blink > interval_blink)
{
if(LED_blink_status == 0)
{
if(number_blink_aktual <= 0 ) // stop blinking
{
status_blink = 0 ;
LED_blink_status = 0 ;
status_blink_aktive = 0 ;
return;
}
set_color_led(0, 255, 255, 255); // GRB for WS2812LED set white
}
else
{
set_color_led(0, 0, 0, 0); // GRB for WS2812LED set off
number_blink_aktual --;
}
LED_blink_status = !LED_blink_status;
FastSPI_LED.show();
previous_millis_blink = millis();
}
}
if ((mean_capsense > limit_capsense + hysteresis_capsense) && (status_capsense == 0)) // fist time capacitive sensor on
{
digitalWrite(CONTROL_LED_PIN_13,HIGH); // status LED to see if Capsense is set.
if(status_manual == 0)
{
Mode_Counter++;
status_blink_aktive =1; // set blink aktive
}
....
sschultewolte Danke für Deine Bemühungen.
Meine Version ist etwas komplizierter als Deine wobei ich bei meiner Version sicher bin daß sie funktioniert weil ausprobiert.
Grüße Uwe
Moin Uwe,
da ich hier auch hin und wieder mit dem WS2812 arbeite würde ich mich freuen wenn Du Dein Projekt mal komplett vorstellen würdest. Kann man ja noch etwas daraus lernen.
Aus diesem Satz werde ich nicht ganz schalu.
Ich benutze eine WS2812LED zu 8mm mit der FastSPI_LED Bibliothek und einen Taster mit Capsense-Bibliothek
WS 2812, FastSPI_LED und Capsens-Bib. ist soweit klar aber was sollen die 8mm aussagen?
Es gibt die WS2812 auch in einem 8mm LED Gehäuse. Laut Datenblatt auch im 5mm Gehäuse.
zB bei http://www.watterott.com/de/WS2812-8mm-LED
Aber Achtung. Die haben gegenüber der SMD Variante eine andere Reihenfolge der Daten für die Farbe. Die SMD version braucht RGB, die LED-Version GRB. (bezogen auf die Reihenfolge der Bits die übertragen werden). Ein Sketch für die SMD Version mit der LED Version WS2812 wird falsche Farben anzeigen.
Ahhh du hast die einzelnen LED's
Das mit RGB und GRB habe ich in einem Scetch schon mal gelesen.
Ich habe bei mir die SMD LED Stripes mit 60 St./m als Ambiente Beleuchtung für meine TV Wand.
Diese kann ich (wenn ich es endlich mal umbaue) per WiFi vom Handy steuern.
Z.Z. läuft es noch mit der IR Fernbedinung.
Als APP / Schnitstelle habe ich die NetIO App von David Eickhoff im Einsatz. http://netio.davideickhoff.de/de/
1 Leonardo
1 WS2812 8mm LED
1 LM35 Temperatursensor, kriminell von 2 Pins versorgt ( soll halt einfach sein )
1 ein tilt-Sensor (den ich noch nicht habe und darum im sketch noch nicht vorkommt
1 kapazitiver Sensor mit einem 3,3MOhm und 100pF Kondensator und capsense
Foto folgt demnächst und der angehängte Sketch ist auch noch auszufeilen.
Tis wird auch noch eine Presentation online stellen.
NB. I moment funktioniert der angehängte Code nur habe ich probleme mit der Capsense Bibliothek daß sie am anfang falsche Tastendrücke gibt und sich das nach ca 5 minuten legt.
Grüße Uwe
Warten wir mal die beleuchtete Version in Milchglasoptik ab Könnte mir das gut vorstellen.
Hab sowas noch vor für einen Tisch. Bei dem sollen 64 Felder verbaut werden. Die Ihre Farbe bei Berührung ändern. Derzeit nur in Planung. Muss sehen, dass man die Sensoren später nicht sieht. Über Drucktaster kann ichs nicht lösen da dieser Wasserdicht sein soll.
SkobyMobil:
Hallo,
bei der Verdrahtung wäre eine MargarineSchachtel besser gewesen- so ein schönes Gehäuse- und...
manmanman!
Gruß und Spaß
Andreas
Andreas Du hast 2 Sachen übersehen:
Prototype und Milchplexiglas.
Du weißt, daß man bei Prototypen das nehmen muß was man bekommt. Die Pins der LED waren schon gebogen und darum mußten sie gekreuzt an der Versorgung angeschlossen werden.