Wilkommen im Forum,
ich kenne mich mit Arduino nicht aus, ich programmiere in C.
Du hast aber ein {} zuviel drinnen, was die Variable Toggle macht verstehe ich auch nicht (ist in diesem Programm sinnlos), kommentiere sie aus und schaue was passiert. Wenn du Code postest bitte mit Codetags versehen [ code] dein code [ /code] (Leerzeichen entfernen).
Dann sieht dein Code so aus
Code:
int relayPin = 0; // Relay Currentint ledPin = 3; //Led
int tasterPin = 2;
boolean ButtonPressed = false;
boolean Toggle =false;
int Debounce = 0;
void setup()
{
pinMode(ledPin, OUTPUT); // LED
pinMode(relayPin, OUTPUT); // Relay Current
pinMode(tasterPin, INPUT);
digitalWrite(ledPin, LOW);
digitalWrite(relayPin, LOW);
}
void loop()
{
if (digitalRead(tasterPin) == LOW)
{
Debounce++;
}
else
{
Debounce = 0;
ButtonPressed = false;
Toggle = false;
}
if (Debounce >= 5000)
{
ButtonPressed = true;
}
if (ButtonPressed == true && Toggle == false)
{
Toggle = true;
toggle();
}
}
void toggle()
{
digitalWrite(relayPin, !digitalRead(relayPin));
digitalWrite(ledPin, !digitalRead(ledPin));
delay (4000);
}
Warum du ein Delay von 4s hast verstehe ich auch nicht.
Ich würde in der Loop am Ende ein kurzes Delay einbauen (z.B. 10ms). Dann musst du natürlich das Debounce anpassen. Anschließend zählst du eine Variable hoch (wenn im Standby). Bei erreichen eines bestimmten Wertes änderst du den Zustand der Led. Wenn du die Ausgänge einschaltest setzt du den Ledcounter auf 0. Wenn du das Relays und die Led togglest würde ich nicht die Ausgänge invertieren sondern ein bzw ausschalten. Im Standby kannst du die Led einfach invertieren, da sich einfach der Zustand ändern soll. Der Grund ist das die Led und das Relays gegengleich angesteuert werden kann. Als Beispiel: Im Standby wird die Led eingeschaltet, jetzt drückst du die Taste jetzt wird einfach Relays und Led invertiert, somit ist die Led aus und das Relays ein.
Am Ende der Loop fügst du also noch ein (Pseudocode, du musst das selbst umsetzen)
Code:
if (Standby != true)
{
Ledcounter++
if (Ledcounter >= 99) => bei Delay von 10ms ist die Led ~1s ein und ~1s aus
{
Led invertieren
Ledcounter = 0
}
}
delay 10ms
MfG Hannes
Lesezeichen