YouTubeで日本の電子部品店の歴史という動画が出ていた。見てみるとお馴染み秋月や共立と並んでSwitch Scienceが紹介されていた。私はSwitch Scienceは外資系の会社だと思っていたが日本人が興した日本の会社だ。細かい話は動画を見ていただくこととして、Switch ScienceがArduino日本導入の先駆者らしい。PICの次はArduinoかと考えて、試してみたくなった。Arduinoは秋月でも売っているがこれまで気にも留めていなかった。
Arduinoについて資料を漁り開発環境(Arduino IDE)をインストールした。たまたま秋月で興味本位で買ってデッドストックになっていた ESP32-DevKitC-32E はそのままIDEで扱えるようなので、お決まりのLEDチカチカに挑戦した。
IDEに付属のスケッチ例の中の 01.Basic にあった blink を試してみた。スケッチとは Arduino IDEにおけるプロジェクトに相当すると考えればよいようだ。スケッチはC/C++で記述し、最上位にmain() ではなく setup() と loop() という関数を記述する。setup() は初期化部分を記述し、loop() は実行部分を記述する。これは、
void main(){
setup();
while(1) loop();
}
という関係だと考えれば良いのだろう。
実際にIDEで例にあるプログラム(blink)をコンパイルすると、PICのコンパイラと比べやたら遅い。それにお決まりのコンパイルエラーだ。 エラーは次の記述で発生した。
pinMode(LED_BUILTIN, OUTPUT);
この LED_BUILTIN が不明だと。確かにプログラム中の何処にも LED_BUILTIN は規定されていないし、#include 文も無い。ここで全くの初心者なら途方に暮れ、投げ出す所だろう。ネットで pinMode を検索すると第一引数はピン番号を表す整数のようだ。ここに直接数字を書いても良いが #define 文で LED_BUILTIN を定義するのがCのやり方だ。そして出来上がったのが次のプログラムだ。
#define LED_BUILTIN 5
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
static void loop_sub(unsigned int len1, unsigned int len2) {
digitalWrite(LED_BUILTIN, HIGH);
delay(len1);
digitalWrite(LED_BUILTIN, LOW);
delay(len2);
}
void loop() {
loop_sub(200, 200);
loop_sub(200, 200);
loop_sub(200, 200);
loop_sub(600, 200);
delay(500);
}
単なる LEDチカチカでは面白くないのでモールスでテスト信号を表す V(= ...-)と光るようにした。
しかし、Cでプログラムを書くためには文法は勿論として、ライブラリーや関数に関する知識が不可欠だ。そこら辺の情報は何処にあってどう入手できるのだろうか。個人的には中身が見えないライブラリーは苦手だ。バグがあったり、メモリーを大量に消費したり、無駄なコードがあったり、見えない前提条件が設定されていたり、デバッグで苦労しそうな感が拭えないからだ。
しかしArduinoって名前は何を表しているんだ?製品名であり開発環境であるが、ESP32-DevKitC-32E も Arduino の範疇で扱える。Raspberry-Pi-Pico も Arduino IDE で扱えるらしい。なんか固定したイメージが無くぼんやりしていて良く分からない。まだまだ先は長そうだ。
(後日)
トラ技2025年10月号を見ると Arduino Uno にはオンボードLEDが搭載されており、それが13番ピンに接続されているらしい。その場合には LED_BUILTIN は規定値(13)として予め定義されているのだろう。それで Builtin か、納得。














