Hallo liebe Leute.
Obwohl ich es mir fest vorgenommen hatte, bin ich noch nicht großartig dazu gekommen, mich endlich mal in Sachen Arduino weiter zu bilden.
Jedenfalls benötige ich noch mal eure Hilfe bei einem kleinem Sketch. Der Sketch ist sicher alles andere als sinnvoll und ihr könnt da sicher bessere Vorschläge machen. Aber dennoch würde ich gern wissen warum es nicht ganz so läuft.
So soll es laufen.
-Wenn ich den Taster drücke und unter 3 Sekunden los lasse, soll Programm 1 ausgeführt werden.
-Wenn der Taster über 3 Sekunden gedrückt und gehalten wird, soll Programm 2 starten.
(die Zeitangaben stimmen noch nicht im Sketch)
Es gibt eine Variabel die immer nur +1 zählen sollte, wenn der Taster HIGH ist.
Die zweite if Bedingung soll nur erfüllt sein wenn der Taster LOW ist und die Variable größer als 1 ist.
Die dritte if Bedingung soll erst erfüllt sein, wenn der Taster HIGH ist und die Variabel größer als 90000 ist.
Problem bei if Bedingung 3.
Die dritte if Bedingung funktioniert aber nicht ganz richtig.
Sie tritt nur ein wenn man den Taster los lässt. (Was jetzt nicht das schlimmste ist) Aber auch bei den darauf folgenden Programmzeilen mit ( LEDPin2), ist die delay Pause nicht immer 2 Sekunden lang und das HIGH der LED somit manchmal kürzer.
int LEDPin = 15;
int LEDPin2 = 17;
long Timer = 0;
int InputPin = 2;
int SchalterZustand;
void setup(){
pinMode(InputPin,INPUT);
pinMode(LEDPin,OUTPUT);
pinMode(LEDPin2,OUTPUT);
}
void loop() {
SchalterZustand=digitalRead(InputPin);
if (SchalterZustand == 1) // Wenn Taster HIGH dann..
{
Timer++; // Variable +1
}
if ((SchalterZustand ==0) && (Timer > 1)) //Wenn Taster LOW ist und Variable größer als 1 ist dann..
{
digitalWrite(LEDPin,HIGH);
delay(2000);
digitalWrite(LEDPin,LOW);
Timer = 0; //setze Variable auf 0
}
if ((SchalterZustand == 1) && (Timer >90000)) //Wenn Taster HIGH ist und Variable größer als 90000 dann..
{
digitalWrite(LEDPin2,HIGH);
delay(2000);
digitalWrite(LEDPin2,LOW);
Timer = 0; // setze Variable auf 0
}
}
Würde mich echt über Hilfe freuen und auch über komplett andere Ansätze um das Vorhaben sicher umsetzen zu können.
Liebe Grüße
Christian
EDIT
Jetzt hab ich nach 20 min noch mal alles angeschlossen und auf einmal geht alles wie es soll... Mannnn. Ich versteh die Welt nicht mehr. Habe nichts geändert.
E-D-I-T
Es is in der Tat keine gute Idee einen Sketch in dieser Art zu schreiben. Die Geschwindigkeit der Programmdurchläufe, ändert sich nach der Rechenleistung des Chips selber, und damit stimmt natürlich auch die angestrebte Zeit nicht mehr. Also wenn beim Nano die Variable schon in 4 Sekunden auf dem gewünschten Wert addiert ist, benötigt ein Attiny bspw. 12 Sekunden bis die Durchläufe den selben Wert erreicht haben.
Also muss man wieder anpassen..