Ne pas freiner dans une pièce vide
Arduino C++Le sketch de pare-chocs de ce robot allume le frein (D13) quand quelque chose est à moins de 20 cm. Il fonctionne face à un mur, mais dans une pièce dégagée il freine aussi : quand rien ne renvoie d'écho, pulseIn() renvoie 0, et 0 cm, c'est « moins de 20 ». Ne freinez que s'il y a vraiment eu un écho sous 20 cm. Le mur est à 80 cm, à 15 cm à 1,5 s, disparu à 3 s et à 8 cm à 4,5 s.
Vérifications
- Pas encore lancéTourne
- Pas encore lancéMur à 80 cm : pas de frein
- Pas encore lancéMur à 15 cm : frein
- Pas encore lancéPièce vide : pas de frein
- Pas encore lancéMur à 8 cm : frein
Indices
- ping() renvoie 0 quand rien n'est revenu. 0 n'est pas une distance.
- Les deux doivent être vrais : il y a eu un écho, et il était proche.
- bool brake = cm > 0 && cm < 20;