我使用以下代码从Arduino(Arduino-Mega 2560)串行通信中读取整数序列 但它给了我垃圾(或错误的价值),请帮我找出错误...
int time=0,i;
void setup() {
pinMode(6,OUTPUT);
Serial.begin(9600);
}
void loop(){
i=0;
while(Serial.available()>0) {
time=Serial.parseInt();
}
for(i=1;i<=time;i++){
digitalWrite(6,1);
delay(150);
digitalWrite(6,0);
delay(100);
}
time=0;
}
答案 0 :(得分:0)
你的代码错了。或者至少逻辑是错误的。
试试这个:
void loop(){
if(Serial.available()) {
time=Serial.parseInt();
for(i=1;i<=time;i++){
digitalWrite(6,1);
delay(150);
digitalWrite(6,0);
delay(100);
}
time=0;
}
}
答案 1 :(得分:0)
您的代码看起来应该可以正常工作,但问题可能在于您发送的数据。
Serial.parseInt()
期望代表数字的ascii字符。你发送一个编码为字符串的数字吗?请注意,Serial.write(99)
将发送一个值为99的单字节。
由于数字在0到99的范围内,因此它们将适合单个字节。为什么不直接发送一个字节并读取另一端的字节?
void setup() {
pinMode(6,OUTPUT);
Serial.begin(9600);
}
void loop(){
int time=0;
if(Serial.available()>0) { // using while will read all the bytes and use the last one
time = Serial.read();
}
for(int i=1; i<=time; i++){
digitalWrite(6,1);
delay(150);
digitalWrite(6,0);
delay(100);
}
}