本站改版新增arduino频道
arduino PS2 双轴按键摇杆实验
#define PS2_X 15 #define PS2_Y 2 #define SW 4 void setup() { // 配置衰减器 // analogSetAttenuation(ADC_11db); // 配置输入模式 pinMode(PS2_X, INPUT); pinMode(PS2_Y, INPUT); pinMode(SW, INPUT_PULLUP); // 配置串口通信波特率 Serial.begin(9600); } void loop() { // 读取数值 Serial.printf("x: %d, y: %d, z: %d\n", analogRead(PS2_X), analogRead(PS2_Y), digitalRead(SW)); delay(100); } #define PS2_X 15 #define PS2_Y 2 #define SW 4 #define RESOLUTION 12 #define SERVO 13 #define CHANNEL 0 #define FREQ 50 int value; //20ms 周期内,高电平持续时长 0.5-2.5 ms,对应 0-180 度舵机角度。 //对应 0.5ms(0.5ms/(20ms/256)) int min_width = 0.6 / 20 * pow(2, RESOLUTION); //对应 2.5ms(2.5ms/(20ms/256)) int max_width = 2.5 / 20 * pow(2, RESOLUTION); void setup() { // 配置衰减器 analogSetAttenuation(ADC_11db); // 设置 ADC 分辨率 analogReadResolution(RESOLUTION); // 配置输入模式 pinMode(PS2_X, INPUT); pinMode(PS2_Y, INPUT); pinMode(SW, INPUT_PULLUP); // 配置串口通信波特率 Serial.begin(9600); // 用于设置 LEDC 通道的频率和分辨率 ledcSetup(CHANNEL, FREQ, RESOLUTION); // 将通道与对应的引脚连接 ledcAttachPin(SERVO, CHANNEL); } void loop() { // 将 ADC 的值映射到舵机的转动范围 value = map(analogRead(PS2_Y), 0, pow(2, RESOLUTION), min_width, max_width); // 读取数值 Serial.printf("x: %d, y: %d, z: %d, 映射后的 y: %d\n", analogRead(PS2_X), analogRead(PS2_Y), digitalRead(SW), value); ledcWrite(CHANNEL, value); delay(100); } 第三方库 ESP32Servo.h,让 PS2 摇杆控制舵机转动,代码如下:#include#define PS2_X 15 #define PS2_Y 2 #define SW 4 #define SERVO 13 #define RESOLUTION 12 #define FREQ 50 // 定义 Servo 对象 Servo my_servo; int value; void setup() { // 配置输入模式 pinMode(PS2_X, INPUT); pinMode(PS2_Y, INPUT); pinMode(SW, INPUT_PULLUP); // 配置串口通信波特率 Serial.begin(9600); // 分配硬件定时器 ESP32PWM::allocateTimer(0); // 设置频率 my_servo.setPeriodHertz(FREQ); // 关联 servo 对象与 GPIO 引脚,设置脉宽范围 my_servo.attach(SERVO, 500, 2500); } void loop() { value = map(analogRead(PS2_Y), 0, pow(2, RESOLUTION), 0, 180); // 读取数值 Serial.printf("x: %d, y: %d, z: %d, 映射后的 y: %d\n", analogRead(PS2_X), analogRead(PS2_Y), digitalRead(SW), value); // 输出PWM my_servo.write(value); delay(100); } ------ 著作权归极客侠 GeeksMan所有 基于GPL 3.0协议 原文链接:https://docs.geeksman.com/esp32/Arduino/21.esp32-arduino-ps2.html
Copyright © 2014 ESP56.com All Rights Reserved
晋ICP备14006235号-22 晋公网安备14108102001165号
执行时间: 0.010941028594971 seconds