e日記風 独り言

#気まぐれ & 気まま & 天邪鬼な老いぼれ技術屋の日々の記録のうち、パソコン技術やインターネット技術、プリンタやPCアプリからプログラム言語などに関連した記事です。
右端上端の同一カテゴリージャンプボタンで同じカテゴリーの他の記事を順番にご覧いただけます。
Access Counter:  総アクセス数

楽 天 の 商 品

-2043- 大きな発見:その1
仕事の関連で「70の手習い」的に MCUのプログラムを C言語で組んでいると以前にも書いた。ターゲットの MCUは去年のうちはローエンド ARMコアのチップを使って、開発ツールは μVisionだった。それが今年始め辺りから、安価な LCDモジュールに測定データを表示させる必要が生じて LCD駆動などのライブラリが豊富な Arduinoと言うホビーでよく使われるキバンユニットを使ってプログラムするようになった。搭載されているMCUチップは Atmelの atmega88系 8bit RISCコア。しかし、この Arduino用開発ツールには標準の Arduino IDEにしても、VisualStudio Codeにしてもデバッガが備わっておらず(と言うより Arduino UNOなどのユニットにデバッグ用別チップが搭載されていない)。
だから割込などを利用した途端に壁にぶつかる。こちらも「70の初心者」なので然程高度なデバッグは出来ないが、初心者なりにバグも多いからブレークポイントを設定してそこで変数の値をチェックするくらいのことはしたいと思ってもボード上の LEDを点滅させることくらいしか出来ないのでは痒いところまでなかなか手が届かない。Webではシリアルでターミナルに変数の値を出力してデバックとか書かれているが、別のシリアルラインやUSB変換アダプタを繋ぐのも億劫だ。
このままシコシコ トライアンドエラーを続けると果てしない泥沼に嵌りそうで、何かそうならない手はないかと Webで検索を繰り返しているうちに回路シュミレータの中に Arduino UNOのパーツモデルが使えるものがあるらしいと分かった。そのシュミレータのコード実行機能の中に ブレークポイントを設定して、そこで実行を停止して変数の確認ができると言う記述があるのを目ざとく見つけたが、操作方法などの詳細はなかった。
早速幾つかの記事から Thinkercadと言う ブラウザベースの無料のシュミレータに候補を絞り込んで使ってみた。機械系 3D CAD でメジャーな 123Dの Autocad社が買収したサービスで、同じプラットフォームで 3D CADのモデリングデザインと回路シュミレーションが可能だという。ブラウザベースなのでプログラムのインストールが必要なく、URLにアクセスして IDを登録するだけで利用可能になる。
で、実際に利用してみて驚いた! Arduinoや抵抗、LEDなどの主要パーツが右側に並んでいるので必要なパーツを D&Dしてから、パーツの端子を右クリックして結線すれば受動部品だけなら完成。電池とLEDと抵抗とスイッチをつないでおいてスイッチを押せば画面上で LEDが光る(色が変わる)。非常に直感的で判り易い UIで初めてでも殆ど戸惑わない。 Arduinoの場合はコードボタンを押すとLEDが点滅する所謂「Lチカ」と言うサンプルコードが記述されたコードエディタがパーツリストの代わりに開くので、そのまま「シュミレーションを開始」ボタン()を押したら LEDが点滅した。試しに外部に抵抗と LEDを接続してそのポートをボード上の LEDのボート番号に変えたら再コンパイルして外部 LEDが点滅した。ID登録からここまでおよそ 10分ほど。あっけなさすぎる!
さて、懸案のブレークポイントで停止させるには? と思ったら、どうやら「虫」のようなアイコン()がある。それをクリックしたらコードの右側に説明が表示された。
ブレークポイントはコードの行数字()をクリックすれば設定出来て、「シュミレーションを開始」ボタン()をクリックすればプログラムがそこで停止する。その状態で知りたい変数の上にマウスオーバーさせるとその変数の値が表示され()処理の途中経過が確認できる。この状態からプログラムの再開ボタン()をクリックすると次のブレークポイントまで実行される。()のボタンは「次の関数をステップオーバー」だが、関数でなければ1ステップ実行される。当然関数(サブルーチン)なら中の処理は飛ばすことが出来る。
ブレークポイントは幾つでも設定できるのでこれだけでかなり助かる。あとはブレークの条件設定や指定変数のトレースが出来れば言うことなしなんだが。
これが無料で使えるとは! こんなに簡単に使えるとは! と言う驚き。現在は LEDや LCD、ステッピングモータ、サーボモーターなどが画像上で表示されるだけだが、おそらく今後ギヤやレバーのような 3Dメカパーツをモーターで駆動して、スイッチなどで位置検出して制御する、その結果ロボットや車などが 3D画面上で障害物を避けて動き回る・・・・などと言うメカ・電気にまたがったクロスオーバーなシュミレーションが出来るようになるんだろう。楽しみだ。

冬に入って散歩もしなくなったし、花の写真もとんと撮らなくなった。今日は久しぶりの写真になるが、今頃は毎年同じ花をアップしている。敷地内に咲いているヒイラギナンテンの花。
2019/02/13