#include <AccelStepper.h>
#define motorHoch 19
#define motorRunter 5
#define limitSwitchHoch 22
#define limitSwitchRunter 2
#define torTaster 15
bool val_limitSwitchHoch = false;
bool val_limitSwitchRunter = false;
bool val_torTaster = false;
bool val_motorHoch = false;
bool val_motorRunter = false;
bool stateHoch = false;
bool stateRunter = false;
struct buttonTime
{
unsigned int pin;
unsigned long startTime;
bool state;
};
buttonTime tasterHoch = {switchUp, 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;
}
}
void inputPinsRead(){
val_limitSwitchHoch = digitalRead(limitSwitchHoch);
val_limitSwitchRunter = digitalRead(limitSwitchRunter);
val_torTaster = digitalRead(torTaster);
}
void outputPinsWrite(){
digitalWrite(motorHoch, val_motorHoch);
digitalWrite(motorRunter, val_motorRunter);
}
void setup()
{
Serial.begin(9600);
Serial.println("Setup Ende");
pinMode(motorHoch, OUTPUT);
pinMode(motorRunter, OUTPUT);
pinMode(limitSwitchHoch, INPUT_PULLUP); //pullUp Widerstand
pinMode(limitSwitchRunter, INPUT_PULLUP); //pullUp Widerstand
pinMode(torTaster, INPUT_PULLUP); //pullUp Widerstand
Serial.println("loop() start");
}
void loop(){
inputPinsRead();
if(val_torTaster == false){
bool temp = stateHoch;
stateHoch = stateRunter;
stateRunter = stateHoch;
}
if(val_torTaster == false && stateHoch == true && val_limitSwitchHoch == false){
digitalWrite(motorRunter, LOW);
digitalWrite(motorHoch, HIGH);
}else{
digitalWrite(motorHoch, LOW);
}
if(val_torTaster == false && stateRunter == true && val_limitSwitchRunter == false){
digitalWrite(motorHoch, LOW);
digitalWrite(motorRunter, HIGH);
}else{
digitalWrite(motorRunter, LOW);
}
outputPinsWrite();
/*
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);*/
}