Existe alguma maneira de simular uma execução do programa antes de gravá-la no quadro?

24

Às vezes, os programas podem ter erros de tempo de execução. Às vezes, são difíceis de encontrar e podem ser facilmente esquecidos. Existe alguma maneira de testar o programa antes de gravá-lo na placa?

asheeshr
fonte
Pode estar relacionado com arduino.stackexchange.com/q/84/25
powtac
Também talvez relacionado com arduino.stackexchange.com/questions/20/...
Você pode ter o problema de que o erro ocorre apenas em um Arduino físico (embora eu não pudesse dar um exemplo).
Polar
@ Polar Em termos de lógica do programa, não consigo imaginar como. Você poderia, talvez, postar algum exemplo?
asheeshr

Respostas:

19

Existem alguns projetos do Arduino Simulator por aí.

Talvez um dos mais maduros seja o Virtronics Simulator for Arduino , vídeo do YouTube aqui .

Virtronics Arduino Simulator

A página da Virtronics vinculada acima também lista alguns outros simuladores do Arduino, gratuitos e pagos.

Dado o interesse que o Arduino desperta, é provável que haja muitos outros simuladores por aí, então não adianta tentar listá-los todos em uma resposta aqui.

O que vale a pena notar é que também há um aplicativo para iPhone do Arduino Simulator : essa não é uma recomendação, pois ainda não o vi em operação.


Em uma nota lateral:

O Arduino é em si um painel de prototipagem / experimentação. É ideal para programar código experimental, depurá-lo, modificar e, em seguida, re-piscar o código novo, praticamente quantas vezes quiser . Se o código travar, redefina e reflash com as alterações.

Portanto, o mérito de usar um simulador, que nunca pode emular perfeitamente os vários momentos do mundo real ou outros problemas que um aplicativo pode enfrentar, é questionável.

Se o custo do Arduino é a preocupação, existem algumas opções em aberto:

  • Arduino Nano barato clona o eBay - Eu tenho várias placas de aprimoramento Nano Meduino , elas funcionam de forma excelente e custam menos de US $ 10, incluindo remessas em todo o mundo: Meduino Nano Enhancement
  • Faça o seu próprio Arduino - O site do Arduino o orienta a fazer um em uma placa de ensaio , que nem precisa ser soldada!
Anindo Ghosh
fonte
Obrigado por compartilhar o link para o Virtronics Simulator!
Powtac
Sim, é muito mais fácil depurar e reflash. O flash ATMega328 é avaliado em 10000 ciclos de reescrita, portanto, mesmo se você o reescrever 10 vezes por dia, terá mais de dois anos de diversão antes de você :-) Muita diversão para um hobby. Se você gosta um pouco mais, pode usar placas mais novas para fazer a depuração e quando elas começarem a se desgastar (digamos, após 5000 ciclos?), Você pode usá-las para aplicativos estáveis ​​e comprar uma nova para depuração.
Lorenzo Donati apoia Monica
8

Você pode encontrar erros de tempo de execução se você pode percorrer manualmente seu programa com o Arduino conectado e depurar ( após baixar o código no Arduino). Está disponível no Visual Micro, embora exija o Visual Studio. Você pode definir pontos de interrupção, avaliar variáveis ​​e alterar valores de variáveis. Você também pode obter a visualização da memória ao longo do tempo:

insira a descrição da imagem aqui


fonte
Muito arrumado. Quão maduro é esse projeto - ou, melhor dizendo, esse IDE funcionou sem problemas em sua experiência?
boardbite
Eu não o usei para criação de perfil e apenas o usei brevemente, mas ele se integra muito bem e funciona bem para mim. Eu realmente aprecio a capacidade de depuração, sem recorrer a Serial.print
4

Uma maneira de fazer isso seria criar um programa wrapper para o código real, que simula todas as entradas e aceita saídas (criando assim um loop de feedback) conforme o ambiente real. Isso exigiria uma quantidade variável de esforço, dependendo do tipo de programa, grau de teste e número de entradas.

Lembre-se de que, ao escrever o programa wrapper, você deve seguir uma abordagem de caixa preta .

insira a descrição da imagem aqui

Caso contrário, seu código externo poderá não testar o programa da melhor maneira possível, pois, tendo em mente o código real ao criar o código de teste, você poderá ignorar casos de fronteira ou áreas problemáticas (isso foi observado durante o teste de caixa branca que é a alternativa).

asheeshr
fonte
Você conhece algum exemplo? A maioria dos códigos do Arduino que vi não possui testes de unidade adequados, mesmo para as partes que não exigem entrada / saída.
Jakob
@ Jakob Eu costumo escrever meu próprio código para o teste. É prático para pequenos projetos.
Asheeshr