Code: Alles auswählen
#define RELAY1 13
const int buttonPin = 2;
void setup() {
Serial.begin(9600);
pinMode(buttonPin, INPUT);
pinMode(RELAY1, OUTPUT);
digitalWrite(buttonPin, HIGH); // aktiviert den Pull- Up- Widerstand
}
int Key = 0, LastKey = 0, EnableLoop = 0, OnDelayCounter = 500, OffDelayCounter = 0, OutputState = 0;
void loop() {
Key = GetKey();
if (Key != LastKey)
{
LastKey = Key;
if (Key)
{
//Serial.print(Key);
if (!EnableLoop)
{
EnableLoop = 1;
}
else
{
EnableLoop = 0;
}
}
delay(100);
}
////////////////////
if ( EnableLoop )
{
if (!OutputState && !OffDelayCounter)
{
digitalWrite(RELAY1, HIGH); //R1 ON
OutputState = 1;
OnDelayCounter = 500;
}
if (OutputState && !OnDelayCounter)
{
digitalWrite(RELAY1, LOW); //R1 ON
OutputState = 0;
OffDelayCounter = 500;
}
if (OnDelayCounter) OnDelayCounter--; delay(1);
if (OffDelayCounter) OffDelayCounter--; delay(1);
}
else
{
digitalWrite(RELAY1, LOW);
}
}
int GetKey(void)
{
if ( digitalRead(buttonPin))
{
return 0;
}
else
{
return 1;
}
}
[Edit] War noch ein Bug drin