¿Hay alguna forma de simular la ejecución de un programa antes de grabarlo en el tablero?

24

Los programas pueden, a veces, tener errores de tiempo de ejecución. A veces son difíciles de encontrar y se pueden pasar por alto fácilmente. ¿Hay alguna forma de probar el programa antes de quemarlo en el tablero?

Asheeshr
fuente
Podría estar relacionado con arduino.stackexchange.com/q/84/25
powtac
También puede estar relacionado con arduino.stackexchange.com/questions/20/…
Es posible que tenga el problema de que el error solo ocurre en un Arduino físico (sin embargo, no podría dar un ejemplo).
Polar
@Polar En términos de lógica del programa, no puedo imaginar cómo. ¿Podrías, quizás, publicar algún ejemplo?
asheeshr

Respuestas:

19

Hay algunos proyectos de Arduino Simulator por ahí.

Quizás uno de los más maduros es el Simulador de Virtronics para Arduino , el video de YouTube aquí .

Virtronics Arduino Simulator

La página de Virtronics vinculada anteriormente también enumera algunos otros simuladores de Arduino, tanto gratuitos como de pago.

Dado el interés que evoca el Arduino, es probable que haya muchos más simuladores de este tipo, por lo que no tiene sentido tratar de enumerarlos a todos en una respuesta aquí.

Lo que vale la pena señalar es que también hay una aplicación para iPhone Arduino Simulator : esto no es una recomendación, aún no la he visto en funcionamiento.


En otros comentarios:

El Arduino es en sí mismo un tablero de prototipos / experimentación. Es ideal para programar código experimental, depurarlo, modificar y luego volver a flashear código nuevo, casi tantas veces como quiera . Si el código se bloquea, reinicie y vuelva a actualizar con cualquier cambio.

Por lo tanto, el mérito de usar un simulador, que nunca puede emular perfectamente los diversos tiempos del mundo real u otros problemas que podría enfrentar una aplicación, es cuestionable.

Si el costo del Arduino es la preocupación, hay un par de opciones abiertas:

  • Arduino Nano de bajo costo clona en eBay: tengo varias placas de mejora de Meduino Nano , funcionan excelentemente y tienen un precio de menos de $ 10, incluido el envío mundial: Mejora Nano Meduino
  • Haga su propio Arduino: el sitio de Arduino lo guía a través de cómo hacer uno en una placa de prueba , ¡que ni siquiera necesita que suelde nada!
Anindo Ghosh
fuente
¡Gracias por compartir el enlace al Simulador Virtronics!
powtac
Sí, es mucho más fácil depurar y actualizar. El flash ATMega328 tiene una capacidad de 10000 ciclos de reescritura, por lo que incluso si lo reescribe 10 veces al día, tienes más de dos años de diversión antes que tú :-) Muy divertido para un aficionado. Si solo le gusta un poco más, puede usar tableros más nuevos para realizar la depuración y cuando comienzan a desgastarse (¿después de 5000 ciclos?) Puede usarlos para aplicaciones estables y comprar uno nuevo para la depuración.
Lorenzo Donati apoya a Mónica el
8

Puede encontrar errores de tiempo de ejecución si puede recorrer manualmente su programa con Arduino conectado y depurar ( después de descargar el código en Arduino). Está disponible en Visual Micro, aunque requiere Visual Studio. Puede establecer puntos de interrupción, evaluar variables y cambiar valores de variables. También puede obtener visualización de la memoria con el tiempo:

ingrese la descripción de la imagen aquí


fuente
Muy aseado. ¿Cuán maduro es este proyecto, o más bien, este IDE se ha ejecutado sin problemas en su experiencia?
Mordida del
No lo he usado para perfilar, y solo lo he usado brevemente, pero se integra bastante bien y funciona bien para mí. Realmente aprecio la capacidad de depurar sin recurrir a Serial.print
4

Una forma de hacerlo sería crear un programa envoltorio para el código real que simule todas las entradas y acepte salidas (creando así un ciclo de retroalimentación) según el entorno real. Esto requeriría una cantidad variable de esfuerzo según el tipo de programa, el grado de prueba y el número de entradas.

Tenga en cuenta que al escribir el programa contenedor, debe seguir un enfoque de recuadro negro .

ingrese la descripción de la imagen aquí

De lo contrario, es posible que su código externo no pruebe el programa tan bien como sea posible, ya que tener en cuenta el código real al crear el código de prueba puede sesgarlo para que ignore los casos límite o las áreas problemáticas (Esto se ha observado que ocurre mientras se realizan las pruebas de White-Box que es la alternativa)

Asheeshr
fuente
¿Conoces algún ejemplo? La mayoría del código Arduino que he visto carece de pruebas unitarias adecuadas, incluso para las partes que no requieren entrada / salida.
Jakob
@Jakob Normalmente escribo mi propio código para las pruebas. Es práctico para pequeños proyectos.
asheeshr