首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Arduino中遍历多个变量?

如何在Arduino中遍历多个变量?
EN

Stack Overflow用户
提问于 2017-10-29 04:19:55
回答 2查看 101关注 0票数 1

基本上,我在代码中放置了以下笨重的if语句集,用于将任何错误的传感器读数设置为零。

代码语言:javascript
复制
if (soil_moisture > 150 || soil_moisture <-100){
    soil_moisture = 0;
}
if (soil_temperature > 150 || soil_temperature < -100 ){
    soil_temperature = 0;
}
if (ambient_temperature > 150 || ambient_temperature < -100 ){
    ambient_temperature = 0;
}
if (ambient_humidity > 150 || ambient_humidity <-100){
    ambient_humidity = 0;
}

它的编写方式似乎是多余和低效的,我想知道,是否有更好的方法来做到这一点。是否可以创建变量soil_temperaturesoil_moisture等的数组...然后在嵌入了if语句的for循环中遍历这些变量?

EN

回答 2

Stack Overflow用户

发布于 2017-10-29 07:50:08

这样做是非常好的,尽管循环也可以。这取决于你对“高效”的看法。代码越小效率越高吗?更少的编写或更少的指令。对于第一个标准,循环的效率要高得多。对于第二种情况,这也是正确的。虽然,这是一种非常有效的方法。

票数 0
EN

Stack Overflow用户

发布于 2017-10-30 08:21:53

您可以使用助手例程来裁剪代码:

代码语言:javascript
复制
boolean outOfBounds(int value, int low, int high)
{
    if ( value < low || value > high ) 
        return true;
    else
        return false;
}

然后在你的代码中..。

代码语言:javascript
复制
if ( outOfBounds(soil_moisture, -100, 150) ) {
    soil_moisture = 0;
}
if ( outOfBounds(soil_temperature, -100, 150) ) {
    soil_temperature = 0;
}
// etc.

如果您的限制总是-100和150,那么您可以传递一个指向变量的指针,并在例程中将其设置为零:

代码语言:javascript
复制
void resetBounds(int *pvar)
{
    if ( *pvar < -100 || *pvar > 150 ) {
        *pvar = 0;
    }
}

在你的代码中:

代码语言:javascript
复制
resetBounds(&soil_moisture);
resetBounds(&soil_temperature);
// etc.

我的眼睛看起来很干净。

至于你的循环,是的,这是可行的,但它意味着将值复制到数组中,然后循环它们的开销,这会分散你对它们所做的事情的注意力。这几乎就像是机械论阻碍了人们对正在发生的事情的看法。这只是我的观点。

玩得开心!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46994087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档