Skip to content

Instantly share code, notes, and snippets.

@RyoKosaka
Created December 12, 2023 15:35
Show Gist options
  • Save RyoKosaka/37e53b2ae347a847b7545acce53db723 to your computer and use it in GitHub Desktop.
Save RyoKosaka/37e53b2ae347a847b7545acce53db723 to your computer and use it in GitHub Desktop.
プロダクトデザイン応用実習サンプルコード - Arduino Leonardoでジョイスティックをマウスとして使う
// プロダクトデザイン応用実習サンプルコード - Arduino Leonardoでジョイスティックをマウスとして使う
// 参考:マウス https://garretlab.web.fc2.com/arduino_reference/language/functions/usb/mouse/
// Arduinoをマウスにするライブラリ「Mouse」を使いますという宣言
#include <Mouse.h>
void setup()
{
Mouse.begin(); // Mouseライブラリを使うためのおまじない
}
void loop()
{
int sensorX = analogRead(A0); // X軸をA0ピンに繋ぐ
int sensorY = analogRead(A1); // Y軸をA1ピンに繋ぐ
int buttonState = digitalRead(7); // 7番ピンにボタンを繋ぐ
// 0から1023だと扱いづらいので-10から10に変換する。
sensorX = map(sensorX, 0, 1023, -10.0, 10.0);
sensorY = map(sensorY, 1023, 0, -10.0, 10.0);
// 個体差を吸収するために閾値を用意する
int threshold = 1;
if (sensorX > threshold || sensorY > threshold || sensorX < -threshold || sensorY < -threshold)
{
float speed = 0.5; // 動きすぎるのでこの値を掛けて減速する (floatは小数を扱える変数)
Mouse.move(sensorX * speed, sensorY * speed, 0);
}
// ボタンを押したとき
if (buttonState == HIGH)
{
Mouse.press(MOUSE_LEFT); // 左クリック
}
// ボタンを離したとき
else
{
Mouse.release(MOUSE_LEFT);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment