Hi
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); //Hier wäre Es übersichtlicher, wenn man den
//Zahlen sprechende Namen geben würde, um ein
//Anpassen an andere Pins einfacher zu gestallten
int messungPin1 = HIGH;
int messungPin1Alt = HIGH;
byte encoderWert = 0; // -1 ( eins weniger als 0 ) == 255
//int encoderWertA = encoderWert % 24; // 255 % 24 =15 //Wird im Sketch nicht benutzt - wohl nicht angemeckert, da eine Zuweisung stattfindet
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
byte encoderGedrueckt = 0; // Statusspeicher ob Encodertaster betätigt wurde
byte encoderTaster = HIGH; // Taster im Encoder
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);
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 < 23) encoderWert++ ;
} else {
if (encoderWert > 0) 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;
}
} // <-- ???
messungPin1Alt = messungPin1;
}
Compiliert ohne Wqarnungen.
Ich habe mir gestattet, die Pins außerhalb einzustellen und im Code die 'magic numbers' durch sprechende Namen zu ersetzen.
Da sich die Pinzuweisungen wohl während der Laufzeit nicht mehr ändern, sind Diese als const deklariert - der Compiler kann Diese somit fest im Code verbauen - wenn Er mag.
Entfernen unnötiger Leerzeilen und ein STRG+T brachten bessere Lesbarkeit.
Woher hast Du die Klammerung innerhalb loop()? Von mir mit // <-- ?? gekennzeichnet?
Diese Klammerung sollte - überhaupt Nichts - bewirken (lasse mich Da gerne korrigieren)
MfG