Hallo liebes Gemeinde.
Bin absoluter Anfänger (seit einer Woche) und stecke schon fest. Ich Versuche gerade einen Code zu schreiben, der beim Tasterdruck die Led blinken soll und beim nächsten Tasterdruck die Led ausgehen soll. Das ist kein Problem. Das habe ich hinbekommen und es ist sogar eine Entprellung des Tasters dabei.
Nur soll der i=0, i++, delay (1); und wenn i 3000 erreicht hat, also 3 Sekunden verstrichen sind, soll erst die Led angehen.
Ich habe sogar eine serielle Ausgabe gemacht. Die funktioniert auch.
Meine Frage ist, warum der die 3000 mal in der for-Schleife mit delay(1) jeweils immer, nicht macht und die Led sofort anspringt und ausspringt? Das verstehe ich nicht.
Gut mit delay(3000) hätte ich das gelöst. Das funktioniet dann auch. Aber will verdammt nochmal wissen, warum die for-Schleife nicht ihre Arbeit macht.
Bitte um Hilfe.
Hier der Code:
int pinLed = 13;
int pinTaster = 10;
int i=0;
int Flag;
int druck1, druck2;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(pinLed,OUTPUT);
pinMode(pinTaster, INPUT_PULLUP);
}
void loop() {
// put your main code here, to run repeatedly:
druck1 = digitalRead(pinTaster); // erste Tasterabfrage
if (!druck1){
delay(50);
druck2 = digitalRead(pinTaster); // zweite Tasterabfrage
if (!druck2){
if (Flag!=0)Flag=0;else Flag=1; // soll den letzten Tasterzustand speichern und ändern, um einmal Led einzuschalten und beim
}} // Druck auszuschalten
while(!digitalRead(pinTaster)); // weitermachen erst wenn Taster losgelassen ist
if(Flag==1){ // bei 1. Tasterdruck soll die Led angehen, aber nach 3 Sekunden warten
Serial.println("Die LED geht in 3 Sek an");
for(i=0;i++;i>3000){ // dafür soll i von 0 bis 3000 zählen
delay(1); // einr Milisekunde delay bei jedem Zählen
}
if(i==3000);{ // bei 3000 also led an
digitalWrite(pinLed,HIGH);
}
do{}
while(digitalRead(pinTaster));
}
if(Flag==0){ // hier beim nächsten Tasterdruck soll led nach 3 sekundne aus gehen.
Serial.println("Die LED geht in 3 Sek aus");
i=0;
for(i=0;i++;i>3000){
delay(1);
}
if(i==3000);{
digitalWrite(pinLed,LOW);
}
do{}
while(digitalRead(pinTaster));
}
}