Existe-t-il un moyen de simuler un programme exécuté avant de le graver sur la carte?

24

Les programmes peuvent parfois contenir des erreurs d'exécution. Celles-ci sont parfois difficiles à trouver et peuvent facilement être manquées. Existe-t-il un moyen de tester le programme avant de le graver réellement sur la carte?

asheeshr
la source
Peut être lié à arduino.stackexchange.com/q/84/25
powtac
Vous pouvez avoir le problème que l'erreur ne se produit que sur un Arduino physique (je ne pouvais pas donner d'exemple, cependant).
Polar
@Polar En termes de logique de programme, je ne peux pas imaginer comment. Pourriez-vous, peut-être, publier un exemple?
asheeshr

Réponses:

19

Il existe quelques projets Arduino Simulator.

Peut-être l' un des plus matures est le simulateur Virtronics pour Arduino , vidéo YouTube ici .

Virtronics Arduino Simulator

La page Virtronics liée ci-dessus répertorie également quelques autres simulateurs Arduino, à la fois gratuits et payants.

Étant donné l'intérêt suscité par l'Arduino, il y aura probablement beaucoup plus de simulateurs de ce type, donc inutile de les énumérer tous dans une réponse ici.

Il convient de noter qu'il existe également une application iPhone Arduino Simulator : ce n'est pas une recommandation, ne l'ayant pas encore vue en fonctionnement.


A côté:

L'Arduino est en soi une carte de prototypage / expérimentation. Il est idéal pour programmer du code expérimental, le déboguer, modifier puis re-flasher du nouveau code, à peu près autant de fois qu'on le souhaite . Si le code se bloque, réinitialisez et reflasher avec les modifications.

Par conséquent, le mérite d'utiliser un simulateur, qui ne peut jamais parfaitement imiter les différents temps réels ou d'autres problèmes auxquels une application peut être confrontée, est discutable.

Si le coût de l'Arduino est le problème, il y a quelques options ouvertes:

  • Clones Arduino Nano bon marché sur eBay - J'ai plusieurs cartes Meduino Nano Enhancement , elles fonctionnent parfaitement et sont au prix de moins de 10 $, y compris l'expédition dans le monde entier: Amélioration de Meduino Nano
  • Faites votre propre Arduino - Le site Arduino vous guide à travers la fabrication d'un sur une planche à pain , qui n'a même pas besoin de vous pour souder quoi que ce soit!
Anindo Ghosh
la source
Merci d'avoir partagé le lien vers le simulateur Virtronics!
powtac
Oui, il est beaucoup plus facile de déboguer et de reflasher. Le flash ATMega328 est évalué à 10000 cycles de réécriture, donc même si vous le réécrivez 10 fois par jour, vous avez plus de deux ans de plaisir devant vous :-) Beaucoup de plaisir pour un amateur. Si vous y êtes un peu plus, vous pouvez utiliser des cartes plus récentes pour le débogage et quand elles commencent à s'user (disons après 5000 cycles?), Vous pouvez les utiliser pour des applications stables et en acheter une nouvelle pour le débogage.
Lorenzo Donati soutient Monica le
8

Vous pouvez trouver des erreurs d'exécution si vous pouvez parcourir manuellement votre programme avec l'Arduino connecté et déboguer ( après avoir téléchargé le code sur l'Arduino). Ceci est disponible dans Visual Micro bien qu'il nécessite Visual Studio. Vous pouvez définir des points d'arrêt, évaluer des variables et modifier les valeurs des variables. Vous pouvez également obtenir une visualisation de la mémoire au fil du temps:

entrez la description de l'image ici


la source
Très propre. Quelle est la maturité de ce projet - ou, plutôt, cet IDE s'est-il bien déroulé d'après votre expérience?
boardbite
Je ne l'ai pas utilisé pour le profilage, et je ne l'ai utilisé que brièvement, mais il s'intègre assez bien et fonctionne bien pour moi. J'apprécie vraiment la possibilité de déboguer sans avoir recours à Serial.print
4

Une façon de le faire serait de créer un programme wrapper pour le code réel qui simule toutes les entrées et accepte les sorties (créant ainsi une boucle de rétroaction) selon l'environnement réel. Cela nécessiterait des efforts variables selon le type de programme, le degré de test et le nombre d'entrées.

Gardez à l'esprit que lors de l'écriture du programme wrapper, vous devez suivre une approche de boîte noire .

entrez la description de l'image ici

Sinon, votre code externe peut ne pas tester le programme aussi bien que possible, car garder à l'esprit le code réel lors de la création du code de test peut vous inciter à ignorer les cas limites ou les zones problématiques (cela a été observé lors des tests en boîte blanche qui est l'alternative).

asheeshr
la source
Connaissez-vous des exemples? La plupart des codes Arduino que j'ai vus manquent de tests unitaires appropriés, même pour les pièces qui ne nécessitent pas d'entrée / sortie.
Jakob
@Jakob J'écris habituellement mon propre code pour les tests. Il est pratique pour les petits projets.
asheeshr