Hallo, ich glaube ich habe ein grundsätzliches Problem mit Funktionen.
Ich möchte einen Drehender einen wert hoch und runter regeln lassen.
Aufgebaut Code gesucht....gefunden
Ausprobiert
geht.
das ist der Code
#define encoderPinA A1 // CLK pin of Rotary Enocoder
#define encoderPinB A2 // DT pin of Rotary Enocoder
int encoderPos = 0;
int encoderPinALast = LOW;
int encoderPinANow = LOW;
void setup() {
pinMode (encoderPinA, INPUT_PULLUP);
pinMode (encoderPinB, INPUT_PULLUP);
Serial.begin (9600);
}
void loop() {
encoderPinANow = digitalRead(encoderPinA);
if ((encoderPinALast == HIGH) && (encoderPinANow == LOW)) {
if (digitalRead(encoderPinB) == HIGH) {
encoderPos++;
} else {
encoderPos--;
}
Serial.println(encoderPos);
}
encoderPinALast = encoderPinANow;
}
dann wollte ich diesen code als Funktion weiterverwenden und es geht nichts mehr.
die Idee war das ja die Funktion Encode entweder 1 0 oder nichts zurückgibt und daher sich der wert für Counter ändert.
aber das Serial.print in der Funktion wird nicht mehr gecalled
#define encoderPinA A1 // CLK pin of Rotary Enocoder
#define encoderPinB A2 // DT pin of Rotary Enocoder
int counter = 0;
int encoderPinALast = LOW;
int encoderPinANow = LOW;
void setup() {
pinMode (encoderPinA, INPUT_PULLUP);
pinMode (encoderPinB, INPUT_PULLUP);
Serial.begin (9600);
}
void loop() {
counter=+encode();
}
int encode () {
int encoderPos=0;
encoderPinANow = digitalRead(encoderPinA);
if ((encoderPinALast == HIGH) && (encoderPinANow == LOW)) {
if (digitalRead(encoderPinB) == HIGH) {
encoderPos++;
} else {
encoderPos--;
}
return(encoderPos);
Serial.println(encoderPos);
}
encoderPinALast = encoderPinANow;
}