Arduino rotationsenkoder
Tjena!
Inför ett nytt projekt här hemma så har jag beslutat mig för att använda mig utav en arduino istället för en raspberry pi som jag är van att jobba med.
Jag har fått fart på allting egentligen utom min rotationsenkoder.
Jag har köpt ett par av denna typ: Rotationsenkoder
Med hjälp av följande bild har jag knåpat ihop lite kod som jag tycker borde fungera men det gör det inte.
Min kod för att provköra enkodern:
const int rotaryA = 24;
const int rotaryB = 25;
int rotaryAState;
int rotaryALastState;
void setup() {
pinMode(rotaryA, INPUT_PULLUP);
pinMode(rotaryB, INPUT_PULLUP);
Serial.begin(9600);
rotaryALastState = digitalRead(rotaryA);
}
void loop() {
rotaryAState = digitalRead(rotaryA);
if (rotaryAState != rotaryALastState){
if (rotaryAState == digitalRead(rotaryB)){
Serial.print(1);
}else{
Serial.print(0);
}
}
rotaryALastState = rotaryAState;
}
Enkodern har 3 stift varav jag kopplat mittenstiftet till GND, de övriga två är till port24 och port25 på arduinon.
Mitt problem är att jag får väldigt konstig print. Om allt vore rätt så borde jag få en print som ser ut typ:
1111111111111111111111111 när jag vrider åt ena hållet och
0000000000000000000000000 när jag vrider åt andra.
Printsen jag får ser ut på följande sätt.
Vridning medurs:
1010101010111010100010101010101010101010101010111000100010101010101010001000101010001010
Vridning moturs:
1110101111111111111111111111111110111111111111101111111111111110111111111111111110111111111111101111111111111111
Så min fråga är egentligen om någon ser något uppenbart fel i koden eller har lite egen kod att dela med sig?
Arduinon jag har är en Mega 2560(borde inte spela någon roll).
Bara gammalt skräp...