Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Rotary encoder, fırlanarkən hərəkəti və mövqeyi izləyə bilən elektron komponentdir. Rotary encoder, fırlanan enkoder fırlandıqda impuls yarada bilən optik sensorlar istifadə edir. Döner kodlayıcıdan ümumiyyətlə mexaniki və ya robotlu bir hərəkət monitoru olaraq istifadə etmək də ekranda menyu seçimi üçün istifadə edilə bilər. Dönər kodlayıcının mənfi (CW) və müsbət (CCW) fırlanmasını ayırd edə bilməsi üçün iki çıxışı var və eyni zamanda bir düyməyə malikdir.
Addım 1: Rotary Encoderin Pulse Flow
Aşağıdakı fırlanan kodlayıcı tərəfindən yaranan nəbz axını yuxarıdakı şəklə bənzəyir.
Addım 2: Rotary Encoder -in tapılması
İzahat:
- GND GND
- + 5V
- Basıldıqda fırlanan kodlayıcının SW düyməsi
- DT Məlumatları
- CLK Məlumatı 2
DT və ya CLK pinlərindən biri Arduino Uno -nun kəsmə ayağına, ya da DT və CLK -nin hər ikisi də kəsmə pininə bağlanmalıdır.
Addım 3: Şematik
- GND və GND Arduino Uno
- + 5V Arduino Uno
- SW à PIN 4 Arduino Uno
- DT à PIN 3 Arduino Uno
- CLK və PIN2 Arduino Uno
Addım 4: Kod
Növbəti dərsdə, Arduino Uno -nun PİN 2 -si, PİN 3 yalnız adi giriş kimi istifadə olunur.
#decine encoder0PinA 2 #encoder0PinB müəyyən #3 encoder0Btn 4 int encoder0Pos = 0; void setup () {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. çap (btn); Serial.print (""); Serial. çap (valRotary); if (valRotary> lastValRotary) {Serial.print ("CW"); } əgər (valRotary {
Serial.print ("CCW");
} lastValRotary = valRotary; Serial.println (""); gecikmə (250); } void doEncoder () {if (digitalRead (encoder0PinA) == digitalRead (encoder0PinB)) {encoder0Pos ++; } başqa {encoder0Pos--; } valRotary = encoder0Pos/2.5; }
Yuxarıdakı eskizin 10 -cu sətrində, pin 2 Arduino Uno -nun kəsilməsini təmin etmək üçün istifadə olunur. "DoEncoder" funksiyasında fırlanan kodlayıcıdan hesablanır. DT və CLK (Arduino Uno pin kəsmə) dəyəri eynidırsa, "encoder0Pos" dəyişəni artırılacaq / əlavə olunacaq, bu şərtə əlavə olaraq "encoder0Pos" dəyişəninin azalması baş verir.
Addım 5: İzahat
ValRotary dəyəri, işləyən addımların sayının dəyəridir. ValRotary dəyəri, 2.5 -ə bölünən fırlanan sensor kodlayıcı oxu dəyərindən əldə edilir. Testdən 2.5 dəyəri alınır, çünki fırlanan kodlayıcının bir addımı 1 -dən çox ola bilər, buna görə də dəyərə görə 2,5 -ə bölün və oxunan gecikmənin əlavə olunmasına görə.
19 - 25 -ci sətirdə, fırlanan dönər kodlayıcı CW və ya CCW olub olmadığını müəyyən etmək üçün bir proqramdır. 19 - 25 -ci sətirlərin izahı, indiki dönər kodlayıcının oxunuşunun CW olaraq ifadə olunan əvvəlki fırlanan məlumatlardan daha böyük olmasıdır. Halbuki, indiki oxunuş əvvəlki oxunuşdan kiçikdirsə, CCW olaraq göstərilir.
Addım 6: Çıxış
1 = dönmənin basılmadığı zaman başlanğıc düyməsinin dəyəri