Micropython学习交流群 学习QQ群:786510434 提供多种固件下载和学习交流。

Micropython-扇贝物联 QQ群:31324057 扇贝物联是一个让你与智能设备沟通更方便的物联网云平台

Micropython学习交流群 学习QQ群:468985481 学习交流ESP8266、ESP32、ESP8285、wifi模块开发交流、物联网。

Micropython老哥俩的IT农场分享QQ群:929132891 为喜欢科创制作的小白们分享一些自制的计算机软硬件免费公益课程,由两位多年从事IT研发的中年大叔发起。

Micropython ESP频道

micropython模拟量遥杆与mg90s舵机控制


micropython模拟量遥杆与mg90s舵机控制

这个是模拟量遥杆,有两路模拟量输出XY一个数字量输出SW,就是摇杆往下按就有个开关。这种摇杆其实就是俩电位器加一个开关。所以你输如电压可以根据控制板来比如我用ESP32控制,考虑到我的ADC最大电压也就3.6V再大了就烧了 ,那我肯定不能给按钮供电上5v而是上的3,3V

以上接线前一定要参阅MICROPYTHON的固件和配套的文档来接,比如我用V1.1.8的固件程序写法如下,如果你用比这个版本低的固件可能跑不起来。另外也要参考引脚的功能不要随便用脚,多看相关手册。

from machine import ADC,Pin  #引用ADC和引脚
import time
from machine import PWM  #为了控制舵机引入PWM
servo = PWM(Pin(14),freq=50)  #舵机的14号引脚我这里接线顺手
adc1 = ADC(Pin(32))  #初始化
adc2 = ADC(Pin(25))
adc1.init(atten = ADC.ATTN_11DB)  #调整分辨率  否则读不出完整范围
adc2.init(atten = ADC.ATTN_11DB)
num=20  #这个是为了控制舵机做的初始指针
while 1 :
    time.sleep(0.09)
    print('adc1=',adc1.read())
    print('adc2=',adc2.read())
    if adc1.read_uv()//1000000==0: #读取值进行判断,上下限位
        num =20
    if adc1.read_uv()//1000000==3:
        num =130
    num = num + (adc2.read_uv()//1000000-1)*3#自加自减控制逻辑
    if num >130 :
        num=130
    if num <20 :
        num=20
    servo.duty(num)  #舵机执行
    print('adc1=',adc1.read_uv()//1000000)
    print('adc2=',adc2.read_uv()//1000000)


来源:https://blog.csdn.net/gaoke11240/article/details/125617735


推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 ESP56.com All Rights Reserved

执行时间: 0.0085241794586182 seconds