Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
electronics:zss600-001-100b-5l [2019-03-31 14:03] – Martin Prochnow | electronics:zss600-001-100b-5l [2019-03-31 20:20] (aktuell) – [Code] 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 '' | ||
+ | |||
+ | 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 41: | Zeile 47: | ||
pinMode(pinB, | pinMode(pinB, | ||
- | attachInterrupt(1, | + | attachInterrupt(1, |
Serial.begin (9600); | Serial.begin (9600); | ||
Zeile 54: | Zeile 60: | ||
} | } | ||
- | void doEncoderA() { | + | void doEncoder() { |
if (micros() - debounceLast > debounceThreshold) { | if (micros() - debounceLast > debounceThreshold) { | ||
debounceLast = micros(); | debounceLast = micros(); | ||
Zeile 69: | Zeile 75: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | < | ||
+ | </ | ||
{{tag> | {{tag> |