今更、M5StickCPlusでLチカさせる
M5StickCPlusを触る機会が増え、ネットでいろいろと調べているのですが、その時に自分が基礎中の基礎である、M5StickCPlus本体のLEDを点灯・点滅(通称:Lチカ)させ、遊んでいないことに気づく。いや、僕が教科書としていた本には載ってなかったし・・・・
そこで、改めて基礎中の基礎であるLチカをトライしたいと思います。
もろもろの初期設定については割愛します・・・。
そもそも、M5StickCPlusについて・・・
当たり前のように話を進めようとしていましたが、前提としてM5StickCPlusについて書いておきます。
ざっくりというと、M5StickCPlus本体、液晶部下側にAボタン、側面にBボタンが配置されています。そして、内部にLEDが埋め込まれています。で、このLEDに「G10」という番号が割り当てられています。
Lチカしよう
ということで、さっそくLチカさせたいと思います。
まずはボタンを特に操作せず、勝手にずーっとLチカするプログラムを書き込んでいきます。
#include <M5StickCPlus.h>
void setup() {
pinMode(10,OUTPUT);
}
void loop() {
M5.update();
digitalWrite(10, LOW);
delay(1000);
digitalWrite(10, HIGH);
delay(1000);
}
超シンプル。これだけを書き込めばLチカします。すんげぇ簡単。
大まかに各部説明すると・・・
pinMode(10,OUTPUT);
指定したピン番号の入出力をここで設定。今回はLチカさせたいから、LEDに割り当てられている番号「10」を出力させたいので、こうなります。
M5.update();
M5StickCPlusのボタン状態を更新します。今回はボタン操作しないから、ぶっちゃけいらない。
digitalWrite(10, LOW);
delay(1000);
digitalWrite(10, HIGH);
delay(1000);
Lチカのキモです。
digitalWrite(10,LOW)でLEDライトを点灯させ、digitalWrite(10, HIGH);でLEDライトを消灯させます。
そして、delay(1000)というところが反応する秒数が書かれています。括弧の中の数字が反応する秒数(単位:ms(マイクロ秒))となります。
ちなみに今回の場合、括弧の中の数字が「1000」となっているので、
1000×0.001=1秒
となります。
なので、今回の場合、点灯・消灯を1秒間隔で交互に行うプログラムとなっています。
どうですか?とっても簡単ですよね?
ということで、このプログラムをベースにして、応用編に活きたいと思います。
Lチカ応用編
先ほどのプログラムだとずーっとLチカして鬱陶しいので、M5StickCPlusのボタンでLチカを制御させます。
ということで、先ほどのプログラムにボタンを押して離した場合のプログラムを追記させます。
ボタンを押して離したときに記載する一文は下記の通りになります。
M5.BtnA.wasReleased()
この場合、Aボタンを押して離したら・・・という記載となります。もし、Bボタンにしたい場合はBtnBとすればOK。
これを踏まえ、最初に書いたプログラムにLチカをボタンで制御できるようにしたのが、こちら。
#include <M5StickCPlus.h>
void setup() {
pinMode(10,OUTPUT);
}
void loop() {
M5.update();//M5のボタン状態を更新する
if(M5.BtnA.wasReleased()){ //Aボタンを押したとき
digitalWrite(10, LOW);//LEDが点灯する
delay(1000);
}
if(M5.BtnB.wasReleased()){ //Bボタンを押したとき
digitalWrite(10, HIGH);//LEDが消灯する
delay(1000);
}
}
とっても簡単。
ボタンを押して離す動作について、ifという条件を使うことで、「押して離した時どうなるか?」というのを制御しています。
最後に
今回は基本的なLチカについて、簡単に記載しました。
複雑な動きをするプログラムでも、基本的なプログラムにたくさんの肉付けをしていけばなんとかなると思っているので(知らんけど)、改めて、基礎を学んだうえで、もっと勉強したいと思います。