Hallo, Kann mir vielleicht jemand helfen mit Inkrementalgeber? Zähler bei rückwärts Rotation zählt , aber startet z.b stand -45 und mit hochzählen fangt bei 45. danke
#include <Servo.h>
Servo servo_X;
String readString;
int n;
int x;
int x_r;
int x_l;
#define X_counter_pin 2
bool item_detected = false;
int X_counter =0;
void setup()
{
Serial.begin(9600);
servo_X.attach(9);
Serial.println("Servo bereit");
Serial.println();
pinMode( X_counter_pin , INPUT);
// delay(3000);
}
void loop()
//_____________Zähler_______________________________
{
int val = digitalRead( X_counter_pin );
if( (item_detected == false) && ( val == 0 ))
{
item_detected = true;
X_counter=x ;
x_r++;
x_l--;
updateCounter();
}
else if( (item_detected == true) && ( val == 1 ))
{
item_detected = false;
}
if ( (n>53)&&(n<82) == (x=x_l) ) ; // Links Drehen serial write 53 schnell, 82 langsam
if ( (n>100)&&(n<131) == (x=x_r) ) ; // Rechts Drehen serial write 100 schnell, 130 langsam
// Stop serial write 90
delay(10);
//__________________360°__Servo Steuerung___________________________________
while (Serial.available())
{
char c = Serial.read(); //gets one byte from serial buffer
readString += c; //makes the string readString
delay(2);
}
if (readString.length() >0)
{
// attach or detach servo if desired
if (readString == "d")
{
while (digitalRead(9)) //delay loop until pin 7 is low
{
}
servo_X.detach(); //detach servo
goto bailout; //jump over writing to servo
}
if (readString == "a")
{
servo_X.attach(9); //reattach servo to pin 7
goto bailout;
}
n = readString.toInt(); //convert readString into a number
if(n >= 500)
{ servo_X.writeMicroseconds(n);
}
else
{
servo_X.write(n);
}
bailout: //reenter code loop
Serial.println(servo_X.read());
readString="";
}
//_______________________________________________________
}
void updateCounter()
{
Serial.print(" Steps ");
Serial.print(X_counter);
Serial.println();
}