Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Rotační kodér je elektronická součástka schopná sledovat pohyb a polohu při otáčení. Rotační kodér využívá optické senzory, které mohou generovat impulsy při otáčení rotačního kodéru. Pro výběr nabídky na displeji lze také použít aplikaci rotačního kodéru obvykle jako mechanický nebo robotický monitor pohybu. Rotační kodér má dva výstupy, takže dokáže rozlišit mezi negativní (CW) a pozitivní (CCW) rotaci a má také jediné tlačítko.
Krok 1: Pulzní tok rotačního kodéru
Pulzní tok generovaný následujícím rotačním kodérem je jako na obrázku výše.
Krok 2: Pinout rotačního kodéru
Vysvětlení:
- GND GND
- + + 5V
- Tlačítko SW rotačního kodéru při stisknutí
- Data DT
- Data CLK 2
Jeden z pinů DT nebo CLK musí být připojen k patce přerušení Arduino Uno, nebo oba DT a CLK jsou připojeny k kolíku přerušení.
Krok 3: Schéma
- GND à GND Arduino Uno
- + à + 5V Arduino Uno
- SW à PIN 4 Arduino Uno
- DT à PIN 3 Arduino Uno
- CLK à PIN2 Arduino Uno
Krok 4: Kód
V následujícím tutoriálu, který bude použit jako přerušení, je PIN 2 Arduino Uno, zatímco PIN 3 se používá pouze jako běžný vstup.
#definovat kodér0PinA 2 #definovat kodér0PinB 3 #definovat kodér0Btn 4 int kodér0Pos = 0; neplatné nastavení () {Serial.begin (9600); pinMode (encoder0PinA, INPUT_PULLUP); pinMode (encoder0PinB, INPUT_PULLUP); pinMode (encoder0Btn, 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 (""); zpoždění (250); } void doEncoder () {if (digitalRead (encoder0PinA) == digitalRead (encoder0PinB)) {encoder0Pos ++; } else {encoder0Pos--; } valRotary = kodér0Pos/2.5; }
V řádku 10 náčrtu výše se používá k povolení přerušení pin 2 Arduino Uno. Ve funkci "doEncoder" se vypočítává z rotačního kodéru. Pokud je hodnota DT a CLK (přerušení pinu Arduino Uno) stejná, pak bude proměnná „encoder0Pos“zvýšena / přidána, kromě této podmínky bude proměnná „encoder0Pos“snížena.
Krok 5: Vysvětlení
Hodnota ValRotary je hodnota počtu kroků, které byly spuštěny. Hodnota ValRotary je získána z hodnoty čtení snímače rotačního snímače děleno 2,5. Z testu se získá hodnota 2,5, protože jeden krok rotačního kodéru může překročit 1, takže jeho hodnotu vydělte 2,5 podle perstepu a také přidání zpoždění čtení.
Zatímco na řádku 19 - 25 je program, který určuje, zda rotační rotační kodér CW nebo CCW. Vysvětlení řádků 19 - 25 je, když je aktuální hodnota rotačního kodéru větší než předchozí rotační data, pak vyjádřená jako CW. Zatímco pokud je aktuální hodnota menší než předchozí, pak je uvedena jako CCW.
Krok 6: Výstup
1 = hodnota startovacího tlačítka rotátoru, pokud nebyl stisknut