Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
electronics:zss600-001-100b-5l [2019-03-31 14:03] – Martin Prochnow | electronics:zss600-001-100b-5l [2019-03-31 15:47] – [ZSS600-001-100B-5L mit Arduino Pro Micro auslesen] Martin Prochnow | ||
---|---|---|---|
Zeile 13: | Zeile 13: | ||
^ Encoder ^ Arduino Pro Micro ^ | ^ Encoder ^ Arduino Pro Micro ^ | ||
| 0V | GNC | | | 0V | GNC | | ||
- | | Vcc | RAW (5V) | | + | | Vcc | RAW (5V direkt von USB) | |
| A | D2 | | | A | D2 | | ||
| B | D3 | | | B | D3 | | ||
Zeile 21: | Zeile 21: | ||
===== Code ===== | ===== Code ===== | ||
- | Der Encoder | + | Die folgenden beiden Bilder zeigen die Impulsfolge beim Drehen des Encoders (Kanal 1 ist Encoder-Ausgang A, Kanal 2 ist Encoder-Ausgang B). |
+ | |||
+ | {{: | ||
+ | |||
+ | Wenn A auf High steht, muss geprüft werden, ob B auf Low (Drehung im Uhrzeigersinn) oder auch auf High (Drehung gegen den Uhrzeigersinn) steht. | ||
+ | |||
+ | Damit das ganze zügig passiert, wird A mittels Interrupt überwacht. | ||
Der Zustand der Pins wird über das entsprechende Input-Register direkt eingelesen, um mit der Abarbeitung des Interrupt-Handlers so schnell wie möglich fertig zu werden. | Der Zustand der Pins wird über das entsprechende Input-Register direkt eingelesen, um mit der Abarbeitung des Interrupt-Handlers so schnell wie möglich fertig zu werden. | ||
- | Wenn ein anderer Arduino-Typ verwendet werden soll, muss der Teil mit dem Einlesen der Input-Register angepasst werden. Und wahrscheinlich | + | Der Encoder prellt, daher ist ein Debouncing notwendig. ~700µSec hat sich in meinen Tests als guter Wert herausgestellt. |
<sxh cpp> | <sxh cpp> | ||
Zeile 69: | Zeile 75: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | < | ||
+ | </ | ||
{{tag> | {{tag> |