#include <AccelStepper.h>
#define ledPin 19
#define limitSwitch 14
#define switchUp 12
#define switchDown 13
struct buttonTime
{
unsigned int pin;
unsigned long startTime;
bool state;
};
buttonTime tasterHoch = {switchUp, 0, false};
buttonTime tasterRunter = {switchDown, 0, false};
//buttonTime tasterRunter = {switchDown, 0, false};
unsigned long switchedTime(buttonTime *pushButton)
{
Serial.print(pushButton->pin);
Serial.print(" State:");
Serial.println(pushButton->state);
if((pushButton->state == false) && (digitalRead(pushButton->pin) == false))
{
pushButton->state = true;
Serial.print(pushButton->pin);
Serial.println(" :state true");
pushButton->startTime = millis();
}else if((pushButton->state == true) && (digitalRead(pushButton->pin) == true))
{
Serial.print(pushButton->pin);
Serial.println(" :Taster losgelassen, startTime = 0");
pushButton->state = false;
pushButton->startTime = 0;
}
if(pushButton->state == true){
Serial.print("state Zeit: ");
Serial.println(millis()-pushButton->startTime);
return (millis()-pushButton->startTime); // Wenn Taster gedrückt, Zeit in milliSekunden zurück geben
}else{
Serial.print(pushButton->pin);
Serial.println(" :switchedTime return 0!");
return 0;
}
}
//unsigned long switchedTime(buttonTime);
void setup()
{
Serial.begin(9600);
Serial.println("Setup Ende");
pinMode(ledPin, OUTPUT);
pinMode(limitSwitch, INPUT); //pullUp Widerstand
pinMode(switchUp, INPUT); //pullUp Widerstand
pinMode(switchDown, INPUT); //pullUp Widerstand
Serial.println("loop() start");
/*
tasterHoch.pin = switchUp;
tasterHoch.startTime = 0;
tasterHoch.state = false;
tasterRunter.pin = switchDown;
tasterRunter.startTime = 0;
tasterRunter.state = false;
*/
}
void loop(){
if(switchedTime(&tasterHoch) > 3000){
digitalWrite(ledPin, HIGH);
//Serial.print(switchedTime(switchUp));
//Serial.print("Tast-Zeit: ");
}
if(switchedTime(&tasterRunter) > 3000){
digitalWrite(ledPin, LOW);
//Serial.print(switchedTime(switchDown));
//Serial.print("Tast-Zeit: ");
}
delay(5000);
}