ESP32でLINX for LabVIEW入門 その2 GPIO

概要

前回は環境構築を行いました。今回は基本的な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などの特殊な出力は次回以降に触ってみたいと思います。

続編

コメント