Arduino控制舵机的程序

Arduino控制舵机的程序,第1张

int readPin = 0 //棚肢用来连接电位器

int servopin = 7 //定义舵机接口数字接链蠢世口7

void servopulse(int angle)//定档让义一个脉冲函数

{

int pulsewidth=(angle*11)+500 //将角度转化为500-2480的脉宽值

digitalWrite(servopin,HIGH) //将舵机接口电平至高

delayMicroseconds(pulsewidth) //延时脉宽值的微秒数

digitalWrite(servopin,LOW)//将舵机接口电平至低

delayMicroseconds(20000-pulsewidth)

}

voidsetup()

{

pinMode(servopin,OUTPUT)//设定舵机接口为输出接口

}

voidloop()

{

//读取电位器(传感器)的读数,接到3.3V,值范围从0到660左右

int readValue = analogRead(readPin)

//把值的范围映射到0到165左右

int angle = readValue / 4

//发送50个脉冲

for(int i=0i<50i++)

{

//引用脉冲函数

servopulse(angle)

}

}

// 使用可变电阻控制伺服电机位置

#include <Servo.h> //引入lib

Servo myservo   // 创建一个伺服电机对象

int photocellPin = 2  // 设定连接电位器的模拟引脚A2

int val        塌辩 // 创建变量,储存从模拟端口读取的值范围0到1023

void setup()

{

  myservo.attach(9)  // D9号引脚输出电机控制信号                    

}

void loop()

{

  val = analogRead(photocellPin) // 读取电位器的模拟值(0到1023之间) 

  val = map(val, 0, 1023, 0, 179)   //利用“map”函数缩放该值,得到伺服电机需要的角度(0到180之间) 

  if (val>60) {            //如果传来的值大于60

for(int pos = 0 pos < val pos++) // 从0度到60度运动 ,调节delay()来调节速度

myservo.write(pos) // 指定舵机转向的角度

delay(15) // 每次步进一度等待15ms 

  } else {

  myservo.write(0)       //否则转回0位

  }

  delay(15)             // 等待电机旋转到目标角度

}

舵机的转动速度取决于起始角度和目誉衫戚标角度的差,差别越大转得越快,当接近时就放慢角度。所以没有专门的函数控制转速。但在大角度转动时,你可以用庆陵程序把它设成几个小角度递进,加上延时delay(),这样可以放慢速度。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8242630.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存