ich habe ein Problem mit der Funktion millis() in Verbindung mit der If Abfrage. Ich hoffe sehr dass mir einer von euch helfen kann.
Problemstellung:
Es sollen, nachdem ein Schalter betätigt wurde, vier Relais unterschiedlich lange geschaltet werden. Der erste Ansatz über delay hatte nicht geklappt weswegen ich mir das Programm Blinkwithoutdelay näher angeschaut habe.
Angefangen habe ich dann erstmal mit einem Relais und daraufhin ein kleines Programm geschrieben.
Als erstes soll der Schalter abgefragt werden und anschließend das Relais geschaltet werden.
Mit der Funktion Millis soll das Relais nach einer Sekunde ausgeschaltet werden. Mein Ziel sollte eigentlich sein, dass nur nachdem der Schalter betätigt wurde das Relais geschaltet wird. Allerdings wird die If Abfrage durchgeführt obwohl der Schalter gar nicht betätigt wurde.
Ich muss dazusagen dass ich noch ein blutiger Anfänger bin!
Vielen Dank im voraus
Gruß Max
const int relaisPin = 24;
const int schalterPin = 7;
unsigned long previousMillis = 0;
const long intervall = 1000;
void setup() {
pinMode (motorPin, OUTPUT);
pinMode (schalterPin, INPUT);
}
void loop() {
if (digitalRead(schalterPin) == LOW) {
digitalWrite (relaisPin, LOW);
unsigned long currentMillis = millis ();
if (currentMillis - previousMillis >= intervall) {
previousMillis = currentMillis;
digitalWrite (relaisPin, HIGH);
}
}
}
Hallo
soll das Relais "blinken" oder nach der betätigung des Tasters verzögert schalten?
Schalten? Ein- oder Ausschalten ?
Was macht der Motorpin und welchen Wert hat die Konstante?
Der motorPin ist leider ein Schreibfehler und soll relaisPin heißen.
Das Relais soll 1 Sekunde schalten und danach aus bleiben und nicht wieder schalten.
Das Relais schaltet bei LOW.
ich werde nachher einen Blick in meine Sketchkiste werden, um zu gucken was man an diese Standardaufgabenstellung schnell anpassen kann.
Bist du ein bißchen im C++ Syntax zuhause ?