Hallo zusammen,
wie der Titel schon sagt, ich versuche folgenden Code umzubauen,
dass ich mit dem einen Taster meine LED an/aus schalten kann und mit dem zweiten Taster auf einen Wert dimmen kann.
Leider hatte ich bislang nur Fehlschläge.
Das an/aus kapiere ich nur irgendwie komme ich beim Dimmen nicht weiter.
Meine Tests hatten schon ergeben, dass ich statt "HIGH" und "LOW" auch einen Zahlenwert für die Helligkeit angeben kann.
Leider fehlt mehr der Ansatz, wo ich bei Taster 2 diesen Wert einstellen kann.
Ich bekomme immer nur an/aus hin.
Könnt Ihr mir da weiter helfen?
Danke und Gruß,
Chris
//lib
#include <Bounce2.h>
//variablen deklarieren
#define taster_1 8 //PIN 8 (Digital) AN
#define taster_2 7 //PIN 7 (Digital) AUS
#define ausgang 6 //PIN 6 onboard led zum testen
int t1_old = 0;
int t2_old = 0;
//bounce instancieren
Bounce debouncer_t1 = Bounce();
Bounce debouncer_t2 = Bounce();
void setup() {
Serial.begin(9600);
pinMode(taster_1, INPUT); //Taster 1
pinMode(taster_2, INPUT); //Taster 2
pinMode(ausgang,OUTPUT); //Relay Ausgang
digitalWrite(ausgang,HIGH); //Default Wert nach PowerOn
//debounce
debouncer_t1.attach(taster_1);
debouncer_t1.interval(5);
debouncer_t2.attach(taster_2);
debouncer_t2.interval(10);
}
// the loop
void loop() {
//delay(5000); //delay zum debugen
debouncer_t1.update();
debouncer_t2.update();
int t1_stat = debouncer_t1.read();
int t2_stat = debouncer_t2.read();
int ausg_stat = digitalRead(ausgang);
//get informations
Serial.println(" ");
Serial.print("ausgang= ");
Serial.println(ausg_stat);
Serial.print("taster1u2= ");
Serial.print(t1_stat );
Serial.println(t2_stat);
//Zustände des Ausgang (zu Relay) behandeln
switch (ausg_stat){
case HIGH: //LICHT IST EIN
Serial.println("Licht ist an");
if ((t1_stat == HIGH) && (t1_old != t1_stat)){ //Taster1 - ausschalten
digitalWrite(ausgang,LOW);
t1_old = HIGH;
}
else{
if ((t1_stat == LOW) && (t1_old = HIGH)){ //Taster1 - do nothing
t1_old = LOW;
}
}
if ((t2_stat == HIGH) && (t2_old != t2_stat)){ //Taster2 - ausschalten
digitalWrite(ausgang,LOW);
t2_old = HIGH;
}
else{
if ((t2_stat == LOW) && (t2_old = HIGH)){ //Taster2 - do nothing
t2_old = LOW;
}
}
//delay(1000);
break;
case LOW: //LICHT IST AUS
Serial.println("Licht ist aus");
if ((t1_stat == HIGH) && (t1_old != t1_stat)){ //Taster1 - einschalten
digitalWrite(ausgang,HIGH);
t1_old = HIGH;
}
else{
if ((t1_stat == LOW) && (t1_old = HIGH)){ //Taster1 - do nothing
t1_old = LOW;
}
}
if ((t2_stat == HIGH) && (t2_old != t2_stat)){ //Taster2 - einschalten
digitalWrite(ausgang,HIGH);
t2_old = HIGH;
}
else{
if ((t2_stat == LOW) && (t2_old = HIGH)){ //Taster2 - do nothing
t2_old = LOW;
}
}
//delay(1000);
break;
default:
Serial.println("nothing to do and PANIC");
//delay(1000);
break;
}
//delay(1000);
}