【Arduino】2种方法控制舵机

这是我参加第十一届海上航行器大赛 的 方案三:Arduino方案 中的控制舵机
详细的舵机控制 请参考好文-

在这里插入图片描述

第1种方法:为引脚写入电平,生成pwm

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;
}

第2种方法:调用Servo库,真香!

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);
}

笔记仅供自学,用来回看复习,不一定适合你,如有错误请指出。

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

KevinGuo457

哈哈哈资助我买两包辣条叭

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

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

打赏作者

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

抵扣说明:

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

余额充值