Changeset 1173 in t29-www
- Timestamp:
- Mar 21, 2017, 8:54:16 AM (6 years ago)
- Location:
- physical-computing
- Files:
-
- 2 deleted
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
physical-computing/encoder-mit-interrupt/encoder-mit-interrupt.ino
r1172 r1173 1 1 /* 2 * Rotary-Encoder Sketch mit Interrupt Nr. 2 3 * beachte: Bei schnellen Vorgaengen verlangsamt der Serielle-Monitor den Sketch! 4 * Wenn der Button (Switch) zum Rueckstellen ins Programm eingebaut wird, muss 5 * man den INPUT mit PULLUP versehen! 6 * 7 * read a rotary encoder with interrupts 8 Encoder hooked up with common to GROUND, 9 encoder0PinA to pin 2, encoder0PinB to pin 3 10 it doesn't matter which encoder pin you use for A or B 11 12 uses Arduino pull-ups on A & B channel outputs 13 turning on the pull-ups saves having to hook up resistors 14 to the A & B channel outputs 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! 15 7 */ 16 8 17 #define encoder 0PinA 218 #define encoder 0PinB 39 #define encoderPinA 2 // "#define" ist eine einfache Methode, um Pins festzulegen 10 #define encoderPinB 3 19 11 20 volatile int encoder 0Pos = 0;12 volatile int encoderPos = 0; // "volatile" (flüchtig), siehe Aufgabenstellung 21 13 22 14 void setup() { 23 15 24 pinMode(encoder 0PinA, INPUT);25 pinMode(encoder 0PinB, INPUT);16 pinMode(encoderPinA, INPUT); 17 pinMode(encoderPinB, INPUT); 26 18 27 attachInterrupt(0, doEncoder, CHANGE); // encoder pin on interrupt 0 - pin 219 attachInterrupt(0, doEncoder, CHANGE); // Interrupt Nr. 0 aktivieren, beobachtet durch Pin 2 28 20 Serial.begin (9600); 29 Serial.println("Start des Programms"); 21 Serial.println("Start des Programms"); // Beliebiger Text, wird einmal im SM angezeigt 30 22 } 31 23 32 24 void loop(){ 25 } 33 26 34 }35 }36 27 void doEncoder() { 37 /* If pinA and pinB are both high or both low, it is spinning 38 * forward. If they're different, it's going backward. 39 */ 40 if (digitalRead(encoder0PinA) == digitalRead(encoder0PinB)) { 41 encoder0Pos++; 28 29 if (digitalRead(encoderPinA) == digitalRead(encoderPinB)) { 30 encoderPos++; 42 31 } else { 43 encoder 0Pos--;32 encoderPos--; // Erklaerungen: Siehe Extra-Blatt 44 33 } 45 46 Serial.println (encoder 0Pos);34 Serial.print(" "); 35 Serial.println (encoderPos); 47 36 } 48 37 -
physical-computing/index.php
r1171 r1173 116 116 <?php $zaun_aes->start(); ?> 117 117 118 <a href="/physical-computing/ph6.pdf"> Physical-Computing Blatt 6 (PDF)</a> <small>Update Version 1.5</small><br>119 <a href="/physical-computing/ph7.pdf"> Physical-Computing Blatt 7 (PDF)</a> <small>Update Version 1.1</small><br>120 118 <a href="/physical-computing/ph8.pdf"> Physical-Computing Blatt 8 (PDF)</a> <small>Update Version 1.3</small><br> 121 119 <a href="/physical-computing/Analysen-3.pdf"> Analysen-3: Manuelles Einlesen in TM1638, LED & KEY</a> <br>
Note: See TracChangeset
for help on using the changeset viewer.