找回密码
 立即注册

QQ登录

只需一步,快速开始

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

arduino驱动舵机,不调用库函数

[复制链接]
跳转到指定楼层
楼主
ID:113472 发表于 2016-4-11 16:19 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
  1.     int sp1=10;//定义舵机接口数字接口7
  2.     int pulsewidth;//定义脉宽变量
  3.     int val;
  4.     int val1;
  5.     int myangle1;
  6.     //下面是servopulse函数部分(此函数意思:也就是說每次都是0.5ms高電平 1.98ms低電平 然後再0.52ms低電平 17ms延時也是低電平)
  7.      
  8.     void servopulse(int sp1,int val1)//定义一个脉冲函数
  9.     {
  10.       myangle1=map(val1,0,180,500,2480);
  11.       digitalWrite(sp1,HIGH);//将舵机接口电平至高
  12.       delayMicroseconds(myangle1);//延时脉宽值的微秒数
  13.       digitalWrite(sp1,LOW);//将舵机接口电平至低
  14.       delay(20-val1/1000);
  15.     }
  16.     //servopulse函数部分到此结束
  17.     void setup()
  18.     {
  19.       pinMode(sp1,OUTPUT);//设定舵机接口为输出接口
  20.       //设置两组串口波特率
  21.       Serial.begin(9600);
  22.       delay(500);
  23.       Serial.println("servu=o_seral_simple ready" ) ;
  24.     }
  25.      
  26.     void loop()//将0到9的数转化为0到180角度,并让LED闪烁相应数的次数
  27.     {
  28.       val=Serial.read();//读取串行端口的值
  29.      
  30.       if(val>'0'&&val<='9')
  31.       {
  32.         val1=val-'0';//将特征量转化为数值变量
  33.         val1=map(val1,0,9,0,180);//将角度转化为500-2480的脉宽值
  34.         Serial.print("moving servo to ");
  35.         Serial.print(val1,DEC);
  36.         Serial.println();
  37.         for(int i=0;i<=50;i++)//给予舵机足够的时间让它转到指定角度
  38.         {
  39.           servopulse(sp1,val1);//引用脉冲函数
  40.         }
  41.       }
  42.      
  43.     }
复制代码
Togke兄加油,我觉得你非常非常厉害的啊。
这个就是一个简单的arduino不调用库函数驱动舵机的程序,输入0-9不同数字,舵机转动到相应的角度并返回pwm值。
Ansifa写的PWM介绍的帖子非常不错哦。

现在开始接触新的控制方法了,希望一切顺利能在两个月内做出个简易的版本再慢慢升级更新吧 。用arm做了个舵机控制器后觉得其实PWM控制真的不是很喜欢,虽然用arm写确实比较麻烦。。熬了一周才写出来,完善通信又是一周时间。这次的485通信,基于cortex-m3和stm8的舵机控制器相对PWM的小土坡来说估计算是堵墙了,翻过去有一片不同的天了。希望能学到更多东西。大家一起加油吧。

等着这个月收雕刻机了 嘻嘻
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:684256 发表于 2020-4-13 12:45 | 只看该作者
您好,刚开始学习Arduino.希望获得指教。
程序1中
val=Serial.read();//读取串行端口的值
if(val>’0’&&val<='9')
{
val=val-'0';//将特征量转化为数值变量

是因为串口一次只能读取一位,所以需要将数字 0~9与角度相对应。

那么能否通过程序编写,串口直接输入三位的角度数值,使得舵机转动相应的角度?

即串口的数据输入,能否是多位的?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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