今までデスクトップアプリやWeb開発に主に携わってきたので、組み込みとかハード系、特に電気系統が少しでも絡むと拒絶反応を起こしていた。
そんな自分を鍛えるべく、組み込みの初心者向けということでM5Stackなるものを触ってみた。
どうせ作るなら実用性があるものがいいので、PIRセンサーを使ってセンサーライトを作ってみることにした。
とってもシンプル。
M5Stack BasicとPIRセンサー、あと電源としてモバイルバッテリーを接続。
仕組みは簡単。PIRセンサー(平たく言うと人感センサー)から来るON/OFFの信号に合わせて画面を光らせたり暗くしたりするだけ。
試しにPIRセンサーを何かしらで覆ってみると画面が暗くなった。
そんでプログラムは以下。環境はArduino IDE。バージョンは1.8.10
.cpp
#include <M5Stack.h>
#define PIR_PIN 2
bool isPirOn = false;
void setup() {
M5.begin();
// スリープ状態にしておく
M5.Lcd.sleep();
M5.Lcd.setBrightness(0);
// 画面を白くすることにより照明の代わりにする
M5.Lcd.fillScreen(WHITE);
pinMode(PIR_PIN, INPUT);// set pir sensor pin as input
}
void loop() {
int value = digitalRead(2);// read the pin(0: not detectd 1: detected)
if (value == 0)
{
if (isPirOn == true)
{
isPirOn = false;
// スリープ状態にしておく
M5.Lcd.sleep();
M5.Lcd.setBrightness(0);
M5.update();
}
}
else
{
if (isPirOn == false)
{
isPirOn = true;
// スリープ状態を解除して点灯状態にする
M5.Lcd.wakeup();
M5.Lcd.setBrightness(255);
M5.update();
}
}
delay(500);
}
もう少し実用性を考えるなら、PIRセンサーがOFFになっても点灯を10秒くらい保持するとか入れた方が良いかも。