De la rotire la reactie: cum controlezi un servomotor SG90 cu un encoder si Arduino

De la rotire la reactie: cum controlezi un servomotor SG90 cu un encoder si Arduino

Salutare, sunt Oana de la Bitmi.ro si astazi iti voi arata cum sa construiesti un proiect interactiv in care controlezi un servomotor SG90 cu ajutorul unui encoder rotativ si afisezi totul in timp real pe un ecran OLED. Este un proiect perfect pentru incepatori care vor sa inteleaga cum functioneaza encoderele, servomotoarele si afisajele grafice I2C. 
In acest proiect, encoderul controleaza pozitia unui servomotor SG90 (0-180 de grade), iar la fiecare miscare sau apasare, valorile sunt afisate instant pe ecranul OLED. Ce face acest proiect special este bara grafica dinamica ce se umple in functie de pozitia servo-ului si faptul ca poti schimba pasul de incrementare doar apasand pe encoder.

Despre ecranul OLED 0.96" cu interfata I2C

Afisajul OLED folosit in acest proiect are o rezolutie de 128x64 pixeli si interfata I2C, ceea ce inseamna ca ocupa doar doi pini de pe Arduino: A4 pentru SDA si A5 pentru SCL (in cazul unui Arduino Uno). Contrastul este excelent, afisajul este clar si consuma foarte putina energie, fiind ideal pentru proiecte cu mai multe componente conectate.
 

Despre encoderul rotativ KY-040

Encoderul rotativ functioneaza ca un buton rotativ care trimite semnale digitale catre Arduino. In functie de sensul de rotatie, Arduino va sti daca sa creasca sau sa scada valoarea unghiului. In plus, encoderul are si un buton incorporat care poate fi folosit pentru functii aditionale. In proiectul nostru, il folosim pentru a modifica pasul de incrementare a unghiului: de la 1 grad pana la 30 de grade, in pasi de 5. Cand ajungi la 30 si mai apesi o data, pasul revine la 1.
 

Despre servomotorul SG90 (0-180 grade)

Servomotorul SG90 este foarte popular in proiectele cu Arduino deoarece este mic, usor, eficient si usor de controlat. Se controleaza simplu prin semnal PWM si poate fi pozitionat la unghiuri intre 0 si 180 de grade. In acest proiect, il folosim pentru a demonstra miscarea precisa controlata de un encoder.

Componente necesare
1 x Placa de dezvoltare compatibila Arduino R4 WiFi
1 x Servomotor SG90, 180 grade
1 x Modul encoder rotativ KY-040
1 x Ecran OLED 0.96" cu interfata IIC/I2C
1 x Breadboard 400 puncte
8 fire tata - tata
5 fire tata - mama

Scheme de conectare

Cod sursa

Dupa ce ai realizat circuitul, e timpul sa introduci codul sursa, pentru a descarca codul sursa clic AICI.

Conecteaza placa de dezvoltare compatibila Arduino Uno R4 WiFi la computer folosind portul USB. Apoi, mergi la meniul Tools si selecteaza tipul de placa si portul serial pe care il folosesti (optiunile Board si Port). 

Pentru acest proiect este necesar sa descarci bibliotecile Adafruit GFX Library, Adafruit SSD1306 si Adafruit PWM Servo Driver Library. Pentru a incarca codul pe placa, apasa butonul Upload (simbolul cu sageata spre dreapta). In partea de jos a ferestrei, vei putea urmari mesajele de stare: Compiling Sketch, Uploading si Done. Odata ce incarcarea s-a finalizat cu succes, placa Arduino va incepe sa ruleze codul pe care l-ai incarcat.

Cum functioneaza proiectul 

La pornirea proiectului, servomotorul este pozitionat la 90 de grade. Daca rotesti encoderul in sensul acelor de ceasornic, unghiul servomotorului creste, iar daca rotesti in sens invers, acesta scade. Valoarea curenta a unghiului este afisata numeric in partea de sus a ecranului OLED.

Sub aceasta valoare, apare o bara orizontala care creste proportional cu unghiul servomotorului: de la 0 (bara goala) pana la 180 (bara plina). Bara include marcaje (praguri) vizuale la fiecare 30 de grade (ex: 30, 60, 90...), pentru a oferi o referinta clara despre pozitia curenta. Aceste marcaje apar ca linii subtiri verticale pe bara si ajuta la interpretarea valorii unghiului chiar si fara a citi cifra exacta.

Un indicator text afiseaza si pasul curent (ex: „Pas: 5”), care poate fi modificat prin apasarea encoderului. La fiecare apasare, pasul creste cu 5 grade: de la 1 la 5, 10, 15, 20, 25 si 30. Dupa ce ajunge la 30, urmatoarea apasare reseteaza pasul la 1. Astfel, poti comuta usor intre control fin (1 grad) si miscari mai rapide (30 grade).

Comunicarea dintre toate aceste elemente este continua: orice rotire sau apasare este detectata instant, ecranul se actualizeaza in timp real, iar servo raspunde rapid la noile comenzi. Este o demonstratie clara a modului in care poti construi interfete interactive si precise folosind doar cateva componente accesibile.

Daca ai intrebari sau sugestii, scrie-mi la electronica@bitmi.ro. Trimite-mi poze sau videoclipuri cu proiectele tale – sunt curioasa sa vad ce ai realizat!

Compara produse

Trebuie sa mai adaugi cel putin un produs pentru a compara produse.

A fost adaugat la favorite!

A fost sters din favorite!