华仔 发表于 2016-8-11 20:30:09

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

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




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

#include <Servo.h>
char buffer;
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=Serial.read();
   }
   Serial.println(buffer);

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

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

帮顶

凌风清羽 发表于 2016-8-31 13:16:34

看不懂{:5_172:}

小蚱蜢 发表于 2016-10-28 13:51:02

你没有对BUF数组清零
页: [1]
查看完整版本: 通过串口控制舵机不能实现