Proiect: Braț Robotic Simplu cu Servo-uri
Un proiect clasic și distractiv. Vom învăța cum să controlăm mai multe motoare servo pentru a construi un braț robotic simplu pe care îl putem programa să execute o secvență de mișcări.
Componente Necesare
- 1x Placă Arduino
- 2-3x Motoare Servo (de ex. SG90)
- 1x Kit de șasiu pentru braț robotic (opțional, se poate improviza)
- 1x Sursă de alimentare externă pentru servo-uri (recomandat)
- Fire de legătură și un breadboard
Despre Motoarele Servo
Un motor servo este un tip special de motor care ne permite să controlăm cu precizie unghiul de rotație (de obicei între 0 și 180 de grade). Are 3 fire:
- Roșu: Alimentare (+5V)
- Maro/Negru: Masă (GND)
- Portocaliu/Galben: Semnal (se conectează la un pin PWM al Arduino)
Atenție la Alimentare! Motoarele servo consumă mult curent. Alimentarea mai multor servo-uri direct din placa Arduino poate duce la un comportament instabil. Este recomandat să folosiți o sursă de alimentare externă (de ex. 4 baterii AA) pentru servo-uri, asigurându-vă că legați masa (GND) sursei externe la masa (GND) plăcii Arduino.
Asamblarea Circuitului
Conectați firele de semnal ale servo-urilor la pinii PWM ai Arduino (de ex. ~9 și ~10). Conectați firele de alimentare și masă la sursa externă, legând masa comună la Arduino.
Codul Sursă (Secvență de Mișcări)
Acest cod folosește biblioteca Servo.h (care vine preinstalată cu Arduino IDE) pentru a controla două servo-uri (baza și cleștele) într-o secvență simplă: se rotește, închide cleștele, se rotește înapoi, deschide cleștele.
// Includem biblioteca pentru servo-uri
#include
// Cream obiecte pentru fiecare servo
Servo servoBaza;
Servo servoCleste;
void setup() {
// Atasam servo-urile la pinii PWM
servoBaza.attach(9);
servoCleste.attach(10);
// Aducem servo-urile la pozitia initiala
servoBaza.write(90); // Pozitia de mijloc
servoCleste.write(0); // Deschide clestele
delay(1000);
}
void loop() {
// 1. Se roteste la stanga
servoBaza.write(180);
delay(1000);
// 2. Inchide clestele
servoCleste.write(90);
delay(1000);
// 3. Se roteste la dreapta
servoBaza.write(0);
delay(1000);
// 4. Deschide clestele
servoCleste.write(0);
delay(2000); // Asteapta mai mult inainte de a relua secventa
// 5. Revine la pozitia de mijloc
servoBaza.write(90);
delay(1000);
}