教材については『こどもプログラミング教室』と互換性のあるESP32-S3をベースにした学習キットを使います。freenoveの回し者ではないですが、このキットは値段の割に学べることが多くてとても良いです。
購入はこちらから
環境構築についてはこちらを参考にしてください
では早速ESP32-S3開発ボードをPCに接続しましょう。
はじめは外部電源無しで良いです。USBケーブルのすぐ下にDCジャックがあるので、そこから5vまたは3.3vを給電することもできます。
ArduinoIDEの画面からボードを認識させます。
[ツール]⇒[ボード]⇒[esp32]⇒[ESP32S3 Dev Module]です。
ここはこども用と少し違います。
同様にポートを選びましょう。
内蔵のLEDはGPIO2に割り当てられています。
早速スケッチを動かしてみましょう。
ソースコードはこちら
/********************************************************************** * Filename : Blink * Description : Make an led blinking. * Auther : www.freenove.com * Modification: 2022/10/19 **********************************************************************/ #define LED_BUILTIN 2 // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
ArduinoIDE画面左上の[→]書き込みボタンを押します。
すると、内蔵されている青いLEDがチカチカします。可愛いですね。
コード解説
まずプログラミングに限らず何かを習得するための基本は『守破離』です。
茶道や武道の修行プロセスを表す言葉ですね。
1.先人の教えを守り、型を身につけるところから始まります。
2.次に型を破り、オリジナリティを出していきます。
3.最後に流派を離れ、自らの流派を作っていきます。
ですので、プログラミングに於いても、まずは理由が分からずともコピーをして真似をしていくというのは大切です。
その大前提を念頭に以下読み進めて下さい。
1~6行目を見てみましょう。
/********************************************************************** * Filename : Blink * Description : Make an led blinking. * Auther : www.freenove.com * Modification: 2022/10/19 **********************************************************************/ #define LED_BUILTIN 2 // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
これはコメントです。プログラムを書くときのお作法として、ファイル名や概要、書いた人、最終更新日、ライセンス等を書いておきます。
コメントなので書いても書かなくても、プログラムの動作には関係ありません。
Arduino言語(≒C言語)では2種類のコメントの書き方があります。
一つは『/*』から始まって『*/』までの間をコメントとして扱う方法です。
もう一つは『//』から行末まで、です。行頭から『//』の直前まではコードとして有効です。
次に7行目を見てみましょう。
/********************************************************************** * Filename : Blink * Description : Make an led blinking. * Auther : www.freenove.com * Modification: 2022/10/19 **********************************************************************/ #define LED_BUILTIN 2 // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
プリプロセッサのマクロ定義なのですが、プログラミング初心者のうちはあまり深く考えなくて良いです。『LED_BUILTIN は 2 と読み替えよ』という定義をしています。ですので、このあとソースコード中に『LED_BUILTIN』と出てきたら、プログラムとしては『2』と置き換えて実行されます。
9~12行目を見てみましょう。
/********************************************************************** * Filename : Blink * Description : Make an led blinking. * Auther : www.freenove.com * Modification: 2022/10/19 **********************************************************************/ #define LED_BUILTIN 2 // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
ここは初期化処理をする箇所です。起動時に1回だけ処理が実行され、以降は実行されません。
今回はピン『2(LED_BUILTIN)』を『アウトプット(=出力)』モードに変更しています。
次に15~20行目です。
/********************************************************************** * Filename : Blink * Description : Make an led blinking. * Auther : www.freenove.com * Modification: 2022/10/19 **********************************************************************/ #define LED_BUILTIN 2 // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
ここがメインの処理です。この『loop』の『{』から『}』までの間が繰り返されます。
digitalWriteは0か1かを出力するという命令です。
0はLOWで0V(ゼロボルト)の電圧です。
1はHIGHで3.3Vの電圧です。
これによって2番のピンの電圧を変えているわけですね。
delayは直訳すると遅延ですが、『待ち合わせ』というニュアンスです。ミリ秒単位でプログラムの動作を一時停止させます。ここでは1000ミリ秒=1秒の待ち合わせです。
電圧を3.3Vに設定→1秒待つ→電圧を0Vに設定→1秒待つ の繰り返し
というコードです。待ち時間を変えたりすると点滅のパターンを変えられますので、試してみて下さい。
GPIOの電圧について
GPIOの電圧はマイコンによって異なるので注意が必要です。ESP32やRaspberry Piでは3.3Vですが、Arduinoでは5Vです。使用する機器の仕様をよく確認しないと壊すことになるので注意しましょう。
次回は外部のLEDを光らせます。
コメント