概要
前回は環境構築を行いました。今回は基本的なGPIOを使ったデジタル入出力とアナログ入力を確認したいと思います。
スケッチ
#include <M5StickC.h> #include <LinxESP32.h> #include <LinxESP32WifiListener.h> #include <LinxSerialListener.h> LinxESP32* LinxDevice; void setup() { M5.begin(); M5.Lcd.setRotation(3); LinxDevice = new LinxESP32(); LinxWifiConnection.Start(LinxDevice, 44300); LinxSerialConnection.Start(LinxDevice, 3); } void loop() { LinxWifiConnection.CheckForCommands(); LinxSerialConnection.CheckForCommands(); M5.update(); if (millis() % 1000 == 0) { M5.Lcd.fillScreen(BLACK); M5.Lcd.setCursor(0, 0); M5.Lcd.println("LinxESP32"); M5.Lcd.print("IP : "); M5.Lcd.println(WiFi.localIP()); byte macAddress[6]; WiFi.macAddress(macAddress); M5.Lcd.printf("MAC : %02X:%02X:%02X:%02X:%02X:%02X\n", macAddress[0], macAddress[1], macAddress[2], macAddress[3], macAddress[4], macAddress[5]); } if (M5.Axp.GetBtnPress() != 0) { ESP.restart(); } delay(1); }
今回はBluetoothSerial接続をするので、スケッチ例のBluetoothSerialを使ってください。
上記はM5StickCを使ってWi-FiとBluetoothSerialの両方で待ち受けする場合のスケッチです。スケッチのサイズが標準サイズを超えてしまったので、No OTAを選択してビルドしています。まだちょっと動作が不安定なので、電源ボタンを押すとリセットするコードになっています。
デジタル出力
LINX – Blink (Simple).vi
右側のLED Controlのボタンを押すことでLチカすることができます。シンプルってのは手動って意味みたいです。
動きはシンプルですね。LED ValueでHIGHかLOWを指定しているだけです。
LINX – Blink (Advanced).vi
アドバンストは自動でLチカします。こちらが一般的なLチカですね。
ブリンクのところは、TでTrueを与えて、Not回路で反転しているようです。左右の上下矢印がShift Registerという機能で、変数的なものかな?
全体ループの中にタイマーが入っているので、一定時間でループしているようです。
LINX – Digital Write N Channels.vi
わかりにくい画面なんですが、縦に4つ並んでいるのが各チャンネルの指定で、左側の数値が何個無効にするかを指定します。0を指定すると4チャンネルで、1を指定すると3チャンネル有効になります。
中身は1チャンネルと同じですね。
デジタル入力
LINX – Digital Read 1 Channel.vi
GPIOを指定して、状態が表示されます。シンプルですね。
こちらも特別なことは指定なさそうです。
LINX – Digital Read N Channels.vi
こちらはなぜか3チャンネル分しかありません。左側のが無効にする項目数は同じです。この場合全3チャンネル中1チャンネル無効にしているので、2チャンネル有効になっています。
M5StickCのボタンはプルアップされているので、通常は右側のLED表示が光っていますが、ボタンを押すと、消灯します。
処理はシンプルですね。
アナログ入力
かんたんにグラフにプロットできます。ただしESP32は無線を使うとADC2に接続されたGPIOはアナログ入力ができなくなるので注意してください。
処理もシンプルですね。
LINX – Analog Read N Channels.vi
複数のアナログ入力もかんたんにグラフ化できます。ただし無効設定したものがGPIO0のデータを取得してしまっているように見えます、、、
これはLINX側のサンプルAI側がいけないのかな?
こちらも処理は単純ですね。
Control 1 Type Def?
このチャンネル設定をしている場所を開くと、この画面がでてきます。いろいろ編集できそうですが、このブログでは深入りしないことにします。
プログラミングを楽しもうを読んでみた
前回紹介した無料の電子書籍を読んでみました。中学生向けと書いてありますが、ちょっと難易度が高い気がします、、、
書籍の中でシフトレジスタや、Type Defも説明されていました。ただ、LabVIEWはまわりに経験者がいないとなかなか使い方が難しいツールな気がします。
まとめ
基本的なGPIOの動作を確認することができました。PWMやDACなどの特殊な出力は次回以降に触ってみたいと思います。
コメント