int resultat;
int position = 2;
int nqt;
sub routine()
{
nqt=position-resultat; /*si nqt=0 ça ne tourne pas, si c'est 1 ou -1 il tourne de 90° ou -90°, si c'est 2 ou -2 dans les 2 cas il tourne de 180° (ou -180°),
finallement le seul cas spécial est 3 ou -3, car pour éviter de tourner de 270° perte de temps, on transforme -3 en 1 ou 3 en -1 */
switch (nqt)
{
case (3):
nqt = -1;
break;
case (-3):
nqt = 1;
break;
}
RotateMotor(OUT_B, 50, nqt*90); //le panier tourne de la valeur de "nqt"
while (SENSOR_1 != 1) //tant que le puch sensor n'est pas déclenché,
{
OnFwd(OUT_A, 20); // on tourne le moteur(A) à une vitesse de 20 en avant.
}
RotateMotor(OUT_A, 20, -20); //sinon on le remet en position arrière
position = resultat; //met en mémoire la dernière position
}
task main()
{
SetSensorColorFull(S3); //défini le sensor 3 en capteur de couleur
SetSensorTouch(S1); //défini le sensor 1 en touch sensor
while (true)
{
resultat = Sensor(S3);
switch(resultat) //affiche la couleur détectée sur le LCD
{
case 1:
TextOut (0, LCD_LINE3, "Noir",1); //on ignore noir ou blanc
break;
case 2:
TextOut (0, LCD_LINE3, "Bleu",1);
routine();
break;
case 3:
TextOut (0, LCD_LINE3, "Vert",1);
routine();
break;
case 4:
TextOut (0, LCD_LINE3, "Jaune",1);
routine();
break;
case 5:
TextOut (0, LCD_LINE3, "Rouge",1);
routine();
break;
case 6:
TextOut (0, LCD_LINE3, "Blanc",1);
break;
}
}
}