Joystick是一款摇杆控制输入单元,采用 I2C 通信接口,支持三轴控制信号输入(X/Y 轴偏移模拟量输入,Z 轴按键数字量输入)。适用于游戏/机器人控制等应用场景。
规格 | 参数 |
---|---|
通讯协议 | I2C:0x52 |
X、Y 轴偏移输出值 | 0-255 |
Z 轴按键输出值 | 0/1 |
净重 | 11g |
毛重 | 27g |
产品尺寸 | 48 _ 24 _ 32mm |
包装尺寸 | 75 _ 45 _ 30mm |
EasyLoader 是一个简洁快速的程序烧录器,其内置了一个产品相关的案例程序,通过简单步骤将其烧录至主控,即可进行一系列的功能验证.
M5CORE - PORT A | G21 | G22 | 5V | GND |
---|---|---|---|---|
JOYSTICK | SDA | SCL | VCC | GND |
JOYSTICK REG 0x52
REG | len | description | return values |
---|---|---|---|
0x52 | 3 | 读取摇杆状态 | [0] X VALUE [1] Y VALUE [2] BTN STATUS |
#include <M5Stack.h>
#define JOY_ADDR 0x52 //define Joystick I2C address. 定义摇杆的I2C地址
void setup() {
M5.begin();
M5.Power.begin();
M5.Lcd.setCursor(70, 0, 4);
M5.Lcd.println(("Joystick Test"));
dacWrite(25, 0); //disable the speak noise. 禁用语音噪音
Wire.begin(21, 22, 400000);
}
char data[100];
void loop() {
static uint8_t x_data,y_data,button_data;
Wire.requestFrom(JOY_ADDR, 3); //Request 3 bytes from the slave device. 向从设备请求3个字节
if (Wire.available()) { //If data is received. 如果接收到数据
x_data = Wire.read();
y_data = Wire.read();
button_data = Wire.read();
sprintf(data, "x:%d y:%d button:%d\n", x_data, y_data, button_data);
Serial.print(data);
M5.Lcd.setCursor(100, 50, 4);
M5.Lcd.printf("X:%d ",x_data);
M5.Lcd.setCursor(100, 80, 4);
M5.Lcd.printf("Y:%d ",y_data);
M5.Lcd.setCursor(100, 110, 4);
M5.Lcd.printf("B:%d ",button_data);
}
delay(200);
}