- 相信不少人在用控制esp8266控制舵机时都遇到一些问题,当初我也跟你们一样走了不少弯路,所以我把我的一些心得记录下来
- 首先,我用的主控是NodeMCU,舵机是180度的SG90舵机,首先SG90是通过改变占空比工作的,在这里我们通过改变NodeMCU的PWM来改变舵机的占空比
- 占空比:方波高电平时间跟周期的比例叫占空比,简单的说,就是一个周期内,高电平持续的时间占周期的比例
- PWM:PWM就是脉冲宽度调制的英文缩写,例如1秒高电平1秒低电平的PWM波占空比是50%。其实啊,他就是一组方波,通过占空比来传递信号。当然,我这样说不是很准确,但是,知道这些就可以了!

- 上面是舵机在这20ms的周期内高电平所持续时间和舵机旋转的角度之间的关系
- 当然你也可以自己设置周期,只要相应的占空比不变,旋转的角度也不变`
- 我这里是用lua写的,
pwm.setup(pin, clock, duty)--设置引脚为PWM模式
- `参数:pin: 1~12, IO 编号
clock: 1~1000, pwm 频率
duty: 0~1023, pwm 占空比,最大 1023(10bit)。 pwm.start(pin)--启动PWM
pwm.setduty(pin, duty)--设置引脚占空比
- `pin:IO引脚编号
duty:PWM的占空比最大为1023 - 例如:
pin=1--定义引脚
pwm.setup(pin,50,76)--设置引脚为PWM模式
pwm.start(pin)--启动引脚PWM
pwm.setduty(pin,127)--让舵机转到180度角
tmr.delay(100000)--延时1秒
pwm.setduty(pin,76)--让舵机转到90度角
- 这里我设置的频率为50HZ,1/50=0.02m=20ms,所以定义了周期为20ms
- 初始占空比为76,也就是90度角,1.5/20*1023=76,注意1023是NodeMCU内部定义的占空比范围,代码实现的效果是,舵机先转到90度角,然后转到180度角,再转回90度
- 通过学习这些,我们就可以尝试去写代码控制自己的舵机实现相应的动作了!