So i have to create a programm that should have 2 Mode's. 1 Mode for switching with button between the first 5 LED's and when u keep the button pressed u should swap into the other mode and should switch between the other LED's. When u are not doing anything for lets say 20sec it should go back to the first Mode.
My problem now is that i get into the 2. mode but i doesnt do anything there and i dont know why, maybe one of u guys could help me
Here is the code:
int buttonPin = 2; //
int LED33 = 7; //Das Wort „LED33“ steht jetzt für den Wert 7
int LED45 = 6; //Das Wort „LED45" steht jetzt für den Wert 5
int LED78 = 5; //Das Wort „LED78" steht jetzt für den Wert 5
volatile int mode = 1; // Anfangszustand des 1.Betriebsmodus (33/45/78)
volatile int mode2 = 1; // Definieren des 2.Betriebsmodus (Feineinstellung)
volatile int buttonState = 0; // derzeitiger Zustand des Tasters
int lastButtonState = 0; // vorheriger Zustand des Tasters
int startPressed = 0; // die Zeit an dem der Button gedrückt wurde
int endPressed = 0; // die Zeit an dem der Button losgelassen wurde
int timeHold = 0; // die Zeit der Button gehalten wurde
void addToMode()
{
buttonState = digitalRead(buttonPin);
buttonState = ! buttonState;
mode++;
if (mode == 4)
{
mode = 1;
}
}
void addToMode2()
{
buttonState = digitalRead(buttonPin);
buttonState = ! buttonState;
mode2++;
if (mode2 == 6)
{
mode2 = 1;
}
}
void setup() {
pinMode(buttonPin, INPUT); //Taster Eingang definieren,
// button Pin wurde oben der Wert 2 zugewiesen deshalb ist der 2.Pin jetzt unser Eingang des Tasters)
Serial.begin(9600);
pinMode(LED33, OUTPUT); //Der Pin mit der LED33 (Pin 7) ist jetzt ein Ausgang.
pinMode(LED45, OUTPUT); //Der Pin mit der LED45 (Pin 6) ist jetzt ein Ausgang.
pinMode(LED78, OUTPUT); //Der Pin mit der LED78 (Pin 5) ist jetzt ein Ausgang.
pinMode(1, OUTPUT); // Relais vom 1. Poti
pinMode(3, OUTPUT); // Relais vom 2. Poti
pinMode(4, OUTPUT); //Relais vom 3. Poti
pinMode(8, OUTPUT); //Relais vom 1. Widederstand
pinMode(9, OUTPUT); //Relais vom 2. Widederstand
pinMode(10, OUTPUT); //Relais vom 3. Widederstand
pinMode(11, OUTPUT); //Relais vom 4. Widederstand
pinMode(12, OUTPUT); //LED bei +-0 R
pinMode(13, OUTPUT); //LED bei +1 R
pinMode(A0, OUTPUT); //LED bei +2 R
pinMode(A1, OUTPUT); //LED bei -2 R
pinMode(A2, OUTPUT); //LED bei -1 R
attachInterrupt(digitalPinToInterrupt(2), addToMode, FALLING);
}
void loop() {
if (mode == 1) {
digitalWrite(LED33, HIGH);
digitalWrite(LED78, LOW);
digitalWrite(LED45, LOW);
digitalWrite(1, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);//Modus 1 = an
buttonState = digitalRead(buttonPin);
// button state changed
if (buttonState != lastButtonState) {
if (buttonState == HIGH) {
startPressed = millis();
// the button was just released
} else {
endPressed = millis();
timeHold = endPressed - startPressed;
if (timeHold >= 2000 ) {
Mode2();
}
} lastButtonState = buttonState;
}
}
// save the current state as the last state,
//for next time through the loop
else if (mode == 2) { //Modus 2 = 45
digitalWrite(LED33, LOW);
digitalWrite(LED45, HIGH);
digitalWrite(LED78, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(1, LOW);
buttonState = digitalRead(buttonPin);
if (buttonState != lastButtonState) {
// the button was just pressed
if (buttonState == HIGH) {
startPressed = millis();
}
else {
endPressed = millis();
timeHold = endPressed - startPressed;
if (timeHold >= 2000 ) {
Mode2();
} lastButtonState = buttonState;
}
}
}
else if (mode == 3) { //Modus 3 = 78
digitalWrite(LED78, HIGH);
digitalWrite(LED45, LOW);
digitalWrite(LED33, LOW);
digitalWrite(4, HIGH);
digitalWrite(3, LOW);
digitalWrite(1, LOW);
buttonState = digitalRead(buttonPin);
if (buttonState != lastButtonState) {
if (buttonState == HIGH) {
startPressed = millis();
}
else {
endPressed = millis();
timeHold = endPressed - startPressed;
if (timeHold >= 2000 ) {
Mode2();
}
lastButtonState = buttonState;
}
lastButtonState = buttonState;
}
}
}
void Mode2() {
attachInterrupt(digitalPinToInterrupt(2), addToMode2, FALLING);
switch (mode2)
{
case 1:
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
digitalWrite(A0, LOW);
digitalWrite(A1, LOW);
digitalWrite(A2, LOW);
break;
case 2:
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
digitalWrite(13, HIGH);
digitalWrite(12, LOW);
digitalWrite(A0, LOW);
digitalWrite(A1, LOW);
digitalWrite(A2, LOW);
break;
case 3:
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(A0, HIGH);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
digitalWrite(A1, LOW);
digitalWrite(A2, LOW);
break;
case 4:
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(A2, HIGH);
digitalWrite(A0, LOW);
digitalWrite(A1, LOW);
digitalWrite(13, LOW);
digitalWrite(12, LOW);
break;
case 5:
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(A1, HIGH);
digitalWrite(A2, LOW);
digitalWrite(12, LOW);
digitalWrite(A0, LOW);
digitalWrite(13, LOW);
break;
}
}
Moderator edit:
</mark> <mark>[code]</mark> <mark>
</mark> <mark>[/code]</mark> <mark>
tags added.