Code :

#include <Adafruit_PWMServoDriver.h>

Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver( 0x40 ); // Utilisation de l'adresse par défaut 0x40 du Breakout.
#define SERVOMIN 150 // La longueur d'impulsion 'minimale' (valeur du compteur, max 4096)
#define SERVOMAX 600 // La longueur d'impulsion 'maximale' (valeur du compteur, max 4096)
int num_servo[12]={ 0, 1, 2, 4, 5, 6, 8, 9, 10, 12, 13, 14};
int pos_servo[12]={ 60, 115, 150, 110, 90, 55, 50, 115, 185, 150, 75, 40};
int i;
void setup()
{
pwm.begin();
pwm.setPWMFreq(60); // Les servo sont mis-à-jour à ~60 Hz
pos_droite();
delay(1000);
pos_basse();
delay(1000);
pos_milieu();
delay(1000);
tourne_horaire();
delay(1000);
pos_basse();
delay(1000);
pos_droite();
}
void mouv()
{
for (i = 0; i < 12; i = i + 1)
{
pwm.setPWM(num_servo[i], 0, map( pos_servo[i], 0, 180, SERVOMIN, SERVOMAX ));
}
}
void pos_droite()
{
pos_servo[0] = 60;
pos_servo[1] = 115;
pos_servo[2] = 150;
pos_servo[3] = 110;
pos_servo[4] = 90;
pos_servo[5] = 55;
pos_servo[6] = 50;
pos_servo[7] = 115;
pos_servo[8] = 185;
pos_servo[9] = 150;
pos_servo[10] = 75;
pos_servo[11] = 40;
mouv();
}
void pos_basse()
{
pos_servo[0] = 110;
pos_servo[1] = 50;
pos_servo[2] = 0;
pos_servo[3] = 60;
pos_servo[4] = 160;
pos_servo[5] = 210;
pos_servo[6] = 100;
pos_servo[7] = 50;
pos_servo[8] = 0;
pos_servo[9] = 90;
pos_servo[10] = 150;
pos_servo[11] = 200;
mouv();
}
void pos_milieu()
{
pos_servo[0] = 110;
pos_servo[1] = 125;
pos_servo[2] = 60;
pos_servo[3] = 60;
pos_servo[4] = 85;
pos_servo[5] = 140;
pos_servo[6] = 100;
pos_servo[7] = 120;
pos_servo[8] = 80;
pos_servo[9] = 90;
pos_servo[10] = 80;
pos_servo[11] = 130;
mouv();
}
void pos_haute()
{
pos_servo[0] = 110;
pos_servo[1] = 195;
pos_servo[2] = 120;
pos_servo[3] = 60;
pos_servo[4] = 15;
pos_servo[5] = 75;
pos_servo[6] = 100;
pos_servo[7] = 190;
pos_servo[8] = 160;
pos_servo[9] = 90;
pos_servo[10] = 10;
pos_servo[11] = 60;
mouv();
}
void tourne_horaire()
{
pos_servo[0]= 165;
pos_servo[3]= 145;
pos_servo[6]= 150;
pos_servo[9]= 190;
mouv();
delay(1000);
pos_servo[0]= 15;
pos_servo[3]= 10;
pos_servo[6]= 10;
pos_servo[9]= 45;
mouv();
delay(1000);
pos_milieu();
}
void loop()
{
}

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *