それでは毛玉諸君、これにて失敬

日々の精進を備忘録的に綴ります。

はじめてのマイコンボード(M5stickC plus その2)

前回はサンプルコードを書きこんでピカピカさせて終わりました。

前回のピカピカ

サンプルコードを読んでみましょう。

// library
#include <M5StickCPlus.h>

void setup()
{
  M5.begin();
  
  // シリアル通信を開始、通信速度を設定
  Serial.begin(115200);
  // 500 ms 待機
  delay(500);

  // シリアルモニタに表示
  Serial.print("M5StickC-plus Start\n");

  // M5StickC Plus のLCD画面に表示
  M5.Lcd.print("Hello World");

  // GPIO 10ピンを出力モードに設定
  pinMode(10, OUTPUT);
}

void loop()
{
  // GPIO 10ピンにHIGH信号を出力 -> LED点灯
  digitalWrite(10, HIGH);
  Serial.print("LED TURN ON\n");
  delay(1000);
  // GPIO 10ピンにLOW信号を出力 -> LED消灯
  digitalWrite(10, LOW);
  Serial.print("LED TURN OFF\n");
  delay(1000);
}

注釈を入れてみました。
setupで初期化を行い、以降はloopの処理が行われます。
シリアルモニタへの出力はSerial Monitorというvscode拡張機能を入れることで見ることができます。

qiita.com

また、LEDを操作するためのピンは本体裏面に記載がありました。

よく見るとLED G10 という記載がある

ボタンに対応するピンの記載もあり、AボタンはG37、BボタンはG39を使えばよさそうな雰囲気があります。

ボタンを押し続けている間だけLEDを光らせる

ボタンPUSHとLED点灯を対応させてみます。
ボタンの信号を入力として受け取り、IF文でGPIO 10ピンに書き込みを行います。

#include <M5StickCPlus.h>

void setup()
{
  M5.begin();
  Serial.begin(115200);
  delay(500);

  Serial.print("M5StickC-plus Start\n");

  M5.Lcd.print("Hello World");

  pinMode(10, OUTPUT);
  // Aボタン
  pinMode(37, INPUT);

}

void loop()
{
  if (digitalRead(37) == HIGH)
  {
    digitalWrite(10, HIGH);
  }
  else
  {
    digitalWrite(10, LOW);
  }
}

できました!
ちなみにボタン管理用のクラスを使うとM5.BtnA.wasPressed() とかでボタンの状態を判定できます。

lang-ship.com

なんとなく書き込み方法が分かってきました。
そろそろ本題の二酸化炭素測定器を作っていこうかと思います。