Projet

Général

Profil

Tentacule animatronique » 2servo.ino

Jean-Baptiste Bonnemaison, 03/01/2022 13:22

 
/*
Controlling a servo position using a potentiometer (variable resistor)
by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>

modified on 8 Nov 2013
by Scott Fitzgerald
http://www.arduino.cc/en/Tutorial/Knob
*/

#include <Servo.h>

Servo myservo1; // création de l'objet myservo1
Servo myservo2; // création de l'objet myservo2

int pin_servo1 = 6; // Pin 6 sur lequel est branché le servo1 sur l'Arduino si vous utilisez un ESP32 remplacez le 6 par 4 et si vous utilisez un ESP8266 remplacez le 6 par 2
int pin_servo2 = 7; // Pin 7 sur lequel est branché le servo2 sur l'Arduino si vous utilisez un ESP32 remplacez le 6 par 4 et si vous utilisez un ESP8266 remplacez le 6 par 2

int pos = 0; // variable permettant de conserver la position du servo
int angle_initial = 0; //angle initial
int angle_final = 180; //angle final
int increment = 1; //incrément entre chaque position
bool angle_actuel = false;//Envoi sur le port série la position courante du servomoteur

void setup() {
Serial.begin(9600);
while(!Serial){;}
myservo1.attach(pin_servo1); // attache le servo1 au pin spécifié sur l'objet myservo1
myservo2.attach(pin_servo2); // attache le servo2 au pin spécifié sur l'objet myservo2
}

void loop() {
for (pos = angle_initial; pos <= angle_final; pos += increment) { // Déplace le servo de 0 à 180 degréespar pas de 1 degrée
myservo1.write(pos); // Demande au servo de se déplacer à cette position angulaire
myservo2.write(pos); // Demande au servo de se déplacer à cette position angulaire
delay(30); // Attend 30ms entre chaque changement de position
if (angle_actuel) {
Serial.println(myservo1.read());
Serial.println(myservo2.read());
}
}
for (pos = angle_final; pos >= angle_initial; pos -= increment) { // Fait le chemin inverse
myservo1.write(pos);
myservo2.write(pos);
delay(30);
if (angle_actuel) {
Serial.println(myservo1.read());
Serial.println(myservo2.read());
}
}
}
    (1-1/1)