Hallo,
ich habe mir aus Arduino-Foren-Sketches etwas zusammengebastelt und bin nun am Ende mit meinem Anfängerlatein.
Folgendes ist bereits realisiert:
Ein IR-Sensor gibt bei "LOW" Signal und ein Zähler zählt jeweils bis 30. Zwischen 1 und 10 schaltet Relais 1 auf "HIGH", zwichen 11 und 20 Relais 2 auf "HIGH" und zwichen 21 und 30 schaltet Relais 3 auf "HIGH".
Problem ungelöst:
Circa 5 Minuten nachdem der Sensor das Signal "LOW" ausgegeben hat, bzw. ein Zähler nach oben gezählt wurde, sollen alle 3 Relais auf "HIGH" schalten.
Dies sollte sich doch über den Zähler realisieren lassen, ich habe aber überhaupt keine Idee wie ich das umsetzen kann.
An dieser Stelle bitte ich deshalb um Hilfe.
int SensorPin = 12; // Eingang IR-Sensor
int SensorState = 1; // Sensorstatus
int counter = 1; // Zähler
int SensorStateHIGH = 1;
int Relais5V = 11; // Variable mit Pin 11 deklarieren + initialisieren
int relais1 = 2; // Variable mit Pin 12 deklarieren + initialisieren
int relais1State = HIGH;
int relais2 = 8; // Variable mit Pin 8 deklarieren + initialisieren
int relais3 = 7; // Variable mit Pin 7 deklarieren + initialisieren
int relais4 = 4; // für millis Zählschleife (Pin 4 = relais4)
int relais4State = LOW;
long myTimer = 0;
long myTimeout = 2000;
void setup() {
Serial.begin(9600);
pinMode(SensorPin, INPUT);
pinMode(Relais5V, OUTPUT); // setzt 5V als Ausgang fest
digitalWrite(Relais5V, HIGH); // schaltet 5V+ auf Ausgang 11
pinMode(relais1, OUTPUT); // Digitaler Pin 12 als Ausgang
pinMode(relais2, OUTPUT); // Digitaler Pin 8 als Ausgang
pinMode(relais3, OUTPUT); // Digitaler Pin 7 als Ausgang
pinMode(relais4, OUTPUT); // millis
}
void loop(){
SensorState = digitalRead(SensorPin);
if (SensorState == LOW)
{
SensorStateHIGH = 1;
}
if (SensorState == HIGH && SensorStateHIGH == 1)
{
counter++;
SensorStateHIGH = 0;
}
Serial.println(counter);
{
if (counter <=0 || counter >10)
digitalWrite(relais1, HIGH);
if (counter <=10 || counter >=30)
digitalWrite(relais1, LOW);
if (counter <=10 || counter >20)
digitalWrite(relais2, HIGH);
if (counter <=0 || counter >10 && counter <=20 || counter >30)
digitalWrite(relais2, LOW);
if (counter <=20 || counter >30)
digitalWrite(relais3, HIGH);
if (counter <=0 || counter >20)
digitalWrite(relais3, LOW);
if (counter == 30)(counter = 1);
}
{
if (millis() > myTimeout + myTimer ) { // millis
myTimer = millis();
if (relais4State == LOW) relais4State = HIGH;
else relais4State = LOW;
digitalWrite(relais4, relais4State);
}
}
}