找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2819|回复: 4
打印 上一主题 下一主题
收起左侧

关于arduino控制舵机角度的问题

[复制链接]
跳转到指定楼层
楼主
ID:684256 发表于 2020-4-13 15:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
20黑币
我用的是arduino uno,舵机是那个宝买的大功率舵机,范围是0°~300°
程序如下:
int sp1=9;//定义舵机接口数字接口7
int pulsewidth;//定义脉宽变量
int val;
int val1;
int myangle1;
//下面是servopulse函数部分
void servopulse(int sp1,int val1)//定义一个脉冲函数
{
  myangle1=map(val1,0,300,1000,2000);//将角度转化为1000~2000的脉宽值
  digitalWrite(sp1,HIGH);//将舵机接口电平至高
  delayMicroseconds(myangle1);//延时脉宽值的微秒数
  digitalWrite(sp1,LOW);//将舵机接口电平至低
  delay(20-val1/1000);
}
//servopulse函数部分到此结束
void setup()
{
  pinMode(sp1,OUTPUT);//设定舵机接口为输出接口
  //设置两组串口波特率
  Serial.begin(9600);
  delay(500);
  Serial.println("servu=o_seral_simple ready" ) ;
}
void loop()//将0到9的数转化为0到300角度,并让LED闪烁相应数的次数
{
  val=Serial.read();//读取串行端口的值
  if(val>='0'&&val<='9')
  {
    val1=val-'0';//将特征量转化为数值变量
    val1=map(val1,0,9,0,300);//将角度转化为1000~2000的脉宽值
    Serial.print("moving servo to ");
    Serial.print(val1,DEC);
    Serial.println();
    for(int i=0;i<=50;i++)//给予舵机足够的时间让它转到指定角度
    {
      servopulse(sp1,val1);//引用脉冲函数
    }
  }
}


舵机供电用的是12v动力锂电池
问题:能不能做成输入多少角度比如80,而不是0到9数字

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:684256 发表于 2020-4-13 15:09 | 只看该作者
问题:能不能做成输入多少角度比如80,而不是0到9数字
回复

使用道具 举报

板凳
ID:684256 发表于 2020-4-13 21:37 | 只看该作者
顶一下我自己的帖子
回复

使用道具 举报

地板
ID:728759 发表于 2020-4-14 10:04 来自手机 | 只看该作者
.arduino有自己的舵机控制函数
回复

使用道具 举报

5#
ID:169944 发表于 2020-4-14 11:17 | 只看该作者
val1=map(val1,0,9,0,300);要直接输入角度,这句话就可以不用了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表