Voici un premier programme Arduino pour tester le robot une fois assemblé (mécanique).
Il faut d’abord avoir trouvé le neutre pour chacun des deux servomoteurs à rotation continue.
#include <Servo.h>
#define POS_NEUTRE_D 77
#define POS_NEUTRE_G 76
Servo servG ;
Servo servD ;
void setup()
// serial communication
Serial.begin(9600) ;
// using "detach" makes the robot not move at all,
// as servomotors will not be controlled yet
servG.detach() ;
servD.detach() ;
void loop()
// as soon as someithing is received from the serial communication
if (Serial.available())
// every command is only one byte long (character)
char val = Serial.read() ;
switch (val)
case ’ ’ :
// stop
Serial.println("> Robot stop") ;
servG.detach() ;
servD.detach() ;
break ;
case ’8’ :
// en avant
servG.attach(10) ;
servD.attach(9) ;
servG.write(POS_NEUTRE_G+10) ;
servD.write(POS_NEUTRE_D-10) ;
Serial.println("> Robot forward") ;
break ;
case ’5’ :
// arrière
servG.attach(10) ;
servD.attach(9) ;
servG.write(POS_NEUTRE_G-10) ;
servD.write(POS_NEUTRE_D+10) ;
Serial.println("> Robot backward") ;
break ;
case ’4’ :
// à gauche
servG.attach(10) ;
servD.attach(9) ;
servG.write(POS_NEUTRE_G+10) ;
servD.write(POS_NEUTRE_D+10) ;
Serial.println("> Robot left") ;
break ;
case ’6’ :
// à droite
servG.attach(10) ;
servD.attach(9) ;
servG.write(POS_NEUTRE_G-10) ;
servD.write(POS_NEUTRE_D-10) ;
Serial.println("> Robot right") ;
break ;
default :
servG.attach(10) ;
servD.attach(9) ;
// the received value int value (and not char)
// is used as the speed (same for both)
servG.write(POS_NEUTRE_G+val) ;
servD.write(POS_NEUTRE_D-val) ;
Serial.println("> Robot controlled") ;
break ;