Intr-un articol mai vechi am folosi un servomotor impreuna cu Arduino. Acum vom incerca sa folosim 2 servomotoare.

Conectarea celor 2 motoare este simpla, alimentarea se face cu +5V iar comanda fiecarui motor o vom da de pe iesirile digitale 2 si 3 ale Arduino.

Servomotoarele folosite sunt SG90. Cele 3 terminale ale fiecarui servomotor se vor conecta in acest mod:

Servo        ---     Arduino

Rosu          -      +5V

Maro          -      GND

Galben       -      D2 sau D3

Sketchul folosit este urmatorul:

#include <Servo.h>
Servo servo1;
Servo servo2;
int motor1 = 2;
int motor2 = 3;
int x, y;

void setup() {
  servo1.attach(motor1);
  servo2.attach(motor2);
  servo1.write(0);
  servo2.write(0);
}

void loop() {
  for (x = 0; x < 180; x++) {
    servo1.write(x);
    delay(10);
  }
  delay(1000);
  for (x = 180; x > 0; x--) {
    servo1.write(x);
    delay(10);
  }
  delay(2000);
  for (y = 0; y < 180; y++) {
    servo2.write(y);
    delay(10);
  }
  delay(1000);
  for (y = 180; y > 0; y--) {
    servo2.write(y);
    delay(10);
  }
  delay(2000);
}

 Mai departe vom afisa starea celor 2 servomotoare pe un display LCD. Acesta se conecteaza pe interfata I2C exact ca in acest articol.

Sketchul folosit in acest montaj este cel de mai jos:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3E, 20, 4);
#include <Servo.h>
Servo servo1;
Servo servo2;
int motor1 = 2;
int motor2 = 3;
int x, y;
byte celsius[] = {
  B00110,
  B01001,
  B01001,
  B00110,
  B00000,
  B00000,
  B00000,
  B00000
};

void setup() {
  lcd.begin();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("2 servomotoare");
  lcd.setCursor(0, 1);
  lcd.print("si Arduino Mega");
  lcd.setCursor(0, 3);
  lcd.print("electronicstore.ro");
  servo1.attach(motor1);
  servo2.attach(motor2);
  servo1.write(0);
  servo2.write(0);
  lcd.createChar(0, celsius);
}

void loop() {
  lcd.clear();
  lcd.setCursor(0, 3);
  lcd.print("electronicstore.ro");
  delay(500);
  lcd.setCursor(0, 0);
  lcd.print("Servo 1: ");
  for (x = 0; x <= 180; x++) {
    servo1.write(x);
    lcd.setCursor(9, 0);
    lcd.print(x);
    lcd.write(byte(0));
    delay(50);
  }
  delay(1000);
  for (x = 180; x >= 0; x--) {
    servo1.write(x);
    lcd.setCursor(9, 0);
    lcd.print("    ");
    lcd.setCursor(9, 0);
    lcd.print(x);
    lcd.write(byte(0));
    delay(50);
  }
  delay(2000);
  lcd.setCursor(0, 2);
  lcd.print("Servo 2: ");
  for (y = 0; y <= 180; y++) {
    servo2.write(y);
    lcd.setCursor(9, 2);
    lcd.print(y);
    lcd.write(byte(0));
    delay(50);
  }
  delay(1000);
  for (y = 180; y >= 0; y--) {
    servo2.write(y);
    lcd.setCursor(9, 2);
    lcd.print("    ");
    lcd.setCursor(9, 2);
    lcd.print(y);
    lcd.write(byte(0));
    delay(50);
  }
  delay(2000);
  lcd.setCursor(0, 0);
  lcd.print("                    ");
  lcd.setCursor(0, 2);
  lcd.print("                    ");
  lcd.setCursor(0, 0);
  lcd.print("Setare servomotor 1");
  lcd.setCursor(0, 1);
  lcd.print(" la 45");
  lcd.write(byte(0));
  servo1.write(45);
  delay(2000);
  lcd.setCursor(0, 1);
  lcd.print("                    ");
  lcd.setCursor(0, 1);
  lcd.print(" la 90");
  lcd.write(byte(0));
  servo1.write(90);
  delay(2000);
  lcd.setCursor(0, 1);
  lcd.print("                    ");
  lcd.setCursor(0, 1);
  lcd.print(" la 135");
  lcd.write(byte(0));
  servo1.write(135);
  delay(2000);
  lcd.setCursor(0, 1);
  lcd.print("                    ");
  lcd.setCursor(0, 1);
  lcd.print(" la 180");
  lcd.write(byte(0));
  servo1.write(180);
  delay(2000);
  lcd.setCursor(0, 1);
  lcd.print("                    ");
  lcd.setCursor(0, 1);
  lcd.print(" la 90");
  lcd.write(byte(0));
  servo1.write(90);
  delay(2000);
  lcd.setCursor(0, 1);
  lcd.print("                    ");
  lcd.setCursor(0, 1);
  lcd.print(" la 0");
  lcd.write(byte(0));
  servo1.write(0);
  delay(2000);
  lcd.setCursor(0, 0);
  lcd.print("Setare servomotor 2");
  lcd.setCursor(0, 1);
  lcd.print(" la 45");
  lcd.write(byte(0));
  servo2.write(45);
  delay(2000);
  lcd.setCursor(0, 1);
  lcd.print("                    ");
  lcd.setCursor(0, 1);
  lcd.print(" la 90");
  lcd.write(byte(0));
  servo2.write(90);
  delay(2000);
  lcd.setCursor(0, 1);
  lcd.print("                    ");
  lcd.setCursor(0, 1);
  lcd.print(" la 135");
  lcd.write(byte(0));
  servo2.write(135);
  delay(2000);
  lcd.setCursor(0, 1);
  lcd.print("                    ");
  lcd.setCursor(0, 1);
  lcd.print(" la 180");
  lcd.write(byte(0));
  servo2.write(180);
  delay(2000);
  lcd.setCursor(0, 1);
  lcd.print("                    ");
  lcd.setCursor(0, 1);
  lcd.print(" la 90");
  lcd.write(byte(0));
  servo2.write(90);
  delay(2000);
  lcd.setCursor(0, 1);
  lcd.print("                    ");
  lcd.setCursor(0, 1);
  lcd.print(" la 0");
  lcd.write(byte(0));
  servo2.write(0);
  delay(2000);
}

Un filmulet cu montajele functionale este mai jos:

 

 

Nu sunt comentarii

Acest website foloseste cookie-uri pentru o experienta placuta in timpul navigarii.