SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

IoT Starter Studio

Wi-FiとBLEを搭載! ディスプレイと、拡張が容易なオプションパーツが新感覚の「M5Stack」を使ってみよう!

IoT Starter Studio 第24回

  • X ポスト
  • このエントリーをはてなブックマークに追加

手順2 Lチカにチャレンジ

 次に、M5Stackを使ってLチカしてみます。LチカとはLEDをチカチカ点灯させることで、最初のプログラムとしてサッと試すためによく使われます。

 M5Stackにはボタンが最初からついているので、今回は2つのLEDをボタンでON/OFFできるプログラムを書いてみます。

M5StackとLEDの配線図

 M5StackとLEDの配線は以下の図のようにします。

 M5Stackの「G」はGNDを表しています。

 また、LEDの極性(+と-)に注意して配線しましょう。足の長い方が+で短い方が-です。

 配線するとこのようになります。

回路図
回路図

プログラム

 プログラムには下記のコードをコピーして貼り付けます。

#include <M5Stack.h>

int ledPin1 = 21;
int ledPin2 = 22;
int ledState1 = LOW;
int ledState2 = LOW;

void setup() {
  M5.begin();
  M5.Lcd.printf("LED PIKA PIKA");
  pinMode(ledPin1,OUTPUT);
  pinMode(ledPin2,OUTPUT);

}

void loop() {
  if(M5.BtnA.wasPressed()){
    ledState1 = HIGH;
    digitalWrite(ledPin1,ledState1);
  }

  if(M5.BtnB.wasPressed()){
    ledState2 = HIGH;
    digitalWrite(ledPin2,ledState2);
  }

  if(M5.BtnC.wasPressed()){
    ledState1 = LOW;
    ledState2 = LOW;
    digitalWrite(ledPin1,ledState1);
    digitalWrite(ledPin2,ledState2);
  }

    m5.update();
}

プログラムの解説

 順を追って説明していきます。まず、M5Stackのライブラリを設定します。

#include <M5Stack.h>

 次に、M5StackにLEDを接続したピン番号を指定します。そして、そのピンの最初の状態を「LOW」としておきます。これはつまり、そのピンに電圧が入力されていないということです。

int ledPin1 = 21;
int ledPin2 = 22;
int ledState1 = LOW;
int ledState2 = LOW;

 そして、void setup()の中に「M5Stackを動かす」という合図を示す「M5.begin()」を書きます。また、それぞれのピンの状態をpinMode(ピン番号, 状態)という関数で表します。この関数に格納されている値は先ほど指定したものとなります。

void setup() {
  M5.begin();
  M5.Lcd.printf("LED PIKA PIKA");
  pinMode(ledPin1,OUTPUT);
  pinMode(ledPin2,OUTPUT);

}

 そして、void loop()の中には実際の動作をプログラムします。

 M5.BtnA.wasPressed()M5.BtnB.wasPressed()M5.BtnC.wasPressed()は、「それぞれボタンA/B/Cが押された」ということ認識します。if文と組み合わせて使うことで「ボタンA/B/Cが押されたら、ある動作をする」というように使うことができます。

void loop() {
  if(M5.BtnA.wasPressed()){
    ledState1 = HIGH;
    digitalWrite(ledPin1,ledState1);
  }

  if(M5.BtnB.wasPressed()){
    ledState2 = HIGH;
    digitalWrite(ledPin2,ledState2);
  }

  if(M5.BtnC.wasPressed()){
    ledState1 = LOW;
    ledState2 = LOW;
    digitalWrite(ledPin1,ledState1);
    digitalWrite(ledPin2,ledState2);
  }

    m5.update();
}

 プログラムは上から、

  • 「ボタンAが押されたら、ピン番号21がHIGHになる(ピン番号21につないだLEDが点灯する)」
  • 「ボタンBが押されたら、ピン番号22がHIGHになる(ピン番号22につないだLEDが点灯する)」
  • 「ボタンCが押されたら、ピン番号21と22がLOWになる(ピン番号21と22につないだLEDが消灯する)」

 というプログラムになっています。

 また、最後のm5.update()はM5Stackでプログラムを動かすためのおまじないのようなものなので記述しておきましょう。

プログラムを書き込む

 では、このプログラムをArduino IDEからM5Stackに書き込んでみましょう。

 まず、「ツール」→「ボード」→「M5Stack-Core-ESP32」を選択します。

 次に、「ツール」→「シリアルポート」から表示されたシリアルポートを選択します。

 そして、プログラムを書き込むには図のように「?」を選択します。エラーがなければ、画像のように表示されます。

実行結果

 実行し、以下のように動作すれば成功です。

次のページ
おわりに

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
IoT Starter Studio連載記事一覧

もっと読む

この記事の著者

たくろーどん(dotstudio株式会社)(タクロードン)

 高専を卒業したのち、大学に編入し航空宇宙工学を学んでいる。研究テーマは人工衛星の推進機について。受け身に学ぶだけでなく何かアウトプットしてみたいと思い、dotstudioに参加し、ものづくりをしている。 Twitter: @takudooon / dotstudio株式会社

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10853 2018/05/31 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング