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; } } }