Skip to content

Instantly share code, notes, and snippets.

@RyoKosaka
Created December 12, 2023 15:38
Show Gist options
  • Save RyoKosaka/d3c2fc5b00704599873d0f7ca911b0f8 to your computer and use it in GitHub Desktop.
Save RyoKosaka/d3c2fc5b00704599873d0f7ca911b0f8 to your computer and use it in GitHub Desktop.
プロダクトデザイン応用実習サンプルコード - ESP32でジョイスティックをマウスとして使う
// プロダクトデザイン応用実習サンプルコード - 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