Dmit hast du Recht. Das mit den Klammern (), und Semikolons hab ich auch noch nicht begriffen. Habt ihr da nen Tip wo das verständlich erklärt wird?
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int messungPin1 = HIGH;
int messungPin1Alt = HIGH;
byte encoderWert = 0; // -1 ( eins weniger als 0 ) == 255
const byte hal = 3;
const byte encoderPinA = 10; // Phase A vom Drehencoder
const byte encoderPinB = 11; // Phase B vom Drehencoder
const byte tasterEnter = 12; // Pin an dem der Encoder Taster angeschlossen ist
int wertSpeichern = 0; // gespeicherter Encoderwert
int encoderGedrueckt = 0; // Statusspeicher ob Encodertaster betätigt wurde
int encoderTaster = HIGH; // Taster im Encoder
int gleisAlt = 0; // Scheibe Position alt
int gleisNeu = 0; // Position welche die Scheibe anfahren soll
bool enter = false; // Bestätigung das der Encoder gedrückt wurde
int schritte =0; // Schritte die deer Motor (Hallsensor betätigt) zurücklegen muss
unsigned long encoderDruckzeit; // Zeit wann der Encodertaster betätigt wurde
unsigned long entprellZeit = 200; // Zeit die nach der betätigung eines Tasters gewartet wird
void setup() {
pinMode(encoderPinA, INPUT);
pinMode(encoderPinB, INPUT);
pinMode(tasterEnter, INPUT);
pinMode(hal, INPUT);
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Encoder");
lcd.setCursor(0, 1);
lcd.print("Test");
delay (2000);
lcd.clear();
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Wert");
lcd.setCursor(0, 1);
lcd.print(encoderWert);
}
void loop() {
messungPin1 = digitalRead(encoderPinA);
if ((messungPin1 == LOW) && (messungPin1Alt == HIGH)) {
if (digitalRead(encoderPinB) == HIGH) {
if (encoderWert < 24) encoderWert++ ;
} else {
if (encoderWert > 1) encoderWert-- ;
}
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Wert");
lcd.setCursor(0, 1);
lcd.print(encoderWert);
}
{
encoderTaster = digitalRead(tasterEnter);
if (encoderTaster == LOW)
{
encoderDruckzeit = millis();
encoderGedrueckt = 1;
}
if ((millis() - encoderDruckzeit > entprellZeit) && encoderGedrueckt ==1) {
wertSpeichern = encoderWert;
Serial.println(wertSpeichern);
encoderGedrueckt=0;
enter = true;
}
if (enter == true) {
gleisNeu = wertSpeichern;
schritte = gleisNeu - gleisAlt;
Serial.print ("benoetigte Schritte ");
Serial.println(schritte);
//gleisAlt = wertSpeichern;
Serial.println(gleisNeu);
Serial.println(gleisAlt);
Serial.println(enter);
}
if ((gleisNeu != gleisAlt) && (enter == true)) {
while (schritte !=0) {
if (digitalRead (hal) == LOW);{
schritte--;
Serial.println("Schritte");
Serial.println(schritte);
delay(2000);
enter = false;
gleisAlt = wertSpeichern;
}
}
}
//if ((schritte >12)&& (enter== true)) {
// Serial.println("rechts");
//enter = false;
}
// else {
// Serial.println("links");
//enter = false;
//}
//}
messungPin1Alt = messungPin1;
}
Hab den Code noch mal bearbeitet.