Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Rotacijski koder je elektronička komponenta koja može pratiti kretanje i položaj pri rotiranju. Rotacijski davač koristi optičke senzore koji mogu generirati impulse kada se rotacijski davač okreće. Primjena rotacijskog davača obično kao mehanički ili robotski monitor kretanja može se koristiti i za izbor menija na ekranu. Rotacijski davač ima dva izlaza tako da može razlikovati negativnu (CW) i pozitivnu (CCW) rotaciju te također ima jedno dugme.
Korak 1: Impulsni tok rotacijskog davača
Pulsni tok koji generira sljedeći rotacijski davač sličan je gornjoj slici.
Korak 2: Ispis rotacionog davača
Objašnjenje:
- GND GND
- + + 5V
- SW tipka rotacijskog davača kada se pritisne
- DT podaci
- CLK podaci 2
Jedan od DT ili CLK pinova mora biti spojen na prekidnu nogu Arduino Uno, ili su oba DT i CLK spojena na prekidni pin.
Korak 3: Shema
- GND à GND Arduino Uno
- + à + 5V Arduino Uno
- SW za PIN 4 Arduino Uno
- DT na PIN 3 Arduino Uno
- CLK za PIN2 Arduino Uno
Korak 4: Kodirajte
U sljedećem vodiču koji će se koristiti kao prekid je PIN 2 za Arduino Uno, dok se PIN 3 koristi samo kao običan ulaz.
#define encoder0PinA 2 #define encoder0PinB 3 #define encoder0Btn 4 int encoder0Pos = 0; void setup () {Serial.begin (9600); pinMode (encoder0PinA, INPUT_PULLUP); pinMode (encoder0PinB, INPUT_PULLUP); pinMode (enkoder0Btn, INPUT_PULLUP); attachInterrupt (0, doEncoder, CHANGE); } int valRotary, lastValRotary; void loop () {int btn = digitalRead (encoder0Btn); Serial.print (btn); Serial.print (""); Serial.print (valRotary); if (valRotary> lastValRotary) {Serial.print ("CW"); } if (valRotary {
Serial.print ("CCW");
} lastValRotary = valRotary; Serial.println (""); kašnjenje (250); } void doEncoder () {if (digitalRead (encoder0PinA) == digitalRead (encoder0PinB)) {encoder0Pos ++; } else {encoder0Pos--; } valRotary = encoder0Pos/2.5; }
U retku 10 gornje skice koristi se za omogućavanje prekida pina 2 Arduino Uno. U "doEncoder" funkcija se računa iz rotacijskog davača. Ako je vrijednost DT i CLK (prekid pinova Arduino Uno -a) ista, tada će se varijabla "encoder0Pos" povećati / dodati, osim tog uvjeta, varijabla "encoder0Pos" se smanjuje.
Korak 5: Objašnjenje
ValRotary value je vrijednost broja koraka koji su pokrenuti. ValRotary vrijednost dobiva se iz očitane vrijednosti davača rotacijskog senzora podijeljene sa 2,5. Testiranjem se dobiva vrijednost 2,5, budući da jedan korak rotacijskog davača može premašiti 1, pa ga podijelite s 2,5 za njegovu vrijednost u skladu s korakom i sabiranjem kašnjenja čitanja.
Dok je na linijama 19 - 25 program za utvrđivanje je li rotacijski rotacijski davač CW ili CCW. Objašnjenje redova 19 - 25 je kada je trenutno očitanje rotacijskog davača veće od prethodnih podataka rotacije koji su tada izraženi kao CW. Dok je trenutno očitanje manje od prethodnog očitanja, onda se navodi kao CCW.
Korak 6: Izlaz
1 = vrednost dugmeta za pokretanje rotacionog tastera kada nije pritisnut