const uint8_t Taster_Hoch = 4;
const uint8_t Taster_Runter = 5;
const uint8_t Motor_Hoch = 6;
const uint8_t Motor_Runter = 7;
const uint8_t Motor_Start = 9;
bool Taster_Runter_Neu = LOW;
bool Taster_Runter_Alt = LOW;
bool Taster_Hoch_Neu = LOW;
bool Taster_Hoch_Alt = LOW;
bool Motor_Ein = false;
void setup() {
pinMode(Taster_Hoch, INPUT_PULLUP);
pinMode(Taster_Runter, INPUT_PULLUP);
pinMode(Motor_Hoch, OUTPUT);
pinMode(Motor_Runter, OUTPUT);
pinMode(Motor_Start, OUTPUT);
Serial.begin(9600);
}
void loop() {
Taster_Runter_Neu = digitalRead(Taster_Runter);
Taster_Hoch_Neu = digitalRead(Taster_Hoch);
if ((Taster_Hoch_Neu != Taster_Hoch_Alt) && (Motor_Ein == false)) {
delay(50);
if (Taster_Hoch_Neu == LOW) {
digitalWrite(Motor_Hoch, HIGH);
digitalWrite(Motor_Start, HIGH);
Motor_Ein = true;
Serial.println(F("Motor fährt Hoch"));
}
if ((Taster_Hoch_Neu != Taster_Hoch_Alt) && (Motor_Ein == true)) {
if (Taster_Hoch_Neu == LOW) {
digitalWrite(Motor_Hoch, LOW);
digitalWrite(Motor_Start, LOW);
Motor_Ein = false;
Serial.println(F("Motor gestoppt"));
}
}
}
if ((Taster_Runter_Neu != Taster_Runter_Alt) && (Motor_Ein == false)) {
delay(50);
if (Taster_Runter_Neu == LOW) {
digitalWrite(Motor_Runter, HIGH);
digitalWrite(Motor_Start, HIGH);
Motor_Ein =true;
Serial.println(F("Motor fährt runter"));
}
if ((Taster_Runter_Neu != Taster_Runter_Alt) && (Motor_Ein == true)) {
if (Taster_Runter_Neu == LOW) {
digitalWrite(Motor_Runter, LOW);
digitalWrite(Motor_Start, LOW);
Motor_Ein = false;
Serial.println(F("Motor gestoppt"));
}
}
}
Taster_Hoch_Alt = Taster_Hoch_Neu;
Taster_Runter_Alt = Taster_Runter_Neu;
}
Hallo bräuchte mal Ideen hier bei meinem Programm.
Das ganze soll eine Rolladensteuerung dartsellen. Wenn ich den Taster einmal drücke soll der Motor solange laufen bis ich ihn erneut betätige. Das ganze sowohl für Hoch und auch Runter.
Nur habe ich aktuell noch das Problem, dass der Motor direkt beim anlaufen wieder gestoppt wird.