Created
December 12, 2023 15:38
-
-
Save RyoKosaka/d3c2fc5b00704599873d0f7ca911b0f8 to your computer and use it in GitHub Desktop.
プロダクトデザイン応用実習サンプルコード - ESP32でジョイスティックをマウスとして使う
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// プロダクトデザイン応用実習サンプルコード - ESP32でジョイスティックをマウスとして使う | |
// ESP32をBluetoothマウスにするライブラリ「BleMouse」を使いますという宣言 | |
#include <BleMouse.h> | |
BleMouse bleMouse("your mouse"); | |
void setup() | |
{ | |
pinMode(13, OUTPUT); // 13番ピンを出力に使う(LED) | |
bleMouse.begin(); // bleMouseライブラリを使うためのおまじない | |
} | |
void loop() | |
{ | |
// Bluetooth接続されたとき | |
if (bleMouse.isConnected()) | |
{ | |
digitalWrite(13, HIGH); // 接続されたことがわかるようにLEDを点灯させる | |
int buttonState = digitalRead(12); // 12番ピンにボタンを繋ぐ | |
int sensorX = analogRead(34); // X軸を34ピンに繋ぐ | |
int sensorY = analogRead(35); // Y軸を35ピンに繋ぐ | |
// 0から4095だと扱いづらいので-10から10に変換する。 | |
sensorX = map(sensorX, 0, 4095, -10.0, 10.0); | |
sensorY = map(sensorY, 4095, 0, -10.0, 10.0); | |
// 個体差を吸収するために閾値を用意する | |
int threshold = 3; | |
if (sensorX > threshold || sensorY > threshold || sensorX < -threshold || sensorY < -threshold) | |
{ | |
float speed = 0.8; // 動きすぎるのでこの値を掛けて減速する(floatは小数を扱える変数) | |
bleMouse.move(sensorX * speed, sensorY * speed, 0); | |
} | |
// ボタンを押したとき | |
if (buttonState == HIGH) | |
{ | |
bleMouse.press(MOUSE_LEFT); // 左クリック | |
} | |
// ボタンを離したとき | |
else | |
{ | |
bleMouse.release(MOUSE_LEFT); | |
} | |
} | |
// Bluetooth接続されていないとき | |
else | |
{ | |
digitalWrite(13, LOW); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment