Bonjour,
Merci de ta réponse 
Cependant, je n'arrive toujours pas a diriger le servo... :s
En réalité, j'essaie de créer un bras robot... je dois piloté 6 servos.
Voici mes programmes:
Arduino:
#include <servo.h>
#define INCR 1
// on déclare les servomoteurs comme des variables typées de la librairie servo.h
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;
// angles actuels des servomoteurs
int angle1 = 0;
int angle2 = 180;
int angle3 = 180;
int angle4 = 0;
int angle5 = 90;
int angle6 = 90;
// Vérification de positionnement initial
int initialisation = 0;
// Valeur reçue lors d'un appui sur une touche clavier
char touche;
/**
- Initialisation du programme
*/
void setup()
{
Serial.begin(9600); // Initialise la communication serial
servo1.attach(56); // le servomoteur 1 est sur le pin 56 qui correspond à ANALOG 2
servo1.setMaximumPulse(2300); // 2,35 ms pour la valeur maximum
servo2.attach(59); // le servomoteur 2 est sur le pin 59 qui correspond à ANALOG 5
servo2.setMaximumPulse(2300); // 2,35 ms pour la valeur maximum
servo3.attach(60); // le servomoteur 3 est sur le pin 60 qui correspond à ANALOG 6
servo3.setMaximumPulse(2300); // 2,35 ms pour la valeur maximum
servo4.attach(57); // le servomoteur 4 est sur le pin 57 qui correspond à ANALOG 3
servo4.setMaximumPulse(2300); // 2,35 ms pour la valeur maximum
servo5.attach(61); // le servomoteur 5 est sur le pin 61 qui correspond à ANALOG 7
servo5.setMaximumPulse(2300); // 2,35 ms pour la valeur maximum
servo6.attach(58); // le servomoteur 6 est sur le pin 58 qui correspond à ANALOG 4
servo6.setMaximumPulse(2300); // 2,35 ms pour la valeur maximum
}
/**
- Boucle infinie qui va gérer les mouvements du bras robot
/
void loop()
{
/*
- Mise en position initiale
*/
while (initialisation == 0)
{
if (angle1 > 0) // Calcul de l'angle du servo1
{ angle1 -= INCR; }
if (angle2 < 180) // Calcul de l'angle du servo2
{ angle2 += INCR; }
if (angle3 < 180) // Calcul de l'angle du servo3
{ angle3 += INCR; }
if (angle4 > 0) // Calcul de l'angle du servo4
{ angle4 -= INCR; }
if (angle5 < 135) // Calcul de l'angle du servo5
{ angle5 += INCR; }
if (angle5 > 135)
{ angle5 -= INCR; }
if (angle6 < 45) // Calcul de l'angle servo6
{ angle6 += INCR; }
if (angle6 > 45)
{ angle6 -= INCR; }
if (angle1 == 0 && angle2 == 180 && angle3 == 180 && angle4 == 0 && angle5 == 135 && angle6 == 45) // Vérification des angles des servomoteurs
{ initialisation += INCR; }
delay(10); //
servo1.write(angle1); // Ce bloc permet
servo2.write(angle2); // la mise en
servo3.write(angle3); // position des
servo4.write(angle4); // servomoteurs
servo5.write(angle5); // suivant les
servo6.write(angle6); // angles calculés
Servo::refresh(); //
}
if (Serial.available() > 0) // On detecte un appui sur une touche
{
touche = Serial.read(); // On lit la valeur de la touche appuyée
/**
- Retour en position initiale (touche "R" du clavier)
*/
if (touche == 'R')
{ initialisation = 0; }
/**
- Rotation du bras robot en sens anti-horaire, vers la gauche (touche "K" du clavier)
*/
if (touche == 'K')
{
if (angle1 < 180)
{ angle1 += INCR; }
}
/**
- Rotation du bras robot en sens horaire, vers la droite (touche "M" du clavier)
*/
if (touche == 'M')
{
if (angle1 > 0)
{ angle1 -= INCR; }
}
/**
- Extension du bras robot (touche "O" du clavier)
*/
if (touche == 'O')
{
if (angle2 > 90)
{
angle2 -= INCR;
angle3 -= 2 * INCR;
angle4 += INCR;
}
}
/**
- Pliage du bras robot (touche "L" du clavier)
*/
if (touche == 'L')
{
if (angle2 < 90)
{
angle2 += INCR;
angle3 += 2 * INCR;
angle4 -= INCR;
}
}
/**
- Ouverture de la pince (touche "I" du clavier)
*/
if (touche == 'I')
{
if (angle5 < 135)
{
angle5 += INCR;
angle6 -= INCR;
}
}
/**
- Fermeture de la pince (touche "P" du clavier)
*/
if (touche == 'P')
{
if (angle5 > 90)
{
angle5 -= INCR;
angle6 += INCR;
}
}
}
delay(10); //
servo1.write(angle1); // Mise en place
servo2.write(angle2); // des servomoteurs
servo3.write(angle3); // en fonction des
servo4.write(angle4); // angles calculés
servo5.write(angle5); // dans les étapes
servo6.write(angle6); // précédentes.
Servo::refresh(); //
}
Processing:
import processing.serial.*;
Serial port;
String portname = "/dev/COM4";
void setup()
{
size(100, 100);
port = new Serial(this, portname, 9600);
}
void keyPressed()
{
if (key == 'O' || key == 'o')
{ port.write('O'); }
else if (key == 'P' || key == 'p')
{ port.write('P'); }
else if (key == 'R' || key == 'r')
{ port.write('R'); }
else if (key == 'K' || key == 'k')
{ port.write('K'); }
else if (key == 'L' || key == 'L')
{ port.write('L'); }
else if (key == 'M' || key == 'm')
{ port.write('M'); }
}
}
Vois-tu ce qui ne va pas?
Cordialement
Hilsen