arduino怎么把采集的数据放进数组,是要什么库吗,求细讲讲
说下自己学习硬件编程心路,就能明白我为什么做这个教程。大一的时候接触到编程,做的第一个作品是心型灯,使用51单片机的方案,其实就是自己焊接电路板,用现成的程序。后来寒假的时候自己想做一个扫地机器人,但是苦于C语言不熟练,51单片机编程复杂,中间走了很多弯路,一直被搁置。大二在学校参加比赛接触到STM32单片机,STM32单片机使用库函数编程相比于51单片机操作寄存器友好。大三学习单片机课,降维打击学习51单片机,才把51单片机学习熟练。
后来我想如果我能早点接触到Arduino,借助Arduino丰富的开源库,把精力放在好的创意上,而不是复杂的编程上,是不是能做出很多有趣的作品?通过有趣的作品获取信心然后再学习复杂的硬件编程,是不是能学的更加高效呢?
我想通过这个教程在没有任何软件以及硬件基础的前提,使用Arduino花费极低的代价学习软硬件编程基础知识,实现自己的创意。
电脑编写源代码
arduino nano开发板和用于上传代码和供电的USB数据线
注:如果有条件且乐于为开源做贡献,就购买官方板。也可以在淘宝购买10元包邮的非官方板
面包板、外设、传感器、杜邦线
答案:
要将采集的数据存放到数组中,可以使用Arduino的内置数组功能。首先要定义一个数组变量,并指定其大小,例如:int data[10]; 表示定义了一个名为data的int类型数组,长度为10。然后在数据采集的过程中,每次采集到一个数据时,可以将其存放在数组中的一个空闲位置,例如:data[0] = 100; 表示将100存放在数组data的第一个位置。
不需要使用任何额外的库,Arduino内置了数组和相关的函数。可以使用类似以下的代码来存储数据到数组中:
int data[10]; // 定义一个长度为10的数组
int index = 0; // 当前存储位置的索引
// 在采集数据时,将数据存储到数组中
void collectData(int value) {
// 判断当前数组是否已经存满
if (index < 10) {
// 如果没有存满,则将数据存储到当前索引位置
data[index] = value;
// 将索引指向下一个空闲位置
index++;
}
}
上面的代码定义了一个名为data的长度为10的数组,并定义了一个名为collectData的函数,该函数在每次采集到数据时被调用,将数据存储到数组中。存储的位置由一个名为index的变量控制,每存储一个数据,将索引加1,指向下一个空闲的位置。如果数组已经存满,则不再存储数据。
参考资料中的代码主要是控制小车运动的函数,与存储数据到数组中没有太大关系。但是,可能需要在函数中加入采集数据的代码,将采集到的数据存储到数组中。例如,在start_run函数中可以添加读取红外传感器数值的代码,将其存储到数组中。具体操作可以参考上面的示例代码。
需要注意的是,在采集数据时要避免将数据存储到超出数组范围的位置,否则可能会导致程序崩溃。因此,在存储数据之前要先判断当前是否还有可用的空间,可以使用类似if (index < 10)的语法来检查。同时,存储数据的过程也要保证是原子性操作,避免在存储中断的时候读取到脏数据。可以使用临界区来避免这种情况。