Programme de débug Arduino

Bonjour à tous!

Je ne sais pas vous, mais je trouve qu'il est vraiment délicat de déboguer (et c'est un grand mot!) un programme avec l'IDE. Du coup, comme je vais avoir besoin pour un projet qui va démarrer de pouvoir le faire facilement, et puisque pour un autre projet je me suis plongé à corps perdu dans Qt, je suis en train de réaliser un petit programme pour faciliter le débugage.

L'idée est assez simple: l'Arduino envoie, pour chaque valeur à lire, une paire "nom de la valeur" et "valeur", via deux Serial.println() successifs.

Le programme qui tourne coté PC lit les données reçues sur le Serial en continu. Le programme permet de "suivre" une variable: pour chaque variable que l'on veut suivre, il suffit de rentrer son nom (celui que l'on écrit en toutes lettres dans le premier Serial.println()), puis pour chaque valeur reçue, le nom reçu est comparé avec la liste des variables à suivre. S'il y a une correspondance, alors la valeur est mise à jour.

Pour l'instant, le programme affiche les valeur en temps réel, les valeurs mini et maxi, permet de mettre en pause l'affichage (la réception continue en arrière plan), de réinitialiser les valeurs.

En même temps, il est possible pour chaque variable d'afficher une courbe sommaire (pour l'instant c'est au niveau de l'IDE), dont on peut tout de même changer la couleur, l'épaisseur et le type de trait, autant avant, que pendant, ou après les mesures, les courbes de chaque variables étant dans la même fenêtre.

Et le programme permet également de voir quelles connexion séries sont disponibles, et choisir une vitesse.

Bon, j'ai commencé il y a deux jours, et je découvre au fur et à mesure les fonctions dont j'ai besoin, donc cette annonce est un peu prématurée, mais j'ai bon espoir que ça puisse devenir un outil vraiment utile!

Je pense notamment à permettre l'affichage de plusieurs types de variables (string, int, float, bool), de permettre l'affichage d'une moyenne et/ou d'une moyenne glissante, et du coté des courbes, afficher un repère paramétrable, éventuellement afficher plusieurs fenêtres pouvant afficher une ou plusieurs variables, pourquoi pas des fonctions statistiques (je pensais notamment aux lois de Gauss)...

Pour ceux qui voudraient essayer, il n'y a pas encore d'exécutable, mais pour ceux qui ont Qt le code source est sur mon github

Tous les commentaires sont bienvenus!

Et ça ne bloque pas le port série de l'arduino uno ?

pierrotm777:
Et ça ne bloque pas le port série de l'arduino uno ?

Si. Personne n'est parfait. :slight_smile:
En fait j'ai pensé ça comme une alternative à l'IDE, pour corriger le flot continu des des données qu'il affiche.
Mais ça m'amène à penser qu'il pourrait être développé, en marge, une application qui récupérerait ses paires de débogage via l'I2C, par exemple, pour utiliser une carte dédiée.

Intéressant mais y'a déjà un outil qui fait ça :slight_smile:
http://www.visualmicro.com/page/Arduino-Debug-In-Visual-Studio.aspx

J'utilise Visual Studio + Visual Micro en version free (donc sans le debugguer). Mais pour 19£ je pense que c'est un bon investissement pour qui veut un vrai IDE avec un débuggueur.

Ah ah!! Je me suis demandé s'il existait quelque chose qui faisait ça, et je n'ai pas cherché!
En fait, à chaque fois que j'ai voulu chercher des solutions alternatives à l'IDE, je n'ai rien trouvé...

Le debogueur permet de visualiser un programme en temps réel et d'accéder à la valeur des variables? Même sur les Atmega 328?

Bon, je vais quand même continuer un peu: c'est un bon sujet pour apprendre beaucoup de notions plus ou moins accessibles, comme les signaux et slots (gestion d'évenements de Qt), la gestion de fenêtres, l'héritage, la transmission de données d'un objet à un autre... Et ça resservira, sans aucun doute!

Bonjour,

il faut constater que thème n'est que très sporadiquement abordé, car il tourne le dos à la philosophie arduino, qui est basée sur l'aide des bibliothèques, qui fonctionnent, et de la communauté, qui sait

de plus, à mon humble avis, dépenser du temps et de l'argent pour faire ce type de "débogage" est une mauvaise solution, la bonne étant la classique acquisition d'une sonde (debugwire) et l'utilisation de l'IDE (avr studio) qui va bien