当前位置:网站首页>【Ardunio】2种方法控制舵机

【Ardunio】2种方法控制舵机

2022-07-23 07:06:00 与太阳有关_

这是我参加第十一届海上航行器大赛 的 方案三:Ardunio方案 中的控制舵机
详细的舵机控制参考-https://www.bilibili.com/video/BV15X4y157ay

第一种方法:

analogWrite(pin, value)

这种方法只能让舵机在 0~90度转 且输入的参数只能在 [70,350] 之间,否则会不动,达不到我的需求。

#define pinServo 11 /*舵机控制引脚 基于ATmega168和ATmega328的Arduino控制器中,
analogWrite()函数支持以下引脚: 3, 5, 6, 9, 10, 11*/

//舵机角度 测试出来的值
#define servoRight 70 
#define servoMiddle 210 
#define servoLeft 350 

void setup() 
{
    
   Serial.begin(9600);// 串口初始化,波特率9600字节/秒
}

void loop() 
{
    
   prePWM = angle2Pwm(realAngle);//计算返回当前舵机角度对应的 PWM
   analogWrite(pinServo,prePWM);
}

int angle2Pwm(int preAngle)
{
    //把角度转换成相应的 pwm
    int realAngle;
    prePWM = float(255*(float)preAngle / 360); 
    return prePWM;
}

第二种方法:

Servo库

能控制的角度范围较大,满足我的需求。nice

#include <Servo.h>
Servo myservo; //创建一个舵机控制对象
#define pinServo 11//舵机控制引脚 基于ATmega168和ATmega328的Arduino控制器中,analogWrite()函数支持以下引脚: 3, 5, 6, 9, 10, 11。

void setup() 
{
    
  myservo.attach(pinServo,500,2500); // 告知Arduino舵机的数据线连接在哪一个引脚上。
}

void loop() 
{
     //让舵机在0~180来回转动
    myservo.write(0);
    delay(1000);
    myservo.write(180);
    delay(1000);
}
原网站

版权声明
本文为[与太阳有关_]所创,转载请带上原文链接,感谢
https://blog.csdn.net/m0_55251293/article/details/125921705