◆Wiiリモコンには、4つのLEDがあります。
これをESP32とBluetoothで接続してLチカしてみました。
これをESP32とBluetoothで接続してLチカしてみました。
動作確認環境(2020/02/23時点)
①Windoes11 Pro x64
②Arduino IDE V1.8.19
➂ESP32ライブラリV2.0.2
④下記Wiimoteライブラリ
1.まずライブラリを、下記よりZIPファイルをダウンロードして、
Arduino IDEのライブラリフォルダに解凍します。
私は、「Arduino-ESP32Wiimote-master」から「Arduino-ESP32Wiimote」にリネームしました。
これで、付属のサンプルプログラムでWiiリモコンの各ボタンのテストが出来ます。
しかし、このままでは、4つのLEDが制御出来ません。
2.4つのLEDを制御するために、先ほど解凍した「Arduino-ESP32Wiimote」フォルダの
中の次の4つのライブラリを追記修正します。
①ESP32Wiimote.cpp
②ESP32Wiimote.h
➂TinyWiimote.cpp
④TinyWiimote.h
ここで使っているファイル比較ソフト「WinMerge」は、下記でダウンロード出来ます。
◆左側が追加修正部分、右側が原本です。画像をクリックすると拡大されます。
①「ESP32Wiimote.cpp」の修正箇所
②「ESP32Wiimote.h」の修正箇所
➂「TinyWiimote.cpp」の修正箇所
④「TinyWiimote.h」の修正箇所
3.修正したら下記の「ESP32WiimoteLED.ino」ファイルをコンパイルしESP32に書き込みます。
動作は、
①Wiiリモコンの「A」釦を押す毎に、ESP32の青色LEDがON/OFFします。
②「+」釦を押す毎に4つのLEDが二進表示で増えて点灯します。
➂「-」釦を押す毎に4つのLEDが二進表示で減って点灯します。
④「ホーム」釦を押すと4つのLEDが全部消灯します。
#include "ESP32Wiimote.h" #define LED 2 ESP32Wiimote wiimote; int i=1; void setup(){ Serial.begin(115200); Serial.println("Wiimote Start"); pinMode(LED, OUTPUT); wiimote.init(); wiimote.addFilter(ACTION_IGNORE, FILTER_NUNCHUK_ACCEL); } void loop(){ wiimote.task(); if (wiimote.available() > 0) { uint16_t button = wiimote.getButtonState(); Serial.printf("%04x\n", button); if (button == ESP32Wiimote::BUTTON_A) { Serial.println("A button ON"); if (digitalRead(LED)) { digitalWrite(LED, LOW); } else { digitalWrite(LED, HIGH); } } else if (button == ESP32Wiimote::BUTTON_PLUS) { Serial.println("PLUS button ON"); i++;if (i>15) i=0; wiimote.setLEDs(i); } else if (button == ESP32Wiimote::BUTTON_MINUS) { Serial.println("MINUS button ON"); i--;if (i<0) i=15; wiimote.setLEDs(i); } else if (button == ESP32Wiimote::BUTTON_HOME) { Serial.println("HOME button ON"); wiimote.setLEDs(0); i=0; } /* ヌンチャクを試験する時は、コメントを取る NunchukState nunchuk = wiimote.getNunchukState(); Serial.printf("nunchuk:"); Serial.printf(" X-Stick: %d", nunchuk.xStick); Serial.printf(" Y-Stick: %d", nunchuk.yStick); Serial.printf(" X-Axis: %d", nunchuk.xAxis); Serial.printf(" Y-Axis: %d", nunchuk.yAxis); Serial.printf(" Z-Axis: %d", nunchuk.zAxis); Serial.printf(" C-Button: %02x", nunchuk.cBtn); Serial.printf(" Z-Button: %02x", nunchuk.zBtn); Serial.printf("\n"); */ } delay(10); }
4.ESP32をリセット後、Wiiリモコンの①②を同時に押し、4つのLEDを点滅させます。
しばらくすると、左の1個だけ点灯に代わりコネクトできます。
途中でコネクトする前に消灯したらまた①②を同時に押してコネクトするのを待ちます。
下記は、コネクト時のWiiリモコンの状態(左の1個だけ点灯)
下記は、リセット、コネクト後、「+」「-」など操作時のシリアルモニタの画面です。
5.次にあとヌンチャクを接続した時に有用なライブラリです。
先ほどのライブラリにヌンチャクに関して強化したものです。
以上
























