【发布时间】:2015-04-27 19:38:44
【问题描述】:
已经有一个关于在 Arduino 中使用字符串寻址变量的问题,但给出的答案不适用于我的问题。
我有多个传感器(大约 14 个,并且数量可能会增加)连接到我的 Arduino,我还有继电器、引擎和 RFID。我正在创建一个函数来检查所有传感器是否活动。
基本思路是这样的:
#define Sensor_1 2
#define Sensor_2 3
#define Sensor_3 4
#define Sensor_4 5
#define Sensor_5 6
int checkSensors(){
int all_active = 0;
int num_sens = 5;
int n;
int active_sens = 0;
for(n= 1; n <= num_sens; n++) {
if( !digitalRead("Sensor_" + n)) {
active_sens= active_sens+ 1;
}
else {
all_active = 0;
return ( all_active);
}
}
if(active_sens== num_sens) {
all_active = 1;
return(all_active);
}
}
问题是:我想对变量 Sensor_n 进行寻址,但我找不到解决方法。我收到的错误消息是指 digitalRead("Sensor_" + n ) 命令。
错误:从 'const char*' 到 'uint8_t {aka unsigned char}' 的无效转换 [-fpermissive]
我已经尝试在 String = "Sensor_" 中使用 "Sensor_",我尝试强制将类型转换为 uint8_t,但错误消息显示它失去了精度。
我也尝试了 .toCharArray 命令,但也失败了。
有没有办法通过字符串+int来访问变量?
我对 PHP 中的“松散”变量比较熟悉,所以这给我带来了很多麻烦。
【问题讨论】:
-
C++ 不是 PHP。您可能希望将名称和关联的
enum值填充到std::map或其他类型的容器(即使它是静态数组)然后到find以根据字符串检索值。跨度>
标签: c++ c string arduino sensors