Arduino を「無料ソフト」でシミュレート

「Arduino しようぜ!」の第2回です。(「Arduino しようぜ!」は大谷選手の「野球しようぜ!」へのオマージュです。)
最初は前回の「冒険の始まり」編と今回の「シミュレート編」を1つの記事にしたのですが、あまりに長すぎたので分割しました。

Arduino UNO を実際に購入する前に、無料のシミュレータで遊んでみる企画です。
紹介する(オンライン)ソフトを使えば、自宅のパソコン内で色々な実験が行えます。

次回は「Arduino しようぜ!実機編」をお送りします。実際に Arduino UNO に OLED(小型ディスプレイ)をつないで文字を表示させます。
(前回の Arduino しようぜ!第1回目は、以下をクリック)

Arduinoのシミュレータ

現在(2024年)、Arduino のシミュレータを無料で利用できるソフトは、確認できたもので2種類ありました。

オンラインで使える AUTODESK 社の「Tinkercad」(旧 123d circuits)と、ダウンロードして使う「UnoArduSim」です。
どちらのソフトもパソコン上で配線をして、画面上の Arduino UNO でプログラムを動かした結果を見ることが出来ます。
(作ったプログラムは、(基本的には)実機に持ってきて動かすことが出来ます。)

Tinkercad

Tinkercad」は、以前は「123d circuits」と呼ばれていたものです。
CADで有名な「AUTODESK社」のソフトです。

ブラウザ上のオンラインで動くので、ネット環境が必須です。
細かな導入方法は、次の項で紹介します。

UnoArduSim

UnoArduSim」は、カナダのオンタリオ州にある、クイーンズ大学工学科のシモンズ教授によって開発されました。
教授は、学生がハードウェアを購入しなくて済むように、このソフトを開発したそうです。(なんて優しい!)

Arduino Uno と Mega をサポートしますが、メカ制御に関係しない一部の命令は現在のところ動きません。
(元々はロボットなどのメカ制御用に作成されているためです。)

画面構成は、左側に「コード」部と「変数」部があり、プログラムをここに記載します。

右側が「ラボベンチ」部で、「Configure(設定)」オプションから色々な周辺機器を選んだり接続したりすることが出来ます。
また、オシロスコープのように波形表示も出来ます。

今回は「UnoArduSim」は使いませんが、気になる方はダウンロードして圧縮ファイルを解凍するだけで使用できるので、ぜひ試してみてください。(無料です。)

Tinkercadの導入

アカウントの作成

「Tinkercad」を使用するには、オンラインで動くソフトなので、「サインアップ」からユーザ登録が必要です。
「個人で使用する」の「パーソナルアカウントを作成」をクリックします。

「電子メールでサインアップ」を選びます。

アカウントを作成します。
「日本」は、一番下の方にあるので選択します。
誕生日を選択したら「次へ」を押します。

電子メールとパスワードを設定したら、「アカウントを作成」を押すと、アカウントが作成されます。

「回路」の作成

設定したメールアドレスとパスワードでログインします。

Arduino のシミュレータ以外に、3D でデザインなどが出来るようです。
今回は、「回路」の「最初の回路設計を作成する」を選びます。

緑色の部分をマウスでクリックすると、こんな画面に移行します。

部品の配置

右側のタブの「基本」の下の検索窓に「Arduino」と入力すると「arduino uno r3」が選べます。
下の欄に出てくる Arduino UNO の図を選択すると、作業スペースに Arduino UNO が追加されます。

こんなふうに、USBケーブルとともに Arduino UNO が配置されます。
無料でパソコン上に、あなたの Arduino が入手できました!

マウス操作で移動や拡大ができるので、色々と触ってみましょう。

プログラムの確認

このままでは、ただの青い置物なので、初めての(?)プログラムを楽しみましょう。
右側の「コード」を押します。
何やら、青と黄色の派手な窓が開きます。

もう一度「コード」を押すと窓が閉じます。

このままでも良いのですが、今後のことを考えて「ブロック」を押して「ブロック + 文字」を選択します。
右側に追加された英語の羅列が、実際のプログラムですが、今はまだ触ってはいけません。(見るだけで我慢してください。)

ここには、ありがたいことに何もしなくても、Arduino の機能確認するためのプログラムが用意されています。(優しい世界)
ちなみに、Arduino ではプログラムのことを「スケッチ」と呼ぶので、今後はその名前を呼ぶことにします。

シミュレーションの開始

右上の「シミュレーションを開始」を押すと、スケッチが正常ならば(エラーやバグがないと言います。)緑色になって動作を開始します。

動画ではないので分かりづらいですが、シミュレーションが開始されると、Arduino に USB ケーブルが接続されます。
スケッチが正しければ、すぐに Arduino の左上の黄色 LED が点滅します。

LCD への文字の表示

本当は、OLED というディスプレイへの表示をやりたかったのですが、このシミュレータでは対応していないようなので、同じ様に使える I2C インターフェースの LCD(液晶ディスプレイ)への表示を行います。

部品の追加

すでに画面には Arduino UNO が配置されているので、ブレッドボードと LCD を配置します。
検索窓に「ブレッドボード」と入力して通常サイズの物(一番左)を選択します。

ちなみに、私は最初、英語で「breadboard」と入力したら、誰かが組立てた完成したものしかリストに出てきませんでした。
日本語(カタカナ)で「ブレッドボード」と入力すると空のボードが出てきます。

続いて、LCD を配置します。
「LCD」と入力すると3種類が選べます。

上2つは配線がたくさんあるタイプです。
一番下の「lcd 16 x 2 i2c」が使いたい LCD です。

