WelcomeHere.ro
NIVEL: INTERMEDIAR

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

Schema circuitului pentru braț robotic

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);
}