6450浏览
查看: 6450|回复: 3

[求助] 通过串口控制舵机不能实现

[复制链接]
想通过串口控制舵机,把串口中的字符串存到数组中,然后通过strtol把字符串转换成10进制,但我在串口依次输入5个数,分别是1,10,200,1,10,但结果却是

通过串口控制舵机不能实现图1


为什么输入一个三位数后,后面如果在串口中输入一位或两位数,它就会自动补零呢,我的程序如下,

[mw_shl_code=applescript,true]#include <Servo.h>
char buffer[4];
int value=0;
Servo myservo;
void setup() {
  Serial.begin(9600);
  Serial.flush();
  myservo.attach(5);//定义伺服马达输出第5脚位
  myservo.write(90);
}
void loop() {

  if(Serial.available()>0){
    delay(200);
    int index=0;
   int num=Serial.available();
   if(num>4){
    num=4;
   }
   while(num--){
    buffer[index++]=Serial.read();
   }
   Serial.println(buffer);

  /*
   value=strtol(buffer,NULL,10);
    value=constrain(value,0,179);
    myservo.write(value);
    delay(15);
   Serial.println(value);
   */
  }
}
[/mw_shl_code]

dsweiliang  初级技神

发表于 2016-8-16 08:18:09

帮顶
回复

使用道具 举报

凌风清羽  中级技匠

发表于 2016-8-31 13:16:34

看不懂
回复

使用道具 举报

小蚱蜢  学徒

发表于 2016-10-28 13:51:02

你没有对BUF数组清零
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail