本站改版新增arduino频道
一、目的
这一节我们来学习如何使用合宙ESP32 C3,连接PS2双轴按键摇杆控制L9110电机驱动风扇模块的实验。
二、环境
ESP32 C3开发板(MicroPython v1.19.1 on 2022-06-18)+ PS2双轴按键摇杆+ L9110电机驱动风扇模块 + 几根杜邦线 + Win10商业版
ESP32 C3和各个模块接线方法:
————————————————

main.py
from machine import Pin,PWM,ADC
import time
# 定义摇杆的vrx引脚
vrx = ADC(Pin(4))
# 定义摇杆的vry引脚
vry = ADC(Pin(5))
# 定义摇杆的vrx、vry的属性
vrx.atten(ADC.ATTN_11DB) # 衰减比为3.3V
vrx.width(ADC.WIDTH_12BIT) # 宽度为12位,对应的范围0-4095
vry.atten(ADC.ATTN_11DB) #衰减比为3.3V
vry.width(ADC.WIDTH_12BIT) # 宽度为12位,对应的范围0-4095
# 打印出摇杆x,y轴的数值
print("x: %d, y: %d"%(vrx.read(),vry.read()))
#L9110直流电机的PWM范围0-1023
moa = PWM(Pin(2),duty=(0),freq=(1000)) # 对应模块的INA引脚
mob = PWM(Pin(8),duty=(0),freq=(1000)) # 对应模块的INB引脚
# 定义摇杆的按键
key = Pin(3,Pin.IN,Pin.PULL_UP)
# 定义一个LED灯,当摇杆按键按下时反转led状态
led = Pin(12,Pin.OUT)
# 定义L9110电机驱动风扇模块函数
def motor():
if key.value() == 0:
time.sleep(0.020)
if key.value() == 0: # 如果摇杆按键值为0
led.value(not led.value()) # 反转led灯状态
# 正转
moa.duty(0)
mob.duty(1023)
while not key.value():
pass
try:
# 获取摇杆vrx和vry的值
x = vrx.read()
y = vry.read()
# L9110模块的PWM占空比
moa.duty(int((x/4095)*1023))
mob.duty(int((y/4095)*1023))
except:
moa.deinit()
mob.deinit()
def main():
# 正转
moa.duty(0)
mob.duty(1023)
time.sleep(3)
# 反转
moa.duty(1023)
mob.duty(0)
time.sleep(3)
# 刹车
moa.duty(0)
mob.duty(0)
# 高阻态
moa.duty(1023)
mob.duty(1023)
while True:
motor()
if __name__ == "__main__":
main()四、实验效果
运行上述代码后,L9110马达会正转3秒,倒转3秒。然后使用摇杆向上下左右推动摇杆,可以控制马达正反转。按下摇杆的按键,LED灯亮,马达最大转速,松开按键马达停止转动。
版权声明:本文为CSDN博主「魔都飘雪」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhusongziye/article/details/130836108
Copyright © 2014 ESP56.com All Rights Reserved
晋ICP备14006235号-22 晋公网安备14108102001165号
执行时间: 0.0094552040100098 seconds