Halllo,
Ich nutze auch einen Mechanischen Drehencoder.
Meiner kommt aus dem Conrad und ist mit Kondensatoren entprellt.
Am besten suchst du mal im Conrad nach dem Datenblatt.
Darin stand auch ein Ablauf-Diagramm für Software.
Nach dem habe ich den code gemacht:
Am Besten pollst du die Methode.Code:void CheckEncoder() { encoder.state = readEncoder(); // gibt zwei bits zurück z.b.: 0b10, je nach Status der Encoder-Kanäle uint8_t yy = (encoder.state ^ encoder.state_last); if (((encoder.state & 0b10)>>1) == (encoder.state & 0b01)) { if (yy == 0b01) { //cw encoder.position++; } else if (yy == 0b10) { //ccw encoder.position--; } } else { if (yy == 0b10) { //cw encoder.position++; } else if (yy == 0b01) { //ccw encoder.position--; } } encoder.changed = 1; encoder.state_last = encoder.state; }
MfG Alex







Zitieren

Lesezeichen