Last change
on this file since 1173 was
1173,
checked in by heribert, 7 years ago
|
Encoder-Sketch nochmals überarbeitet
|
File size:
1.1 KB
|
Rev | Line | |
---|
[1171] | 1 | /* |
---|
[1173] | 2 | * Rotary-Encoder Sketch mit Interrupt |
---|
| 3 | * beachte: Bei schnellem Drehen verlangsamt der Serielle-Monitor den Sketch! |
---|
| 4 | * Wenn die 7-Segment-Anzeige eingebaut ist, solltest du den SM deaktivieren. |
---|
| 5 | * Wenn du den Button (Switch) zum Rueckstellen ins Programm eingebaust, musst |
---|
| 6 | * du den INPUT mit "PULLUP" versehen! |
---|
[1171] | 7 | */ |
---|
| 8 | |
---|
[1173] | 9 | #define encoderPinA 2 // "#define" ist eine einfache Methode, um Pins festzulegen |
---|
| 10 | #define encoderPinB 3 |
---|
[1171] | 11 | |
---|
[1173] | 12 | volatile int encoderPos = 0; // "volatile" (flüchtig), siehe Aufgabenstellung |
---|
[1171] | 13 | |
---|
| 14 | void setup() { |
---|
| 15 | |
---|
[1173] | 16 | pinMode(encoderPinA, INPUT); |
---|
| 17 | pinMode(encoderPinB, INPUT); |
---|
[1172] | 18 | |
---|
[1173] | 19 | attachInterrupt(0, doEncoder, CHANGE); // Interrupt Nr. 0 aktivieren, beobachtet durch Pin 2 |
---|
[1171] | 20 | Serial.begin (9600); |
---|
[1173] | 21 | Serial.println("Start des Programms"); // Beliebiger Text, wird einmal im SM angezeigt |
---|
[1171] | 22 | } |
---|
| 23 | |
---|
| 24 | void loop(){ |
---|
[1173] | 25 | } |
---|
[1171] | 26 | |
---|
| 27 | void doEncoder() { |
---|
[1173] | 28 | |
---|
| 29 | if (digitalRead(encoderPinA) == digitalRead(encoderPinB)) { |
---|
| 30 | encoderPos++; |
---|
[1172] | 31 | } else { |
---|
[1173] | 32 | encoderPos--; // Erklaerungen: Siehe Extra-Blatt |
---|
[1171] | 33 | } |
---|
[1173] | 34 | Serial.print(" "); |
---|
| 35 | Serial.println (encoderPos); |
---|
[1171] | 36 | } |
---|
| 37 | |
---|
[1172] | 38 | |
---|
[1171] | 39 | |
---|
Note: See
TracBrowser
for help on using the repository browser.