数组下标变量无法自加...求高手-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5403|回复: 2

[已解决] 数组下标变量无法自加...求高手

[复制链接]
发表于 2012-8-1 19:21 | 显示全部楼层 |阅读模式
本帖最后由 cnkids 于 2012-8-2 00:42 编辑

[mw_shl_code=c,true]char Str1[5];

const int ENPin = 2;     // the number of the EN pin
int ENState = 1;  //default EN state was HIGH

void setup()
{
  Serial.begin(9600);
  pinMode(ENPin, INPUT);
}
void loop()
{
  int i=0;

  for(ENState = digitalRead(ENPin);ENState == LOW && Serial.available() > 0;i++)
  {     
    // read the incoming byte:
      Str1 = Serial.read();
      Serial.println(i);
      Serial.println("\n");
  }
}
[/mw_shl_code]

得到的结果:
TU.png

这样数组完全只是在0位的地址下,重复存储数据,那这个数组就没有什么作用了...求解释
发表于 2012-8-2 15:01 | 显示全部楼层
首先,Serial.println(i);  println会自动在数据后头加上/n。

然后你为什么把程序写的这么复杂难理解?

可能是Serial.available() > 0的问题
Serial.available() > 0只会在接受到字符的时候置一,然后自动清零了。。
9600波特率对于单片机16M的速度还是太慢了。
for循环读取Serial.available()的时候就是不成立,结束循环了。
然后loop循环,i又被赋予初值0.
 楼主| 发表于 2012-8-2 16:03 | 显示全部楼层
本帖最后由 cnkids 于 2012-8-2 16:05 编辑
珜羽 发表于 2012-8-2 15:01
首先,Serial.println(i);  println会自动在数据后头加上/n。

然后你为什么把程序写的这么复杂难理解?

那我应该用多大的波特率合适呢?其实这程序也不算是我写的。。查资料的时候看到别人写的,copy了打算结合自己需要改的..结果就发现问题了。。不过我换了另外一种方法解决了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-1 01:29 , Processed in 0.247615 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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