Чи є спосіб імітувати запуск програми, перш ніж записати її на плату?


24

Програми часом можуть мати помилки під час виконання. Іноді їх важко знайти і їх легко пропустити. Чи є можливість протестувати програму, перш ніж насправді записати її на дошку?


Може бути пов’язано з arduino.stackexchange.com/q/84/25
powtac

Також, можливо, пов'язане з arduino.stackexchange.com/questions/20/…

У вас може виникнути проблема, що помилка трапляється лише на фізичному Arduino (я не можу навести приклад).
Полярний

@Polar З точки зору логіки програми, я не можу уявити, як. Чи не могли б ви розмістити будь-який приклад?
asheeshr

Відповіді:


19

Є кілька проектів Arduino Simulator.

Можливо, один із більш зрілих - це симулятор Virtronics для Arduino , відео YouTube тут .

Virtronics Arduino Simulator

Сторінка Virtronics, зв'язана вище, також містить декілька інших тренажерів Arduino, як безкоштовних, так і платних.

Зважаючи на інтерес, який викликає Arduino, там, швидше за все, буде ще багато таких тренажерів, тому немає жодного сенсу намагатися перераховувати їх у відповіді.

Варто зазначити, що є також додаток Arduino Simulator для iPhone : Це не рекомендація, ще не бачивши її в роботі.


Зі сторони:

Arduino сама по собі є дошкою для складання прототипів / експериментів. Він ідеально підходить для програмування експериментального коду, налагодження його, зміни та повторного спалахування свіжого коду, майже стільки разів, скільки подобається . Якщо код зависне, скиньте і перезавантажте будь-які зміни.

Тому заслуга використання тренажера, який ніколи не може ідеально імітувати різні терміни реального часу або інші проблеми, з якими може виникнути програма, є сумнівною.

Якщо вартість Arduino викликає занепокоєння, є кілька варіантів:

  • Недорогий Arduino Nano клонує з eBay - у мене є декілька плат Meduino Nano Enhancement , вони працюють чудово і коштують менше 10 доларів, включаючи доставку по всьому світу: Meduino Nano Enhancement
  • Створіть свій власний Arduino - Сайт Arduino проведе вас за допомогою виготовлення на дошці , яка навіть не потребує того, щоб ви нічого спаяли!

Дякуємо, що поділилися посиланням на Simulator Virtronics!
powtac

Так, налагоджувати та рефлексувати набагато простіше. Спалах ATMega328 оцінюється у 10000 циклів перезапису, тому навіть якщо ви переписуєте його 10 разів щодня, перед вами більше двох років розваг :-) Досить весело для любителя. Якщо ви просто трохи більше зайнялися цим, ви можете використовувати новіші дошки для налагодження, і коли вони почнуть зношуватися (скажімо, після 5000 циклів?), Ви можете використовувати їх для стабільних додатків і придбати нову для налагодження.
Лоренцо Донаті підтримує Моніку

8

Ви можете знайти помилки під час виконання програми, якщо ви можете вручну перейти через вашу програму за допомогою підключеного та відладженого Arduino ( після завантаження коду в Arduino). Це доступно у Visual Micro, хоча для цього потрібна Visual Studio. Ви можете встановлювати точки перерви, оцінювати змінні та змінювати значення змінних. Ви також можете отримати візуалізацію пам'яті з часом:

введіть тут опис зображення


Дуже акуратно. Наскільки зрілий цей проект - чи, швидше, цей IDE пройшов безперебійно за вашим досвідом?
бортбіт

Я не використовував його для профілювання, і лише коротко, але він інтегрується досить добре і працює для мене добре. Я дуже вдячний за можливість налагодження, не вдаючись до Serial.print

4

Один із способів зробити це - створити програму для обгортки для фактичного коду, який імітує всі входи та приймає виходи (тим самим створюючи цикл зворотного зв’язку) відповідно до реального середовища. Це потребує різної кількості зусиль, залежно від типу програми, ступеня тестування та кількості входів.

Майте на увазі, що під час написання програми для обгортки слід дотримуватися підходу до чорного поля .

введіть тут опис зображення

В іншому випадку ваш зовнішній код може не перевірити програму якнайкраще, оскільки пам’ятайте про фактичний код під час створення тестового коду може заперечити вас ігнорувати крайові випадки або проблемні області (Це спостерігалося, коли ви робили тестування White-Box, які є альтернативою).


Чи знаєте ви якісь приклади? У більшості коду Arduino, який я бачив, бракує належних тестових одиниць навіть для деталей, які не потребують введення / виводу.
Якоб

@Jakob Я зазвичай пишу власний код для тестування. Це практично для невеликих проектів.
asheeshr
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.