如下程序控制舵机,麻烦大虾指点!-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3837|回复: 2

如下程序控制舵机,麻烦大虾指点!

[复制链接]
发表于 2015-7-29 17:36 | 显示全部楼层 |阅读模式
如下程序控制舵机,麻烦大虾指点!
为什么
          Serial.println(val);
          val=val*(180/9);//将数字转化为角度
          Serial.println("moving servo to ");
          Serial.print(val,DEC);
          Serial.println();
这段程序不在串口显示呢?每次我输入0-9的数字也只是跑一次?


int servopin=9;//定义数字接口9 连接伺服舵机信号线
int myangle;//定义角度变量
int pulsewidth;//定义脉宽变量
int val;
void servopulse(int servopin,int myangle)//定义一个脉冲函数
{
      pulsewidth=(myangle*11)+500;//将角度转化为500-2480 的脉宽值
      digitalWrite(servopin,HIGH);//将舵机接口电平至高
      delayMicroseconds(pulsewidth);//延时脉宽值的微秒数
      digitalWrite(servopin,LOW);//将舵机接口电平至低
      delay(20-pulsewidth/1000);
}
void setup()
{
      pinMode(servopin,OUTPUT);//设定舵机接口为输出接口
      Serial.begin(9600);//连接到串行端口,波特率为9600
      Serial.println("servo=o_seral_simple ready" ) ;
}
void loop()//将0 到9 的数转化为0 到180 角度,并让LED 闪烁相应数的次数
{
      val=Serial.read();//读取串行端口的值
      if(val>'0'&&val<='9')
      {
          val=val-0;//将特征量转化为数值变量
          Serial.println(val);
          val=val*(180/9);//将数字转化为角度
          Serial.println("moving servo to ");
          Serial.print(val,DEC);
          Serial.println();
              for(int i=0;i<=50;i++) //给予舵机足够的时间让它转到指定角度
              {
                  servopulse(servopin,val);//引用脉冲函数
              }
      }
}

发表于 2016-4-21 21:10 | 显示全部楼层
没输入的时候不执行吧
发表于 2016-7-2 18:48 | 显示全部楼层
1)val=Serial.read(); --val等于你数据串口的0~9的字符2)val=val-0;--这句时干嘛,我才你是想让val在0~9的范围内,那是不是应该val=val-‘0’,要不然 Serial.println(val);打印的ascii码将不会时字符‘0’~‘9’,而可能是乱码。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-1 04:52 , Processed in 0.105449 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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