将浮点值存储在数组中,并分析最后 20 个值以在 C++ 中检查
Posted
技术标签:
【中文标题】将浮点值存储在数组中,并分析最后 20 个值以在 C++ 中检查【英文标题】:Store the float value in array, and analyzing last 20 values to check in C++ 【发布时间】:2021-06-21 10:24:55 【问题描述】:我正在使用带有 Arduino 的 DS18B20 温度传感器。我需要将最后 20 个读取值存储在数组中,并通知或中断以打开 LED 特定阈值。如何处理上述场景?您可以使用我的初始代码添加其余代码。
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 10
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
/********************************************************************/
void setup(void)
// start serial port
Serial.begin(9600);
sensors.begin();
void loop(void)
readTempSensor();
delay(100);
float readTempSensor()
float Temp = 0;
float TmpArray[20];
sensors.requestTemperatures();
Temp = sensors.getTempCByIndex(0);
Serial.print("T: ");
Serial.println(Temp);
【问题讨论】:
【参考方案1】:您可以使用std::array<float, 20>
并跟踪索引,并在必要时对其进行修改:
//cstddef shouldn't be required due to the inclusion of <array>,
//but if it still throws an error, uncomment the following line
//#include <cstddef>
#include <array>
static constexpr std::size_t max_histogram_count = 20;
static std::array<float, max_histogram_count> histogram;
void readTempSensor()
static std::size_t histogramIndex = 0;
sensors.requestTemperatures();
const auto curTemp = sensors.getTempCByIndex(0);
histogram[histogramIndex++] = curTemp;
for(const auto& h : histogram)
Serial.print("T: ");
Serial.println(h);
histogramIndex %= max_histogram_count;
void analyzeTemperature()
//...Do things with histogram array
【讨论】:
我有一个错误'size_t' in namespace 'std' does not name a type
。你能检查一下这些行会在哪里吗static constexpr std::size_t max_histogram_count = 20; static std::array<float, max_histogram_count> histogram;
@Dilux 这只是一个示例用法;我已经添加了标题以使其完整。
@Dilux 如果此答案满足您的问题,请将其标记为已接受。以上是关于将浮点值存储在数组中,并分析最后 20 个值以在 C++ 中检查的主要内容,如果未能解决你的问题,请参考以下文章
从 localStorage 获取值以在 Sencha Touch AJAX 代理中使用