今から始める電子工作 ② まずはLチカ その1 準備
電子工作に限らず、慣れないうちは、コンピュータがどのように動いているのかわかりません。そのようなとき、I/Oポートの電圧をLow/Highしてみて、どうなるかを見ます。
I/Oポートとは、入力に使うスイッチや出力に使うモータなどをつなぐ端子です。Arduinoでは、ディジタルとアナログ端子群が用意されています。
Low/Highとは、論理でいえば0/1です。電圧でいえば、電源電圧の半分以下ならLow、半分以上ならHighですが、ほとんどの場合、Low=0V、High=電源電圧(5Vもしくは3.3V)と解釈します。
確認作業では、テスタを使って電圧を調べるのもよいのですが、手軽にできるのは、出力端子にLEDをつないで、点滅させる方法です。LEDをチカチカさせるので、略してLチカするといいます。
●利用できるI/Oピン
メーカの資料、
https://docs.arduino.cc/resources/pinouts/ABX00087-full-pinout.pdf
に、端子の解説が掲載されています。ひとつの端子に、複数の機能が書かれてます。
少し整理したのを掲載します。Arduinoで使われるのはオレンジ色のピンがデフォルトの機能です。
図の右側にDigital、左下にAnalogピンが複数あります。この図では、端子はHigh=5Vです。元の図には、そのほかに利用できる端子が掲載されていますが、High=3.3Vが多いです。3.3V端子に5Vを印加させてはいけないと注意書きがあります。ICがダメージを受けるようです。
D13と書かれた端子を見ます。そのDigitalピンには、右下にあるLED_BUILTENがつながっています。
端子とピンは同じ意味で使っています。
回路図を見ます。D13ピンはMOS FETにつながり、それは、抵抗とLEDを経由して+5Vにつながっています。
MOS FETは、ゲートの電圧が2.xV以上(High)になるとONし、ドレインとソースが導通状態になります。つまり、スイッチがONになったのと同等です。したがって、LEDに電流が流れて点灯します。回路図には黄色と書かれていますが、どちらかといえばオレンジ色に近いです。
●プログラム=スケッチ
Lチカのプログラムは、サンプル例で用意されています。
File -> Examples -> 01.Basics -> Blink
Arduino IDEを始めて実行した場合、マイコン・ボードが選択できません。左のメニューから「ボード」のアイコンをクリックして、「Arduino UNO R4 Boards」を見つけ、INSTALLをクリックします。
上部のメニュー「Select Board」をクリックし「Arduino UNO R4 WiFi COM5」を選択します。
COM5は、利用しているPCによって数字が異なります。タスクバーにあるWindowsアイコンを右クリックして「デバイスマネージャー」を選択します。
マイコン・ボードとPCをUSBケーブルで接続していると、COMポートが見えています。「USBシリアルデバイス」のドライバは、Arduino IDEをインストールしている最中に一緒にインストールされていました。
スケッチを見ます。スケッチとは、普通の用語でプログラムとかコードと呼ばれますが、Arduinoの特別な呼び方です。
/*と*/に挟まれた部分はコメントです。//から行末までもコメントです。
上部のメニューの「右矢印」のアイコンをクリックすると、コンパイルしてマイコン・ボードの実行プログラムがアップロードされます。アップロードとは、USBケーブルを通じてマイコン・ボードのROMに実行プログラムが書き込まれる動作を指しています。
アップロードが終わった後の画面です。
マイコン・ボードの黄色のLEDが1秒ごとに点滅し始めました。アップロードされた直後にマイコン・ボードはリセットされ、実行プログラムが動き始めます。この一連の動作は、マイコン・ボードにあらかじめ書かれているプログラムFirmwareが担当しています。
スケッチの中のdelay(1000)が点滅の周期を指定しています。ms単位ですから、たとえばdelay(100)と一桁小さい値に変更します。2か所あるのを両方変更し、コンパイル&アップロードのアイコンをクリックします。
とても早く点滅していると思います。
●I/Oピンがたくさんあるマイコン
本来、マイコンには、アドレス・ピンとデータ・ピンが出ていて、メイン・メモリにつなげるように設計されています。
Arduinoなどで使われるマイコンは、メモリは本体内部に内蔵されています。プログラムはEEPROMメモリに保存され、プログラムの実行時にはSRAMメモリが作業領域として使われます。どちらも、PCなどのCPUに比べれば容量はとても少ないです。
小さいほうでいえば、512バイトの製品があります。PCのメイン・メモリが16Gバイトであるのに比べればとても小さいです。
その代わりに、スイッチなどをつなげられるI/Oピンがたくさん用意されていて、制御用などに利用するのに向いています。
では、PCのCPUにI/Oがないかといえば、例えばI2Cシリアル・バスは用意されています。この連載でも何度も使うことになります。PCではSMBUSという名称で呼ばれますが、ほぼ同じ規格です。DRAMのパラメタを読み出したり、PCIeバスの設定?などに使われます。