ボードに書き込む前に実行されるプログラムをシミュレートする方法はありますか?


24

プログラムには、実行時エラーが発生する場合があります。これらは見つけにくい場合があり、簡単に見落とされる可能性があります。実際にボードに書き込む前にプログラムをテストする方法はありますか?




エラーは物理的なArduinoでのみ発生するという問題があるかもしれません(例を挙げることはできませんでした)。
ポーラー

@Polarプログラムロジックの観点では、どのように想像することはできません。あなたは、多分、投稿できる任意の例を?
-asheeshr

回答:


19

Arduino Simulatorプロジェクトがいくつかあります。

おそらくもっと成熟したものの1つは、Arduino用Virtronics SimulatorですYouTubeビデオはこちら)

Virtronics Arduinoシミュレーター

上にリンクされているVirtronicsページには、無料と有料の両方の他のArduinoシミュレータもいくつかリストされています。

Arduinoが喚起する関心を考えると、そのようなシミュレーターがもっとたくさんある可能性が高いので、ここで答えにそれらをすべてリストしようとすることは意味がありません。

注目に値するのは、Arduino SimulatorのiPhoneアプリもあるということです。これは推奨事項ではなく、まだ動作中です。


サイドノート:

Arduinoはそれ自体がプロトタイピング/実験ボードです。実験的なコードのプログラミング、デバッグ、修正、そして新鮮なコードの再フラッシュに最適です。コードがハングした場合は、リセットして、変更を加えて再フラッシュします。

したがって、アプリケーションが直面する可能性のあるさまざまな実世界のタイミングやその他の問題を完全にエミュレートできないシミュレータを使用するメリットは疑わしいです。

Arduinoのコストが懸念される場合、いくつかのオプションがあります。


Virtronics Simulatorへのリンクを共有していただきありがとうございます!
powtac

はい、デバッグと再フラッシュがはるかに簡単です。ATMega328フラッシュの書き換えサイクルは10000回と評価されているため、毎日10回書き換えたとしても、2年以上の楽しみがあります:-)愛好家にとっては非常に楽しいです。もう少し詳しく知りたい場合は、新しいボードを使用してデバッグを実行できます。また、使い古した場合(5000サイクル後など)、安定したアプリケーションに使用したり、デバッグ用に新しいボードを購入したりできます。
ロレンツォドナティはモニカをサポートします14

8

Arduinoに接続してデバッグした状態でプログラムを手動で実行し、Arduinoにコードをダウンロードした、実行時エラーを見つけることができます。Visual Studioが必要ですが、これはVisual Microで使用できます。ブレークポイントの設定、変数の評価、変数値の変更ができます。時間の経過とともにメモリを視覚化することもできます。

ここに画像の説明を入力してください


とてもきちんとした。このプロジェクトはどれほど成熟していますか?それとも、あなたの経験上、このIDEはスムーズに実行されていますか?
ボードバイト

プロファイリングには使用していません。簡単に使用しただけですが、統合は非常によく、うまく動作します。Serial.printに頼らずにデバッグできることを本当に感謝しています

4

これを行う1つの方法は、実際の環境に従って、すべての入力をシミュレートし、出力を受け入れる(それによってフィードバックループを作成する)実際のコードのラッパープログラムを作成することです。これには、プログラムの種類、テストの程度、および入力の数に応じて、さまざまな労力がかかります。

ラッパープログラムを作成するときは、ブラックボックス アプローチに従う必要があることに注意してください。

ここに画像の説明を入力してください

そうでなければ、あなたの外側のコードは、あなたが境界例や問題領域を無視するようにテストコード5月バイアスを作成しながら、心の中で実際のコードを維持するように、プログラムだけでなく、可能性をテストしない場合があります(これが起こることが観察されているしながらホワイトボックステストをどの代替手段です)。


例を知っていますか?私が見たほとんどのArduinoコードは、入出力を必要としない部品に対しても適切な単体テストを欠いています。
ヤコブ

@Jakob私は通常、テスト用に独自のコードを作成します。小さなプロジェクトには実用的です。
-asheeshr
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.