// funzt 7.7.2024
// Ziel: ansteuern servo über button mit doppeelfunktio
//von Doppelklick wird wegen Benutzerfreundlichkeit abgeraten
const int TasterPin = 0;
const int LED_Pin = 8;
unsigned long druckanfang = 0;//
unsigned druckende = 0;
unsigned long zeitraum = 0;
unsigned long endstand = 0;
int druck = 0;
void setup()
{
pinMode(LED_Pin, OUTPUT);
pinMode(TasterPin, INPUT_PULLUP);
Serial.begin(115200);
}
void loop()
{ // gelb beginn loop
endstand = 0;
if (digitalRead(TasterPin)==LOW) // der rote taster
{//lila beg
//Serial.print("zeile 26 ");Serial.println(druck );
if ((druck) == 0)
{ // blau beginn druck = 0
druckanfang = millis(); //Serial.print("zeile 29 ");Serial.println(druck);
druck = 1; // beginn des lägeren drrucks
} // blau ende druck 0
if ((druck == 1))
{ // blau beginn druck = 1
//Serial.print("zeile 35 ");Serial.println(druck);
druck = 2; // tastendruck dauert an
}
if ((druck)==2)
{
druck = 4; //erstmals länger gedrückt
//druck = 2;
druckanfang = millis();
}
unsigned long currentMillisPrint = millis();
digitalWrite(LED_Pin, HIGH); // licht an
} // ende low gedrück
else // Beginn tasterpin high, nicht mehr gedr
{
digitalWrite(LED_Pin, LOW); // led aus funzt
druckende = millis();
if ((druck)== 4 )//nur wenn kurz oder lang gedrückt wurde
{
zeitraum = druckende - druckanfang;
digitalWrite(LED_Pin, LOW);
// Serial.print("zeile 65 zeitraum: "); Serial.println(zeitraum );
if (zeitraum > 100)
{
druck = 3;
//Serial.println(zeitraum);
endstand = zeitraum;
}
}
}
if (endstand > 0) // erg ende = 101 muss noch ausgefiltert werden
{
if (endstand > 103 && endstand < 1500) // && = and
{ Serial.print("endstand ");
Serial.println(endstand);
}
endstand = 0;
druck = 2; // 1.7. hier zwecks neumessung wieder initialisieren,
} // ende loop
}