Servus, ich schon wieder
Kann mir mal jemand erklären wo hier der Fehler liegt? Ich will drei leds in unterschiedlichen abständen Blinken lassen. Mal funktioniert es, und mal blitzt die led nur ganz leicht und kurz auf. WAAAARUUUUM?? Hab auch schon mehrmals alles neu verkabelt und an UNO und NANO getestet. Häng da jetz schon ewig dran
int ledgruen = 2;
int ledgelb = 3;
int ledrot = 4;
int taster1 = 5;
int tasterst;
int intervall1 = 1000;
int intervall2 = 3000;
int intervall3 = 2000;
int intervall4 = 5000;
int intervall5 = 3000;
int intervall6 = 3000;
unsigned long vergmillis1;
unsigned long vergmillis2;
unsigned long vergmillis3;
unsigned long vergmillis4;
unsigned long vergmillis5;
unsigned long vergmillis6;
unsigned long aktmillis;
void setup() {
pinMode (ledgruen, OUTPUT);
pinMode (ledgelb, OUTPUT);
pinMode (ledrot, OUTPUT);
pinMode (taster1, INPUT);
Serial.begin (9600);
}
void loop() {
aktmillis = millis();
ledgruenn();
ledgelbb();
ledrott();
}
void ledgruenn () {
if (aktmillis-vergmillis1>=intervall1)
{vergmillis1=aktmillis;
digitalWrite (ledgruen, HIGH);}
if (aktmillis-vergmillis2>=intervall2)
{vergmillis2=aktmillis;
digitalWrite (ledgruen,LOW);}
}
void ledgelbb () {
if (aktmillis-vergmillis3>=intervall3)
{vergmillis3=aktmillis;
digitalWrite (ledgelb, HIGH);}
if (aktmillis-vergmillis4>=intervall4)
{vergmillis4=aktmillis;
digitalWrite (ledgelb,LOW);}
}
void ledrott () {
if (aktmillis-vergmillis5>=intervall5)
{vergmillis5=aktmillis;
digitalWrite (ledrot, HIGH);}
if (aktmillis-vergmillis6>=intervall6)
{vergmillis6=aktmillis;
digitalWrite (ledrot,LOW);}
}
Also die Variante mit der Abfrage von noiasca hat nicht funktioniert. Habs jetzt so gemacht wie my xy projekt. Aaaaaber warum leuchtet jetz die rote led dauerhaft?? Ich checks nicht
int ledgruen = 2;
int ledgelb = 3;
int ledrot = 6;
int taster1 = 5;
int tasterst;
int intervall1 = 1000;
int intervall2 = 3000;
int intervall3 = 2000;
int intervall4 = 5000;
int intervall5 = 3000;
int intervall6 = 3000;
unsigned long vergmillis1;
unsigned long vergmillis2;
unsigned long vergmillis3;
unsigned long vergmillis4;
unsigned long vergmillis5;
unsigned long vergmillis6;
unsigned long aktmillis;
void setup() {
pinMode (ledgruen, OUTPUT);
pinMode (ledgelb, OUTPUT);
pinMode (ledrot, OUTPUT);
pinMode (taster1, INPUT);
Serial.begin (9600);
}
void loop() {
aktmillis = millis();
ledgruenn();
ledgelbb();
ledrott();
}
void ledgruenn () {
if (aktmillis-vergmillis1>=intervall1)
{vergmillis1=aktmillis;
digitalWrite (ledgruen, LOW);}
if (aktmillis-vergmillis2>=intervall2)
{vergmillis2=aktmillis;
digitalWrite (ledgruen,HIGH);}
}
void ledgelbb () {
if (aktmillis-vergmillis3>=intervall3)
{vergmillis3=aktmillis;
digitalWrite (ledgelb, LOW);}
if (aktmillis-vergmillis4>=intervall4)
{vergmillis4=aktmillis;
digitalWrite (ledgelb,HIGH);}
}
void ledrott () {
if (aktmillis-vergmillis5>=intervall5)
{vergmillis5=aktmillis;
digitalWrite (ledrot, LOW);}
if (aktmillis-vergmillis6>=intervall6)
{vergmillis6=aktmillis;
digitalWrite (ledrot,HIGH);}
}
Start...
3000 gruen an
3000 rot an
4000 gruen aus
5000 gelb an
6000 rot aus
7000 gruen an
7000 gelb aus
8000 gruen aus
9000 rot an
11000 gruen an
12000 gruen aus
12000 gelb an
12000 rot aus
14000 gelb aus
15000 gruen an
15000 rot an
16000 gruen aus
18000 rot aus
19000 gruen an
19000 gelb an
20000 gruen aus
21000 gelb aus
21000 rot an
23000 gruen an
24000 gruen aus
24000 rot aus
26000 gelb an
27000 gruen an
27000 rot an
28000 gruen aus
28000 gelb aus
30000 rot aus
31000 gruen an
32000 gruen aus
Da haste jetzt ordentlich Tipparbeit gespart. Wie wäre es die eingesparte Tipparbeit in anfängerfreundliche Dokumentation zu stecken? Du sollst sie auch nicht vorlesen sondern schreiben. Wenn es einen Link gibt wo das schon steht dann wäre das ja auch schnell erledigt.
vgs
@benjixx
wenn du magst, kannst du zum Blinken auch eine Library verwenden:
/*
https://forum.arduino.cc/t/leidiges-thema-millis/961953
by noiasca
*/
#include <Noiasca_led.h> // download library from http://werner.rothschopf.net/microcontroller/202202_tools_led_en.htm
BlinkPin ledgruen {2}; // declare blinking LED and assign a pin
BlinkPin ledgelb {3};
BlinkPin ledrot {4};
void setup() {
ledgruen.begin(); // you have to call the .begin() method for each LED object
ledgelb.begin();
ledrot.begin();
// you can set different blink intervals for your LEDs
ledgruen.setOnInterval(1000);
ledgruen.setOffInterval(3000);
ledgelb.setOnInterval(2000);
ledgelb.setOffInterval(5000);
ledrot.setOnInterval(3000);
ledrot.setOffInterval(3000);
}
void loop() {
ledgruen.update(); // you have to call update() for each LED object
ledgelb.update();
ledrot.update();
}
möglicherweise kommen später noch Taster dazu, dann könntest das Blinken relativ einfach ein/ausschalten:
//ledgruen.off(); // zum Abschalten des Blinken, z.B. wenn später mal ein Taster dazukommen soll.
//ledgruen.on(); // zum wieder Einschalten des Blinken
//ledgruen.toggle(); // zum Umschalten - weitere Funktionen siehe Beschreibungslink