Arduino:生成100个int随机数组导致前10个整数为0

时间:2014-12-30 15:31:38

标签: c arrays arduino

我正在使用具有32.000字节存储空间的Arduino UNO。 在编写我的程序时,我创建了一个小函数,用随机数填充数组。 此函数使用在脚本顶部定义的变量:

int mode1[100];

这是填充上面数组的函数。 RandomSeed为其种子取一个数字,由analogRead(0)提供,0表示我的Arduino板上的引脚0。

void fillArray(int aSize){
    if (aSize == 100){
        randomSeed(analogRead(0));
        for (int i=0; i < aSize; i++){
            mode1[i] = random(1, aSize);}

当我调用fillArray函数时,如fillArray(100);它会生成我的整数。然后我通过这段代码在我的电脑上阅读它们:

  Serial.println("Filled array");
  for (int i=0; i <= 99; i++){Serial.println((int)mode1[i]);}

一切似乎都运行正常,但我注意到我的函数将生成的前10个整数始终为0.我的主要问题是我不知道如何排除故障,因为脚本没有给我任何错误。因此我的问题是:该数组的前10个整数始终为0是什么原因?

我对原因的可能解释是AnalogRead函数做了一些奇怪的事情(目前它在A0插槽中只有一个引脚没有连接到它,应该工作。我也知道它&# 39;不是存储容量,因为32.000字节足以在一个数组中存储100个整数,而我的脚本只有5000个字节。

我有点坚持这个因为我不知道是什么导致了这个问题,对这个主题的任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:2)

我无法发表评论(还没有足够的声誉),但您是否检查了输出中的行数?在开始记录之前,您的代码中可能还有“其他”发送数据。您可能希望使用“mode1 [ xxx ] = yyy ”来编写行,其中 xxx 是索引, yyy 存储在索引处的值,以确保您正在查看数组内容。