一、接线
1.舵机接线
参考:
五、esp32+micropython+数字舵机与模拟舵机
2.ps2手柄接线
二、代码
有点小bug,比如上电第一次舵机速度特别块,以及长时间使用会卡机1-2分钟,没具体测试过,经供参考
from machine import Pin, ADC, PWM
import time
import machine
from time import sleep
# 舵机初始化-------------------------------------------------------
# 配置机械臂 夹子 的引脚(25号引脚)
pin = machine.Pin(25, Pin.OUT)
pwm = machine.PWM(pin)
pwm.freq(50) # 设置 PWM 频率为 50 Hz
#pwm.duty(50) # 设置占空比(通常在 40 到 115 之间,具体取决于舵机型号)
# ----------------------------------------------------------------
#ps2初始化--------------------------------------------------------
ps2_y = ADC(Pin(33))
ps2_y.atten(ADC.ATTN_11DB) # 这里配置测量量程为3.3V,默认为1V
ps2_x = ADC(Pin(32))
ps2_x.atten(ADC.ATTN_11DB) # 这里配置测量量程为3.3V,默认为1V
btn = Pin(15, Pin.IN) # 按键按下输出0,
a = 50
while True:
val_y = ps2_y.read() # 输出范围0-4095,默认处于中间位置
if(val_y >= 2000):
print("向上")
elif(val_y < 1800):
print("向下")
val_x = ps2_x.read() # 输出范围0-4095,默认处于中间位置
if(val_x > 1900):
print("向右")
if(a>30):
a -= 1
pwm.duty(a)
print(a)
elif(val_x < 1800):
print("向左")
if(a<137):
a += 1
pwm.duty(a)
print(a)
if(btn.value() == 0):
print("按键按下")
print("x:{} y:{} btn:{}".format(val_x, val_y, btn.value())) # 打印出x轴,y轴的值
time.sleep(0.01)