Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino “移动”数据结构_Arduino - Fatal编程技术网

Arduino “移动”数据结构

Arduino “移动”数据结构,arduino,Arduino,我正在做一个带有温度和湿度传感器的Arduino项目,并试图解决数据不准确的问题。每2秒我得到2个值:温度和湿度。我需要某种固定大小的数据结构,在这里我收集值,当值计数达到结构大小时,我开始计算并输出这些值的平均值。一旦得到的值超过了结构所能容纳的值,就必须丢弃最旧的值,向下移动当前值,并在前面插入新数据 考虑到我在C/C++中需要这种数据结构,我应该使用什么样的数据结构?环形缓冲区会很有用。要了解更多信息,你应该在谷歌上搜索简单移动平均线 这里还有一个问题可以回答: 可能的答案太多,或者好的答

我正在做一个带有温度和湿度传感器的Arduino项目,并试图解决数据不准确的问题。每2秒我得到2个值:温度和湿度。我需要某种固定大小的数据结构,在这里我收集值,当值计数达到结构大小时,我开始计算并输出这些值的平均值。一旦得到的值超过了结构所能容纳的值,就必须丢弃最旧的值,向下移动当前值,并在前面插入新数据


考虑到我在C/C++中需要这种数据结构,我应该使用什么样的数据结构?

环形缓冲区会很有用。要了解更多信息,你应该在谷歌上搜索简单移动平均线

这里还有一个问题可以回答:

可能的答案太多,或者好的答案对于这种格式来说太长。请添加详细信息以缩小答案集或隔离可以在几段中回答的问题…C/C++是UB…a是合适的数据结构。您可以在std::vector或std::array中实现这一点:只需保留索引以跟踪当前正在使用的元素,或者第一个正在使用的元素及其计数。请提供指向您提到的C/C++语言规范的链接。虽然不存在,但只有两种不同的语言C和C++。请注意,Arduino实际上不是其中之一。@Olaf,我确实写过我需要用C/C++解决这个问题,其中/==或。我没有提到Arduino是一种独立的语言。Audio IDE支持C/C++,大多数库是C++类。很抱歉搞混了。我想可能是误会了,所以我会尝试用另一种方式来解释:假设你有一个装有7发子弹的手枪弹匣。你在底部打一个洞,这样如果你尝试添加7颗以上的子弹,底部的子弹就会掉出来,为顶部的新子弹腾出空间。这本杂志也可以有多个同时充满子弹的专栏。仅仅评论搜索和链接另一个答案本身并不是答案。@Justin:每个圆形/环形缓冲区都可以处理你的手枪杂志隐喻所暗示的用途-一个这样的缓冲区相当于一个专栏。你似乎缺乏的洞察力是,每次插入一个新的项目时,将所有项目向下移动是低效的:如果更好的话,使用随机可访问的计算机内存-当杂志专栏已满-简单地用最新数据覆盖最旧的项目,但您确实需要保留一个数字或指针来跟踪最新值覆盖最旧值的位置。我建议你做一些阅读/实验。