Revenir sur la ligne
Arduino C++Le code de départ lit la ligne mais fait tourner les deux roues à 150 quoi qu'il voie. Faites-le diriger : error = position - 3500, puis left = 150 + error / 20 et right = 150 - error / 20. Avec la ligne sous le capteur 2, la roue gauche doit ralentir et la droite accélérer ; sous le capteur 7, l'inverse ; au centre, les deux à 150.
Vérifications
- Pas encore lancéTourne pendant 4,5 s
- Pas encore lancéLit la ligne avec readLineBlack()
- Pas encore lancéSTBY (D9) est à HIGH : le driver est réveillé
- Pas encore lancéAu centre : la roue gauche (D5) à environ 150/255
- Pas encore lancéAu centre : la roue droite (D6) à environ 150/255
- Pas encore lancéLigne sous le capteur 2 : la roue gauche ralentit
- Pas encore lancéLigne sous le capteur 2 : la roue droite accélère
- Pas encore lancéLigne sous le capteur 7 : la roue gauche accélère
- Pas encore lancéLigne sous le capteur 7 : la roue droite ralentit
- Pas encore lancéDe nouveau au centre : retour à 150
Indices
- readLineBlack() renvoie un nombre non signé ; convertissez-le avant de soustraire : int error = (int)pos - 3500;
- error / 20 revient à error x 0.05 sans virgule flottante : c'est Kp.
- motors() limite déjà chaque roue à 0-255 avec constrain().