プロジェクト15:ジョイスティック
このプロジェクトで学ぶこと: X軸・Y軸の2つのアナログ入力と押しボタンを組み合わせた複合入力デバイスを扱う方法を学びます。複数の入力をリアルタイムに読み取る応用力をつけます。
完成イメージ
[ジョイスティックを動かすとシリアルモニタにX・Y値が変化する様子のスクリーンショットを挿入]
必要な部品
| 部品名 | 数量 |
|---|---|
| Arduino Uno R3 | 1 |
| ジョイスティックモジュール | 1 |
| ブレッドボード | 1 |
| ジャンパー線 | 5本 |
回路図と配線
[回路図画像を挿入]
配線手順
- ジョイスティックの VCC を 5Vピン に接続する
- ジョイスティックの GND を GNDピン に接続する
- ジョイスティックの VRx(X軸) を A0ピン に接続する
- ジョイスティックの VRy(Y軸) を A1ピン に接続する
- ジョイスティックの SW(ボタン) を 2番ピン に接続する
Arduinoスケッチ(プログラム)
// ジョイスティックのX・Y値とボタン状態を読み取る
const int X_PIN = A0;
const int Y_PIN = A1;
const int SW_PIN = 2;
void setup() {
pinMode(SW_PIN, INPUT_PULLUP); // 内部プルアップ抵抗を使用
Serial.begin(9600);
}
void loop() {
int xValue = analogRead(X_PIN); // 0〜1023(中央付近が512)
int yValue = analogRead(Y_PIN);
int swState = digitalRead(SW_PIN); // 押すとLOW(プルアップのため)
Serial.print("X: ");
Serial.print(xValue);
Serial.print(" Y: ");
Serial.print(yValue);
Serial.print(" SW: ");
Serial.println(swState == LOW ? "押された" : "離れている");
delay(100);
}
コードのポイント解説
INPUT_PULLUP 外部にプルアップ抵抗を接続せず、Arduinoの内部プルアップ抵抗(約20〜50kΩ)を使います。ボタンを押すとGNDに接続されLOWになります。外部抵抗が不要でシンプルに配線できます。
三項演算子 条件 ? 値1 : 値2 if/elseを1行で書く省略記法です。swState == LOW ? "押された" : "離れている"は「LOWなら”押された”、そうでなければ”離れている”」という意味です。
2つのアナログ入力の同時読み取り analogRead(A0)とanalogRead(A1)を順に呼ぶことで、XY両軸の値をほぼ同時に取得できます。
動作確認
- スケッチをアップロードしてシリアルモニタを開く
- ジョイスティックを傾けるとX・Y値が変化し、押すと「押された」と表示されれば成功
- 中央位置のXY値はどちらも512付近になります
応用:ジョイスティックでサーボを動かしてみよう X軸の値をサーボの角度にmap()で変換するとリモコンになります。
このプロジェクトで学んだこと
- 複数アナログ入力: 2本の軸を同時に読み取る方法を習得しました
INPUT_PULLUP: 内部プルアップ抵抗でシンプルにボタン入力する方法を学びました- 三項演算子: 条件分岐を1行で書くコンパクトな記法を学びました
次のプロジェクト「リレーでON/OFF」では、Arduinoで家電レベルの電力を制御する方法を学びます。
深掘り:技術の背景と社会への広がり
ジョイスティックの発明:軍用機から家庭用ゲームへ
ジョイスティックの原型は1908年にフランスのルイ・ブレリオが飛行機の操縦桿として使ったのが始まりとされます。第二次世界大戦中に電動式のものが航空機の射撃制御装置として開発され、戦後に航空シミュレータ・産業機械の制御器として民間に移転しました。家庭用ゲームへの応用は1977年のAtari 2600が先駆けで、その後スーパーファミコン・PlayStation・Xbox Controllerへと進化を続けています。
インクルーシブデザインとアクセシビリティ
ジョイスティックは障害のある方にとって重要なアシスティブテクノロジーです。筋萎縮性側索硬化症(ALS)などで手の細かい動きが難しい方向けに、わずかな力で操作できる特殊ジョイスティックや唇・あごで操作するチンコントローラーが電動車椅子・PC操作に使われています。また近年のVR・ARヘッドセットでは手の動き(ハンドトラッキング)がジョイスティックの役割を担うようになっており、インターフェース技術の最前線が障害者の生活を豊かにする方向に進んでいます。
← プロジェクト14:74HC595シリアル制御 | 全プロジェクト一覧 | 次のプロジェクト:リレーでON/OFF →