全てを適当に画面に配置します。
好きに配置しても大丈夫ですが、回路図では左から右に処理が流れるので、入力が左で出力は右のほうが見やすいでしょう。

配線のやり方

まず、配置した部品の端子にマウスのポインタを移動すると、端子の用途が表示されます。
Arduino UNO の左下の端子の 5 個目にマウスのポインタを移動すると「5V」と表示されます。
配線をするには、ここをクリックします。
マウスを動かすと(動かすだけです。クリックしてはいけません。)線が自由に伸び縮みします。

ブレッドボードの一番上の行が「GND」、2行目が「+電圧用」なので、Arduino の「5V」とブレッドボードの「+電圧用」(2行目)をつなぎます。
緑の線で Arduino の 5 V とブレッドボードの+側がつながりました。

配線を間違ったときや、要らなくなって消したいときは、配線をマウスで選んでキーボードの削除(Delete)キーを押します。

配線の色

電源の配線の色以外に特に決まった色はありませんが、配線の用途で色分けると分かりやすいです。

私は、ブレッドボード用の配線(ジャンパーワイヤ)で用意されている色が、黒、赤、オレンジ、緑、黄、白、青、茶、グレー、紫の10色なので、以下のようにしています。(世間と大きく異なっている場合は修正します。)

+5 V : 赤色
GND : 黒色
+3 V : オレンジ
SDA : 緑色
SCL : 黄色

先程の電源用の +5 V は赤色にしたいので、画面上の緑の四角の部分をクリックして赤に変更します。

実際の配線

必要な配線は以下の4本だけです。
頑張ってつないでください。
色も自分の好みに変えておくと分かりやすいです。

ちなみに、配線の途中をダブルクリックすると点が追加されて、配線に90度の角を追加できるのできれいに線が並びます。
(きれいに並べなくても、機能には差はありません。)

Arduino 側

端子ボード
+5V+電圧用
GNDGND用
A4SDA用
A5SCL用

LCD 側

端子ボード
GNDGND用
VCC+電圧用
SDASDA用
SCLSCL用

スケッチの作成

本来スケッチは、Arduino IDE という Arduino 用に準備されているプログラムで作成するのですが、このシミュレータではビジュアルなプログラム環境が準備されているので、それを使ってみます。
LED を点滅させたときと同じで、「コード」を押します。

真ん中の列が、作業用のスペースです。

スケッチの準備

オレンジ色の「開始時」と「永久に」以外を消去します。
具体的には、青い「ビルトイン~」の上でマウスを右クリックすると、「ブロックを消す」が選べるので、消去します。
続いて2個めの青い「ビルトイン~」と、オレンジの「1秒を待機」を2つ消します。
(もし、「開始時」と「永久に」を消してしまった場合は、「ブロック」の「コントロール」内にあるので、再度配置します。)

LCD の初期設定

続いて、LCD の初期設定をします。
オレンジの「開始時」のくびれた空白部分に、青い「出力」の中から「LCD1タイプをI2C・・・」を選んでマウスで配置します。

これは、スケッチを開始する時に、この形式の LCD を使うという設定です。
現物の名前とアドレス(I2C 用の設定)を確認して合わせます。
LCD をクリックすると情報が表示されます。

タイプは「MCP2308」で、アドレスは「32」です。
スケッチに配置した、青い部分の記載を確認して、違っていればマウスで押して修正します。
(今回は、部品のタイプもアドレスも合っていたのでそのままです。)

LCD 表示のスケッチ

「開始時」の設定は終わったので、実際の処理を記載します。

(日本語が変ですが)オレンジの「永久に」内に、LCDのどこに表示するかの指定をします。
「LCD1 の位置を列 0 行 0 に設定」
これで、ディスプレイの1行目の最初に文字が表示されます。
ややこしいですが、「行0」は1行目を意味します。ここに「1」と入力すると2行目の意味になります。

次に実際の表示内容です。
青い「LCD1(hello world)に出力」(これも日本語が変ですが・・・)を選択して、先程の下に配置します。
全体では下のようにします。

ここまで出来たら、「シミュレーションを開始」を押すとスケッチが動き始めます。
LCD の表示内容の設定は「hello world」のままなので、LCD には以下のように表示されます。
ビジュアル・プログラムなら簡単ですね。

LCD へ名前の表示

次は最初の目標である「名前を表示する」をやってみよう!

ついでに、次の内容を追加します。
1 1行目に自分の名前を表示する。(アルファベット16文字以内で)
2 1秒待つ
3 2行目に、本日の年月日を表示する。
4 1秒待つ
5 画面を消す
6 繰り返す
色々やってみてください。

私は、「Yatte Miyoh!」と表示してみました。

実際のスケッチは、こんな感じになりますね。
LCD の表示位置と、LCD の表示内容の設定は、青い「出力」のグループにあります。
「1秒を待機」は、オレンジのコントロール内にあります。

上で説明したように、1行目に表示する設定は「行 0」、2 行目に表示する設定は「行 1」が間違いやすいです。
あとは、文字内容を変えたり、文字を表示する開始位置(列 0 の部分)を変えたりしてみましょう。

エラーが出た場合は、組み合わせを確認します。

実際のスケッチ

画面右上のコードの部分が「コードと文字」になっていれば、右側の窓にこのような表示がされています。

同じタイプの LCD が準備できれば、このスケッチを Arduino IDE に持っていけば、同じように LCD に名前が表示できます。

文字で書かれたスケッチの内容の詳細は「実機編」でやりますが、現在は、左側の青やオレンジのブロックを足したり消したりして、この部分がどのように変わるか見ておきましょう。

コメント