#include <Joystick.h>
int reedPin = 2;
int reversePin = 3;
boolean reedKontakt = false;
boolean reverseKontakt = false;
boolean reedState = false;
long int timeStamp = 0;
long int recentTimeStamp = 0;
long int otherTimeStamp = 0;
int duration = 0;
boolean gateopen = false;
int count = 0;
void setup()
{
Joystick.begin();
Serial.begin(9600);
Serial.println("Trimm dich Rad");
pinMode(reedPin, INPUT);
pinMode(reversePin, INPUT);
}
void loop()
{
reedKontakt = digitalRead(reedPin);
otherTimeStamp = millis();
if((otherTimeStamp - recentTimeStamp) > 600) {
reedKontakt = !reedState;
//Serial.println("WORKAROUND");
}
else {
}
if (reedKontakt != reedState)
{
Serial.println("FEHLER");
if (reedKontakt == HIGH && gateopen)
{
timeStamp = millis();
reverseKontakt = digitalRead(reversePin);
duration = timeStamp - recentTimeStamp;
int speed = 0;
if(duration > 500) {
speed = 0;
Joystick.setYAxis(speed);
}
else {
speed = -127 + (duration / 4);
if(reverseKontakt)
{
speed *= -1;
}
Joystick.setYAxis(speed);
}
gateopen = false;
} else if (reedKontakt == HIGH)
{
gateopen = true;
}
recentTimeStamp = timeStamp;
reedState = reedKontakt;
//Serial.println();
}
}
Comments