Hi,
I'm pretty new to the whole Arduino thing and programming in general.
What I'm trying to do right now is reading an input on PIN13. Based on that input (HIGH or LOW) the Arduino is supposed to switch on (PIN13 == HIGH) or off (PIN13 == LOW) the PINs A0-A5 with a delay of 1sec between each PIN.
My first code looked like this:
const int Thermostat = 13;
const int Sieder1 = A0;
const int Sieder2 = A1;
const int Sieder3 = A2;
const int Sieder4 = A3;
const int Sieder5 = A4;
const int Sieder6 = A5;
int buttonState = 0;
int Sieder1State = 0;
int Sieder2State = 0;
int Sieder3State = 0;
int Sieder4State = 0;
int Sieder5State = 0;
int Sieder6State = 0;
void setup() {
pinMode(Thermostat, INPUT);
pinMode(Sieder1, OUTPUT);
pinMode(Sieder2, OUTPUT);
pinMode(Sieder3, OUTPUT);
pinMode(Sieder4, OUTPUT);
pinMode(Sieder5, OUTPUT);
pinMode(Sieder6, OUTPUT);
}
void loop() {
buttonState = digitalRead(Thermostat);
Sieder1State = digitalRead(Sieder1);
Sieder2State = digitalRead(Sieder2);
Sieder3State = digitalRead(Sieder3);
Sieder4State = digitalRead(Sieder4);
Sieder5State = digitalRead(Sieder5);
Sieder6State = digitalRead(Sieder6);
delay(50);
if (buttonState == HIGH) {
if (Sieder1State == LOW) {
digitalWrite(Sieder1, HIGH);
delay(1000);
}
if (Sieder2State == LOW) {
digitalWrite(Sieder2, HIGH);
delay(1000);
}
if (Sieder3State == LOW) {
digitalWrite(Sieder3, HIGH);
delay(1000);
}
if (Sieder4State == LOW) {
digitalWrite(Sieder4, HIGH);
delay(1000);
}
if (Sieder5State == LOW) {
digitalWrite(Sieder5, HIGH);
delay(1000);
}
if (Sieder6State == LOW) {
digitalWrite(Sieder6, HIGH);
delay(1000);
}
} else {
if (Sieder1State == HIGH) {
digitalWrite(Sieder1, LOW);
delay(1000);
}
if (Sieder2State == HIGH) {
digitalWrite(Sieder2, LOW);
delay(1000);
}
if (Sieder3State == HIGH) {
digitalWrite(Sieder3, LOW);
delay(1000);
}
if (Sieder4State == HIGH) {
digitalWrite(Sieder4, LOW);
delay(1000);
}
if (Sieder5State == HIGH) {
digitalWrite(Sieder5, LOW);
delay(1000);
}
if (Sieder6State == HIGH) {
digitalWrite(Sieder6, LOW);
}
}
}
The problem there was that it had to complete the entire loop before it startet reading the state of PIN13 again. So I decided to add the if-function to each output:
const int Thermostat = 13;
const int Sieder1 = A0;
const int Sieder2 = A1;
const int Sieder3 = A2;
const int Sieder4 = A3;
const int Sieder5 = A4;
const int Sieder6 = A5;
int buttonState = 0;
int Sieder1State = 0;
int Sieder2State = 0;
int Sieder3State = 0;
int Sieder4State = 0;
int Sieder5State = 0;
int Sieder6State = 0;
void setup() {
pinMode(Thermostat, INPUT);
pinMode(Sieder1, OUTPUT);
pinMode(Sieder2, OUTPUT);
pinMode(Sieder3, OUTPUT);
pinMode(Sieder4, OUTPUT);
pinMode(Sieder5, OUTPUT);
pinMode(Sieder6, OUTPUT);
}
void loop() {
buttonState = digitalRead(Thermostat);
Sieder1State = digitalRead(Sieder1);
Sieder2State = digitalRead(Sieder2);
Sieder3State = digitalRead(Sieder3);
Sieder4State = digitalRead(Sieder4);
Sieder5State = digitalRead(Sieder5);
Sieder6State = digitalRead(Sieder6);
delay(50);
if (buttonState == HIGH) {
if (buttonState == HIGH && Sieder1State == LOW) {
digitalWrite(Sieder1, HIGH);
delay(1000);
}
if (buttonState == HIGH && Sieder2State == LOW) {
digitalWrite(Sieder2, HIGH);
delay(1000);
}
if (buttonState == HIGH && Sieder3State == LOW) {
digitalWrite(Sieder3, HIGH);
delay(1000);
}
if (buttonState == HIGH && Sieder4State == LOW) {
digitalWrite(Sieder4, HIGH);
delay(1000);
}
if (buttonState == HIGH && Sieder5State == LOW) {
digitalWrite(Sieder5, HIGH);
delay(1000);
}
if (buttonState == HIGH && Sieder6State == LOW) {
digitalWrite(Sieder6, HIGH);
delay(1000);
}
if (buttonState == LOW && Sieder1State == HIGH) {
digitalWrite(Sieder1, LOW);
delay(1000);
}
if (buttonState == LOW && Sieder2State == HIGH) {
digitalWrite(Sieder2, LOW);
delay(1000);
}
if (buttonState == LOW && Sieder3State == HIGH) {
digitalWrite(Sieder3, LOW);
delay(1000);
}
if (buttonState == LOW && Sieder4State == HIGH) {
digitalWrite(Sieder4, LOW);
delay(1000);
}
if (buttonState == LOW && Sieder5State == HIGH) {
digitalWrite(Sieder5, LOW);
delay(1000);
}
if (buttonState == LOW && Sieder6State == HIGH) {
digitalWrite(Sieder6, LOW);
}
}
}
But the loop still keeps cycling through every single line and for some reason the outputs don't turn off at all anymore.
What should I do to interupt the loop and turn off the outputs as soon as PIN13 has no voltage anymore?