Publié le 24 février 2023 - par

Un chronomètre au 1/1000 de seconde avec Arduino UNO – Ecran LCD1602

Pour un projet que j’ai présenté à Tech Inn’Vitré j’ai préparé un chronomètre à base d’Arduino pour mesurer le temps de parcours d’un robot CrowBot Bolt sur une piste. La piste est entourée de cornières en aluminium qui ont servi à clipser les switch de départ et d’arrivée. J’avais un écran LCD de chez SainSmart que j’ai utilisé pour l’occasion.

Un chronomètre au 1/1000 de seconde avec Arduino

Le cahier des charges

L’idée c’était de créer une piste pour un Rover CrowBot Bolt, que je vous ai présenté il y a quelque temps. La piste comporte des obstacles et une trace qui guide le déplacement du rover. Le joueur utilise la manette de jeu connectée en Bluetooth au rover. Pour connaitre le temps réalisé par le joueur, un chronomètre au 1/1000 de seconde enregistre la performance.

Au départ et à l’arrivée, un switch déclenche et arrête le chronométrage. Au départ on appuie le rover sur le switch et quand il démarre il libère le switch. A l’arrivée, le rover tape sur la plaque et ferme le switch.

L’écran affiche « Positionner le rover », le joueur pose le rover de façon à appuyer sur le switch. L’écran affiche demande alors à l’arbitre de valider. L’arbitre bascule l’interrupteur.Le joueur démarre quand il veut, ce qui démarre le chronométrage, jusqu’à l’arrivée sur la plaque finale.

Si le temps est meilleur que le temps enregistré, il remplace celui-ci dans la mémoire de l’Arduino. Même si on débranche le chronomètre, le meilleur temps est conservé.

L’arbitre remet son interrupteur en position d’attente. On attend le joueur suivant.

Il est possible de remettre le temps au maximum 999999 en appuyant sur une des touches du clavier.

Le matériel utilisé

J’ai utilisé un Arduino UNO que j’avais en stock, avec un écran SainSmart LCD1602 également disponible dans une de mes boîtes (écran 2 lignes de 16 caractères) :

Malheureusement cet écran ne semble plus disponible chez SainSmart mais on doit pouvoir le remplacer par un modèle DFROBOT disponible chez AliExpress pour 4€ environ. Il semble bien identique.

Les switch sont des modèles étanches trouvés sur Amazon, mais tous les switch apparentés fonctionneront. Pourquoi étanche me direz-vous ?

C’est un souvenir de Nantes Maker Campus où le stand framboise314 était en bordure des Nefs des Machines de l’île. Lors d’un gros orage de l’eau avait coulé dans le boîtier des Bouncing Leds… et avait détruit la carte. Du coup maintenant quand je vois marqué « étanche » j’ai tendance à préférer 😀 …

Les impressions 3D

Pour habille tout ce joli monde, j’ai dessiné des systèmes qui se posent sur la bordure du plateau, une cornière en aluminium de près de 2mm d’épaisseur. Pour bloquer les switch j’ai prévu une vis de blocage sur le support de switch.

Voilà le système que j’ai dessiné. Il est démontable car dans le transport le plateau peut recevoir des chocs ou des pressions. On range tout dans une boite et c’est rapidement remonté à l’arrivée.

Ici le chronomètre terminé avec la plaque de l’arrivée.

Les deux ensembles sont identiques, un au départ, l’autre à l’arrivée

Vue de dessus d’un déclencheur

Les supports de switch. Comme les fils sont directement reliés à l’Arduino, ils sont repérés Départ et Arrivée. On voit la vis qui sert à bloquer le support en position sur la cornière.

J’avais déjà le support pour l’Arduino et son écran. J’ai imprimé un support pour les LEDs et le bouton de validation

Un coup d’araldite et les deux parties se sont retrouvées rassemblées…

Il restait juste à imprimer un pied pour supporter l’ensemble et le poser sur la table. Ici le rover est positionné sur le switch de départ. La LED du bas est allumée. L’afficheur demande que l’arbitre valide avec son interrupteur

L’arbitre a validé son interrupteur et a autorisé le départ. La LED haute est allumée et l’écran affiche « PARTEZ ». Lorsque le joueur démarrera, le chrono se déclenchera.

Les fichiers 3D sont disponibles au format  .STL en cliquant sur ce lien. Le boîtier Arduino + écran LCD1602 vient de Thingiverse.

Le programme Arduino

Je vous le livre tel quel… Vous y trouverez comment enregistrer une valeur dans l’EEPROM de l’Arduino (ce qui permet de garder une valeur même si on éteint la carte – C’est ce qui conserve le meilleur score). Attention, l’écran LCD est très gourmand en ressources (il y a de nombreux fils connectés et j’ai du choisir soigneusement les fils utilisés pour mes switchs et interrupteurs pour ne pas perturber le programme. On retrouve ces infos en cherchant un peu sur Internet.

Vous pouvez aussi télécharger le programme de chronomètre en cliquant sur ce lien.

Comme je dis toujours, je suis un maker, pas un développeur. L’objectif de mes programmes, c’est de faire fonctionner le projet. Après si vous y regardez de près vous trouverez des trucs pas jolis, des choses qu’on ne fait pas… Moi, si ça fonctionne ça me va. Le programme est disponible, brut de fonderie et il ne tient qu’à vous de l’améliorer et de le redistribuer (j’ajouterai le lien avec plaisir !)

Il y a du debuggage de maker, oui, des print() ! pour voir par où passe le programme et m’aider à trouver mes conneries erreurs… Libre à vous de les enlever également. Mais pour ceux qui sont passés sur le stand à Vitré vous avez p tester le programme 😉

Conclusion

Un projet développé dans la semaine avant le rendez vous de Vitré. Quelques qoucis de saturation Bluetooth avec le robot, mais le chrono a bien fonctionné. Si cet article peut vous servir, ce sera avec plaisir, et n’hésitez pas à laisser votre avis dans les commentaires ci-dessous.

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. Auteur de plusieurs livres sur le Raspberry Pi publiés aux Editions ENI.

Une réflexion au sujet de « Un chronomètre au 1/1000 de seconde avec Arduino UNO – Ecran LCD1602 »

  1. Ping : Un chronomètre au 1/1000 de seconde avec Arduino UNO – Ecran LCD1602

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.