Arduinoコードとビデオ:二軸ジョイスティック
このチュートリアルでは、Arduinoで二軸(X-Y)ジョイスティックを活用する方法を解説します。このジョイスティックはゲームコントローラとしてやロボットアームの制御など、さまざまな用途に利用できます。主にジョイスティックの位置とプッシュボタンの状態を検出し、それをシリアルモニタに表示する方法に焦点を当てます。

チュートリアル全体を通して、ジョイスティックのX軸とY軸の位置を読み取り、それらをArduinoシリアルモニターに表示する簡単なプログラムを実装します。ジョイスティックが押されたときは、スイッチの状態も検知されます。コードの詳細な説明は、指定されたタイムスタンプ(動画の00:00)で必ずご覧ください。
ハードウェアの解説
このプロジェクトの主な構成要素は、二軸(デュアル軸)ジョイスティックモジュールとArduinoボードです。ジョイスティックモジュールは、X軸用とY軸用の2つの可変抵抗(ポテンショメータ)で構成されており、ジョイスティックの位置に応じたアナログ値を提供します。ジョイスティック上のプッシュボタンスイッチは、押されたことを検出するために使用されます。
ジョイスティックを動かすとポテンショメータの抵抗が変化し、それが0から1023までの値に変換されます。これによりジョイスティックの位置を正確に判定できます。プッシュボタンスイッチはArduinoのデジタル入力ピンに接続されており、内部プルアップ抵抗機能を使うことで外部抵抗なしでその状態を読み取ることができます。
データシートの詳細
| 製造者 | 一般的 |
|---|---|
| 部品番号 | 二軸ジョイスティックモジュール |
| ロジック/IO電圧 | 5 V |
| 電源電圧 | 5ボルト |
| 出力電圧範囲 | 0〜5 V |
| 解像度 | 10ビット(0-1023)アナログ |
| スイッチの種類 | プッシュボタン |
| パッケージ | 標準モジュール |
- ジョイスティックモジュールに適切な電源(5 V)を供給してください。
- ジョイスティックのXおよびY出力をそれぞれアナログピンA0とA1に接続してください。
- ジョイスティックのスイッチにはデジタルピン6を使用してください。
- スイッチピンにはプルアップ抵抗を使用してください。
- 出力値を監視して、0から1023の範囲にあることを確認してください。
配線手順


デュアル軸ジョイスティックをArduinoに配線するには、まずジョイスティックのグラウンドピンをブレッドボードのグラウンドレールに接続します。次に、ジョイスティックの5Vピンをブレッドボードのプラス(正)レールに接続します。XおよびYとラベル付けされたジョイスティックの2つの可変ピンはアナログピンに接続する必要がありますA0そしてA1それぞれArduino上で。
ジョイスティックのプッシュボタンスイッチはデジタルピンに接続してください6Arduino上で。この接続は内部プルアップ抵抗機能を利用しているため、外部の抵抗は必要ありません。最後に、スイッチの状態をLEDで監視したい場合は、LEDの長い脚をデジタルピンに接続してください13短い脚を680Ωの抵抗を介して接地する。
コード例とウォークスルー
Arduinoのコードでは、スイッチ用のピンを定義し、ジョイスティックの値をマッピングするための画面サイズを指定します。setup関数はシリアル通信を初期化し、スイッチ用ピンのモードを設定します。
void setup() {
Serial.begin(9600); // initialize serial communication
pinMode(sw, INPUT_PULLUP); // setting pin sw as input
pinMode(13, OUTPUT); // LED pin
}loop関数では、XおよびY位置のアナログ値を読み取り、それらを定義した画面サイズにマッピングします。スイッチの状態も読み取り、シリアルモニタに出力します。
void loop() {
int x = analogRead(A0); // read analog value for X
int y = analogRead(A1); // read analog value for Y
int sStat = digitalRead(sw); // read switch state
// Print values to Serial Monitor
Serial.print("X: ");
Serial.print(xPos);
Serial.print(" Y: ");
Serial.println(yPos);
}最後に、コードはスイッチが押されているかどうかを確認し、スイッチの状態に応じてLEDをオンまたはオフにします。これにより、ジョイスティックのボタンが押されたときに視覚的なフィードバックが得られます。
if(sStat == LOW) {
Serial.println("Switch pressed");
digitalWrite(13, HIGH); // Turn LED ON
} else {
digitalWrite(13, LOW); // Turn LED OFF
}ジョイスティックの値がリアルタイムでどのように変化するかを確認するには、コードをArduinoにアップロードしてシリアルモニタを開いてください。値は0.5秒ごとに更新され、現在のXおよびYの位置とスイッチの状態が表示されます(動画の01:30)。
デモンストレーション/当日の流れ
ジョイスティックを動かすと、XとYの値がそれに応じて変化し、0から1023の範囲になります。ジョイスティックのボタンを押すと、ピン13に接続されたLEDが点灯してスイッチが有効であることを示します。ジョイスティックが中央にある場合は、キャリブレーションによりますが、両軸ともおおむね512前後の値が表示されるはずです。
動画のタイムスタンプ
- 00:00- 二軸ジョイスティックの紹介
- 01:30- コードの説明と機能
- 02:45- 配線手順
- 午前03:15- 期待される出力とテスト
/*
* This is Arduino code to use a dual-axis XY joystick to read the value of the joystick position as X and Y, and
* also read the switch.
* Other Arduino library and videos: https://robojax.com
* Watch the video for this code to learn it fully.
* Watch the video here: https://youtu.be/6N8Iq353GM8
* This code is offered "as is" without any warranty.
* If you are sharing this code, you must keep this copyright note.
*/
/*
* Written for Robojax video on January 10, 2018
* by Ahmad Nejrabi, in Ajax, Ontario, Canada
* Copyright Robojax Inc.
*/
/*
* This is a dual-axis joystick sketch for Arduino.
* The position of the joystick is read and displayed on the serial monitor.
*/
#define sw 6
#define screenWidth 600
#define screenHeight 300
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
pinMode(sw,INPUT_PULLUP);// setting pin sw as input
pinMode(13,OUTPUT);
}
void loop() {
// Robojax Dual Axis joystick project
int x = analogRead(A0);// read analog value
int y = analogRead(A1);
int xPos = map(x, 0, 1023,0,screenWidth);
int yPos = map(y, 0, 1023,0,screenHeight);
int sStat = digitalRead(sw);//
// Robojax project
Serial.print("X: ");
Serial.print(xPos);
Serial.print(" Y: ");
Serial.println(yPos);// Robojax prints y value
if(sStat ==LOW){
Serial.println("Switch pressed");
digitalWrite(13,HIGH);// Turn LED ON
}else{
digitalWrite(13,LOW);// Turn LED OFF
}
delay(500);
}
必要かもしれないもの
-
アマゾンAmazonでXYジョイスティックを購入するamzn.to
リソースと参考文献
まだリソースはありません。
ファイル📁
ファイルは利用できません。