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() は実行部分を記述する。
実際に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チカチカでは面白くないのでモールスでテスト信号を表すVVV・・・と光るようにしている。
しかし、Cでプログラムを書くためには文法は勿論として、ライブラリーや関数に関する知識が不可欠だ。そこら辺の情報は何処にあってどう入手できるのだろうか。まだ先は長そうだ。

0 件のコメント:
コメントを投稿