模組簡介
Joystick 模組俗稱的香菇頭,其接腳有
· GND - 接地
· VCC - 電壓供給
· VRX - X 軸輸出
· VRY - Y 軸輸出
· SW - 按鈕
KY-023 Dual Axis Joystick Module - 參考https://circuitsfun.com/products/aga00001
Joystick為兩個雙向的10K電阻,隨著搖桿方向不同,抽頭的阻值隨著變化。本模組使用5V供電,原始狀態下x,y讀出電壓為2.5V左右,當隨箭頭方向按下,讀電壓值隨著增加,增大到5V; 箭頭相反方向按下,讀出電壓值減少,最小為0V。模組還帶有一個向下按鍵,當按鍵按下時SW輸出低電位。
Joystick 模組示意電路
電路圖
程式列表
Blockly
Python
// KY-023 Dual Axis Joystick Module
// https://arduinomodules.info/ky-023-joystick-dual-axis-module/
//
// EPY KY-023
// -----------------
// GND GND
// 3.3V +5V
// AIN0 VRx
// AIN1 VRy
// P20 SW
from machine import Pin
from machine import Pin,ADC
import utime
from machine import RTC
xValue = None
yValue = None
ButtonState = None
adc0 = None
adc1 = None
P20 = None
rtc = None
adc0 = ADC(Pin.board.AIN0)
adc1 = ADC(Pin.board.AIN1)
rtc = RTC()
P20 = Pin(Pin.board.P20,Pin.IN)
while True:
# // read X axis value [0..4095]
xValue = adc0.read()
# // read Y axis value [0..4095]
yValue = adc1.read()
# // read Button state [0,1]
ButtonState = P20.value()
print(''.join([str(x) for x in ['X:', xValue, ' | Y:', yValue, ' | Button:', ButtonState]]))
utime.sleep_ms( 100 )
執行結果
參考文獻
How 2-Axis Joystick Works & Interface with Arduino + Processing
https://lastminuteengineers.com/joystick-interfacing-arduino-processing/