Hallo zusammen,
habe hier doch noch ein kleines Problem....
Wenn der Button zu lang gedrückt wird, durchläuft es die gesamte Schleife und sendet beide Signale gleichzeit, obwohl der Button 2 nicht gerückt wird!?
Hier nochmal der Code:
Code:
#include <RCSwitch.h>
int led = 5; // LED pin (D1)
int button_1 = 15; // Push Button 1 ist an Pin (D8)
int button_2 = 13; // Push Button 2 ist an Pin (D7)
int zaehler_b1;
int zaehler_b2;
int status;
RCSwitch mySwitch = RCSwitch();
void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT); // LED als Ausgang deklarieren
pinMode(button_1, INPUT); // Button 1 als Eingangssignal deklarieren
pinMode(button_2, INPUT); // Button 2 als Eingangssignal deklarieren
mySwitch.enableTransmit(0); //Daten PIN D3 für das Sender Modul
// Optional Protokol (Standart ist 1)
mySwitch.setProtocol(1);
// Optional - Impulslänge festlegen.
mySwitch.setPulseLength(759);
}
void loop(void)
{
status = digitalRead(button_1);
if (status == 0) // wenn Taste gedrückt ist (pin ist low)
{
zaehler_b1++; // eins hochzaehlen
if (zaehler_b1 == 20) // wurde die Taste mindestens 20ms gedrückt dann
{
/*Status LED geht an*/
digitalWrite(led, HIGH);
/* Binärcode für die Klingel wird gesendet(433MHZ) */
mySwitch.send("000000000");
Serial.println("Signal 1 wurde gesendet");
/*Status LED geht wieder aus*/
digitalWrite(led, LOW);
}
} else zaehler_b1 = 0; // Taste wurde losgelassen, also zaehler auf 0 setzen
status = digitalRead(button_2);
if (status == 0) // wenn Taste gedrückt ist (pin ist low)
{
zaehler_b2++;
if (zaehler_b2 == 20) // wurde die Taste mindestens 20ms gedrückt dann
{
/*Status LED geht an*/
digitalWrite(led, HIGH);
/* Binärcode für die Klingel (433MHZ) */
mySwitch.send("000000000");
Serial.println("Signal 2 wurde gesendet");
/*Status LED geht wieder aus*/
digitalWrite(led, LOW);
}
} else zaehler_b2 = 0; // Taste wurde losgelassen, also zaehler auf 0 setzen
delay(1); // nur 1 Millisekunde warten
}
Vielen Dank für eure Hilfe
Lesezeichen