Ardunio实现PWM舵机驱动

int servopin=3;//设置舵机驱动口为数字3
int myangle;//设置电机转角变量
int pulsewidth;//定义脉宽
int val;

void servopulse(int servopin, int myangle)
//定义一个脉冲函数,用模拟方式产生PWM值
{
pulsewidth=myangle*11+50;//将角度转化为500-2480的值   1980/180=11   1980是总脉宽变量   180是总角度   11是单位角度对应的脉冲量
digitalWrite(servopin,HIGH);//将舵机接口电平置高
delayMicroseconds(pulsewidth);//延时脉宽值微秒数
digitalWrite(servopin,LOW);//将舵机接口电平置低
delayMicroseconds(pulsewidth);
delay(20-pulsewidth/1000); //延时周期内剩余时间   20ms-高电平的延时毫秒数   20ms是总周期
}

void setup()
{
pinMode(servopin,OUTPUT);//设定舵机接口为输出接口
Serial.begin(9600);//设置波特率为9600
Serial.println("servo=o_seral_simple ready");
}

void loop()
//将0~9的数字转化为0~180 并让LED闪烁相应的次数
{
  val=Serial.read();//读取串口收到数,为ASCII码
  if(val>='0'&&val<='9');//判断收到数值是否符合范围
  {
  val=val-'0';//将ASCII码转换成数值
  val=val*(180/9);//将数值转化成角度
  Serial.print("moving servo to ");
  Serial.print(val,DEC);
  Serial.println();
  for (int i=0;i<=50;i++)
  {
  servopulse(servopin,val);//引用脉冲函数
  }
  
  }
  

}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值