舵机控制使用

本文仅介绍固定180度舵机(MG996R舵机、SG90舵机、MG90S舵机等
引脚功能:
在这里插入图片描述
舵机的转动角度跟输入脉冲有关,详细看下表:
在这里插入图片描述
可以发现一个规律:角度每次增加45度,高电平时间相应增加0.5ms

     总周期 - 高电平脉冲 = 低电平脉冲
     舵机角度的转动就是通过高、低脉冲的变化实现的

例代码:

#include <regx51.h>
 
sbit PWM=P1^1;  //定义给舵机信号线接的I/O口
 
void Delay(unsigned char i)   //12MHz 延时函数  
{
    unsigned char a,b;        //该段延时函数Delay(1)=0.5ms
    for(;i>0;i--)
      for(b=71;b>0;b--)
        for(a=2;a>0;a--);
}
 
/****************************************************************
                            总周期20ms
                通过调节占空比实现舵机需要转动的角度
舵机代码用定时器控制更方便稳定,本文方便读者了解使用,使用延时计算
*****************************************************************/
void zero(void) {//0度
        PWM=1;
        Delay(1);       //高电平 Delay(1)=0.5ms。因为周期为20ms,所以低电平就是19.5ms 
        PWM=0;
        Delay(39);      //低电平 Delay(39)=19.5ms
}
 
void one(void) {//45度
        PWM=1;
        Delay(2);      //高电平  Delay(2)=1ms
        PWM=0;   
        Delay(38);     //低电平  Delay(38)=19ms
}
 
void two(void)  {//90度
         PWM=1;
        Delay(3);       //高电平 Delay(3)=1.5ms
        PWM=0;
        Delay(37);     //低电平  18.5ms
}
 
void three(void) {//135度
        PWM=1;
        Delay(4);       //高电平 Delay(4)=2ms
        PWM=0;
        Delay(36);      //低电平 18ms
}
void four(void) {//180度
        PWM=1;
        Delay(5);      //高电平 Delay(5)=2.5ms
        PWM=0;
        Delay(35);     //低电平 17.5ms
}
void main()  //主程序
{     
    while(1){    
      two();     //调用90度的子程序,实现舵机转动90度
    }
}

注·:建议先写一个0度的程序,方便确定舵机转动的方向和角度

  • 6
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_755682240

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值