Étape 4: codage
Notre code exécute les fonctions suivantes :
- Le robot a une position de départ fixe. Il se déplace de là pour attraper une bouteille de peinture à l’huile du support (ce qui est à côté d’elle), ouvre la pince, attrape la main sur la bouteille et resserre l’étau de la bouteille.
- De là, il se déplace à la position de la cuve de l’eau, ce qui est juste en dessous de la pince, se déplace jusqu’au bout à droite de la piscine de l’eau, ont aimé la bouteille une fois, se déplace vers le centre, serre, se déplace vers la butée et dépose une goutte de peinture.
- Puis il revient à sa position initiale
- Ensuite il revient de prendre une autre peinture de couleur
- Et présente des performances (2) encore une fois, mais ce temps gouttes seulement 2 gouttes de peinture à des points différents d’où il avait abandonné la peinture auparavant.
/ * Références : exemple de moteur de C.C de bouclier moteur Adafruit, appelé d
Programme d’exemple BitVoicer logiciel de commutation LED. Nous avons utilisé les objets de cet exemple juste pour l’instanciation * /
#include < Wire.h >
#include < Adafruit_MotorShield.h >
#include « utility/Adafruit_PWMServoDriver.h »
#include < BitVoicer11.h >
Adafruit_MotorShield AFMS = Adafruit_MotorShield() ;
Adafruit_DCMotor * myMotor1 = AFMS.getMotor(1) ;
Adafruit_DCMotor * myMotor2 = AFMS.getMotor(2) ;
Adafruit_DCMotor * myMotor3 = AFMS.getMotor(3) ;
Adafruit_DCMotor * myMotor4 = AFMS.getMotor(4) ;
BitVoicerSerial bvSerial = BitVoicerSerial() ;
sampleTest booléen = false ;
le type de données Byte = 0 ;
void setup() {}
Serial.Begin(9600) ;
Serial.println ("Adafruit Motorshield v2 - test moteur DC!") ;
AFMS.begin() ;
myMotor4 -> setSpeed(150) ;
myMotor4 -> run(FORWARD) ;
mettre en marche le moteur
myMotor4 -> run(RELEASE) ;
myMotor2 -> setSpeed(150) ;
myMotor2 -> run(FORWARD) ;
mettre en marche le moteur
myMotor2 -> run(RELEASE) ;
bvSerial.setAnalogReference(BV_EXTERNAL) ;
bvSerial.setAudioInput(0) ;
Serial.Begin(9600) ;
}
void loop() {}
Si (sampleTest == true)
{
bvSerial.processAudio(46) ;
}
Si (bvSerial.engineRunning)
{
bvSerial.processAudio(46) ;
}
}
Sub serialEvent()
{
dataType = bvSerial.getData() ;
Si (dataType == BV_COMMAND)
sampleTest = bvSerial.cmdData ;
Si (dataType == BV_STATUS & & bvSerial.engineRunning == true)
bvSerial.startStopListening() ;
Si (dataType == BV_STR)
Func1() ;
}
Sub func1 () ///3 gouttes
{
Si (bvSerial.strData == « cinq »)
{
myMotor4 -> run(FORWARD) ; vient de ramasser de couleur
myMotor4 -> setSpeed(150) ;
Delay(3000) ;
myMotor4 -> setSpeed(0) ;
Delay(300) ;
myMotor2 -> Exécuter (BACKWARD); //opening la pince
myMotor2 -> setSpeed(150) ;
Delay(380) ;
myMotor2 -> setSpeed(0) ;
Delay(200) ;
myMotor2 -> Exécuter (avec impatience); //closing la pince
myMotor2 -> setSpeed(150) ;
Delay(600) ;
myMotor2 -> setSpeed(0) ;
Delay(400) ;
myMotor3 -> run(BACKWARD) ; déplace la pince sur le dessus
myMotor3 -> setSpeed(150) ;
Delay(600) ;
myMotor3 -> setSpeed(0) ;
Delay(300) ;
myMotor4 -> run(BACKWARD) ;
myMotor4 -> setSpeed(150) ;
Delay(4000) ;
myMotor4 -> setSpeed(0) ;
Delay(300) ;
myMotor2 -> Exécuter (avec impatience); //squeezing la pince
myMotor2 -> setSpeed(200) ;
Delay(300) ;
myMotor2 -> setSpeed(0) ;
Delay(200) ;
myMotor2 -> Exécuter (BACKWARD); //Unsqueezing
myMotor2 -> setSpeed(250) ;
Delay(50) ;
myMotor2 -> setSpeed(0) ;
Delay(200) ;
myMotor4 -> run(FORWARD) ;
myMotor4 -> setSpeed(150) ;
Delay(1000) ;
myMotor4 -> setSpeed(0) ;
Delay(300) ;
myMotor2 -> Exécuter (avec impatience); //squeezing la pince
myMotor2 -> setSpeed(150) ;
Delay(300) ;
myMotor2 -> setSpeed(0) ;
Delay(200) ;
myMotor2 -> Exécuter (BACKWARD); //Unsqueezing
myMotor2 -> setSpeed(150) ;
Delay(50) ;
myMotor2 -> setSpeed(0) ;
Delay(200) ;
myMotor4 -> run(FORWARD) ;
myMotor4 -> setSpeed(150) ;
Delay(1000) ;
myMotor4 -> setSpeed(0) ;
Delay(300) ;
myMotor2 -> Exécuter (avec impatience); //squeezing la pince
myMotor2 -> setSpeed(150) ;
Delay(300) ;
myMotor2 -> setSpeed(0) ;
Delay(200) ;
myMotor2 -> Exécuter (BACKWARD); //Unsqueezing
myMotor2 -> setSpeed(150) ;
Delay(50) ;
myMotor2 -> setSpeed(0) ;
Delay(200) ;
myMotor4 -> run(FORWARD) ;
myMotor4 -> setSpeed(150) ;
Delay(2000) ;
myMotor4 -> setSpeed(0) ;
Delay(300) ;
myMotor3 -> run(FORWARD) ;
myMotor3 -> setSpeed(150) ;
Delay(600) ;
myMotor3 -> setSpeed(0) ;
Delay(300) ;
myMotor2 -> Exécuter (BACKWARD); //opening la pince
myMotor2 -> setSpeed(150) ;
Delay(400) ;
myMotor2 -> setSpeed(0) ;
Delay(400) ;
myMotor4 -> Exécuter (BACKWARD); //opening la pince
myMotor4 -> setSpeed(150) ;
Delay(4000) ;
myMotor4 -> setSpeed(0) ;
Delay(400) ;
Func2() ;
}
ElseIf (bvSerial.strData == « deux »)
{
two_drops() ;
}
d’autre
{
bvSerial.startStopListening() ;
bvSerial.sendToBV ("ERROR:" + bvSerial.strData) ;
bvSerial.startStopListening() ;
}
}
Sub func2 () ///2 gouttes
{
myMotor4 -> run(FORWARD) ; vient de ramasser de couleur
myMotor4 -> setSpeed(150) ;
Delay(4000) ;
myMotor4 -> setSpeed(0) ;
Delay(300) ;
myMotor2 -> Exécuter (BACKWARD); //opening la pince
myMotor2 -> setSpeed(150) ;
Delay(380) ;
myMotor2 -> setSpeed(0) ;
Delay(200) ;
myMotor2 -> Exécuter (avec impatience); //closing la pince
myMotor2 -> setSpeed(150) ;
Delay(600) ;
myMotor2 -> setSpeed(0) ;
Delay(400) ;
myMotor3 -> run(BACKWARD) ; déplace la pince sur le dessus
myMotor3 -> setSpeed(150) ;
Delay(600) ;
myMotor3 -> setSpeed(0) ;
Delay(300) ;
myMotor4 -> run(BACKWARD) ;
myMotor4 -> setSpeed(150) ;
Delay(3500) ;
myMotor4 -> setSpeed(0) ;
Delay(300) ;
myMotor2 -> Exécuter (avec impatience); //squeezing la pince
myMotor2 -> setSpeed(150) ;
Delay(300) ;
myMotor2 -> setSpeed(0) ;
Delay(200) ;
myMotor2 -> Exécuter (BACKWARD); //Unsqueezing
myMotor2 -> setSpeed(150) ;
Delay(50) ;
myMotor2 -> setSpeed(0) ;
Delay(200) ;
myMotor4 -> run(BACKWARD) ;
myMotor4 -> setSpeed(150) ;
Delay(1000) ;
myMotor4 -> setSpeed(0) ;
Delay(400) ;
myMotor4 -> run(FORWARD) ;
myMotor4 -> setSpeed(150) ;
Delay(2000) ;
myMotor4 -> setSpeed(0) ;
Delay(400) ;
myMotor3 -> run(FORWARD) ; déplace la pince sur le dessus
myMotor3 -> setSpeed(150) ;
Delay(600) ;
myMotor3 -> setSpeed(0) ;
Delay(300) ;
myMotor3 -> run(BACKWARD) ; déplace la pince ci-dessous
myMotor3 -> setSpeed(150) ;
Delay(600) ;
myMotor3 -> setSpeed(0) ;
Delay(300) ;
myMotor3 -> run(FORWARD) ; déplace la pince sur le dessus
myMotor3 -> setSpeed(150) ;
Delay(600) ;
myMotor3 -> setSpeed(0) ;
Delay(300) ;
myMotor3 -> run(BACKWARD) ; déplace la pince ci-dessous
myMotor3 -> setSpeed(150) ;
Delay(600) ;
myMotor3 -> setSpeed(0) ;
Delay(300) ;
myMotor3 -> run(FORWARD) ; déplace la pince sur le dessus
myMotor3 -> setSpeed(150) ;
Delay(600) ;
myMotor3 -> setSpeed(0) ;
Delay(300) ;
myMotor3 -> run(BACKWARD) ; déplace la pince ci-dessous
myMotor3 -> setSpeed(150) ;
Delay(600) ;
myMotor3 -> setSpeed(0) ;
Delay(300) ;
myMotor4 -> run(FORWARD) ;
myMotor4 -> setSpeed(150) ;
Delay(1000) ;
myMotor4 -> setSpeed(0) ;
Delay(300) ;
myMotor2 -> Exécuter (avec impatience); //squeezing la pince
myMotor2 -> setSpeed(150) ;
Delay(300) ;
myMotor2 -> setSpeed(0) ;
Delay(200) ;
myMotor2 -> Exécuter (BACKWARD); //Unsqueezing
myMotor2 -> setSpeed(150) ;
Delay(50) ;
myMotor2 -> setSpeed(0) ;
Delay(200) ;
myMotor4 -> run(FORWARD) ;
myMotor4 -> setSpeed(150) ;
Delay(2500) ;
myMotor4 -> setSpeed(0) ;
Delay(300) ;
myMotor3 -> run(FORWARD) ;
myMotor3 -> setSpeed(150) ;
Delay(600) ;
myMotor3 -> setSpeed(0) ;
Delay(300) ;
myMotor2 -> Exécuter (BACKWARD); //opening la pince
myMotor2 -> setSpeed(150) ;
Delay(400) ;
myMotor2 -> setSpeed(0) ;
Delay(400) ;
myMotor4 -> run(BACKWARD) ;
myMotor4 -> setSpeed(150) ;
Delay(3000) ;
myMotor4 -> setSpeed(0) ;
Delay(400) ;
}
Sub two_drops()
{
myMotor4 -> run(FORWARD) ; vient de ramasser de couleur
myMotor4 -> setSpeed(150) ;
Delay(3000) ;
myMotor4 -> setSpeed(0) ;
Delay(300) ;
myMotor2 -> Exécuter (BACKWARD); //opening la pince
myMotor2 -> setSpeed(150) ;
Delay(380) ;
myMotor2 -> setSpeed(0) ;
Delay(200) ;
myMotor2 -> Exécuter (avec impatience); //closing la pince
myMotor2 -> setSpeed(150) ;
Delay(600) ;
myMotor2 -> setSpeed(0) ;
Delay(400) ;
myMotor3 -> run(BACKWARD) ; déplace la pince sur le dessus
myMotor3 -> setSpeed(150) ;
Delay(600) ;
myMotor3 -> setSpeed(0) ;
Delay(300) ;
myMotor4 -> run(BACKWARD) ;
myMotor4 -> setSpeed(150) ;
Delay(3500) ;
myMotor4 -> setSpeed(0) ;
Delay(300) ;
myMotor2 -> Exécuter (avec impatience); //squeezing la pince
myMotor2 -> setSpeed(150) ;
Delay(300) ;
myMotor2 -> setSpeed(0) ;
Delay(200) ;
myMotor2 -> Exécuter (BACKWARD); //Unsqueezing
myMotor2 -> setSpeed(150) ;
Delay(50) ;
myMotor2 -> setSpeed(0) ;
Delay(200) ;
myMotor4 -> run(FORWARD) ;
myMotor4 -> setSpeed(150) ;
Delay(1500) ;
myMotor4 -> setSpeed(0) ;
Delay(300) ;
myMotor2 -> Exécuter (avec impatience); //squeezing la pince
myMotor2 -> setSpeed(150) ;
Delay(300) ;
myMotor2 -> setSpeed(0) ;
Delay(200) ;
myMotor2 -> Exécuter (BACKWARD); //Unsqueezing
myMotor2 -> setSpeed(150) ;
Delay(50) ;
myMotor2 -> setSpeed(0) ;
Delay(200) ;
myMotor4 -> run(FORWARD) ;
myMotor4 -> setSpeed(150) ;
Delay(2000) ;
myMotor4 -> setSpeed(0) ;
Delay(300) ;
myMotor3 -> run(FORWARD) ;
myMotor3 -> setSpeed(150) ;
Delay(600) ;
myMotor3 -> setSpeed(0) ;
Delay(300) ;
myMotor2 -> Exécuter (BACKWARD); //opening la pince
myMotor2 -> setSpeed(150) ;
Delay(400) ;
myMotor2 -> setSpeed(0) ;
Delay(400) ;
myMotor4 -> run(BACKWARD) ;
myMotor4 -> setSpeed(150) ;
Delay(3000) ;
myMotor4 -> setSpeed(0) ;
Delay(400) ;
}
Sub brush()
{
myMotor4 -> run(BACKWARD) ;
myMotor4 -> setSpeed(150) ;
Delay(3000) ;
myMotor4 -> setSpeed(0) ;
Delay(400) ;
myMotor2 -> Exécuter (BACKWARD); //opening la pince
myMotor2 -> setSpeed(150) ;
Delay(380) ;
myMotor2 -> setSpeed(0) ;
Delay(200) ;
myMotor2 -> Exécuter (avec impatience); //closing la pince
myMotor2 -> setSpeed(150) ;
Delay(600) ;
myMotor2 -> setSpeed(0) ;
Delay(400) ;
myMotor4 -> run(FORWARD) ;
myMotor4 -> setSpeed(150) ;
Delay(3000) ;
myMotor4 -> setSpeed(0) ;
Delay(400) ;
myMotor1 -> run(BACKWARD) ;
myMotor1 -> setSpeed(150) ;
Delay(600) ;
myMotor1 -> setSpeed(0) ;
Delay(400) ;
myMotor4 -> run(BACKWARD) ;
myMotor4 -> setSpeed(150) ;
Delay(1000) ;
myMotor4 -> setSpeed(0) ;
Delay(400) ;
myMotor4 -> run(FORWARD) ;
myMotor4 -> setSpeed(150) ;
Delay(2000) ;
myMotor4 -> setSpeed(0) ;
Delay(400) ;
myMotor1 -> run(FORWARD) ;
myMotor1 -> setSpeed(150) ;
Delay(600) ;
myMotor1 -> setSpeed(0) ;
Delay(400) ;
myMotor4 -> run(BACKWARD) ;
myMotor4 -> setSpeed(150) ;
Delay(4000) ;
myMotor4 -> setSpeed(0) ;
Delay(400) ;
myMotor2 -> Exécuter (BACKWARD); //opening la pince
myMotor2 -> setSpeed(150) ;
Delay(380) ;
myMotor2 -> setSpeed(0) ;
Delay(200) ;
myMotor4 -> run(FORWARD) ;
myMotor4 -> setSpeed(150) ;
Delay(3000) ;
myMotor4 -> setSpeed(0) ;
Delay(400) ;
}