【发布时间】:2014-12-11 23:10:10
【问题描述】:
您能否举一些适合使用 while 循环和 if 循环的情况的示例?
我正在做这个项目,其中 Arduino 从可变电阻器读取模拟输入。 这就是我让它读取原始输入的方式:
int intputValue = analogRead(A0);
然后我将原始输入转换为 0 到 100 之间的数字作为百分比:
double percentValue = inputValue * (1.0/10.23);
然后我使用这个 percentValue 来确定 Arduino 是否需要通过它的几个数字引脚发送信号。我有信号进入 4 通道继电器模块。基本上我的想法是,如果百分比值在 0-25 之间,则其中一个继电器会打开,因此只需要激活一个数字引脚。 26-50 之间,两针,51-75,三针,76-100,四针。
这是我的问题:我应该使用 if 语句吗:
if(percentValue >=0 && percentValue <=25){
digitalWrite(pin1, HIGH); //turns on pin 1
}
或者使用while循环:
while(percentValue >= 0 && percentValue <=25){
digitalWrite(pin1, HIGH); //turns on pin 1
}
然后我将对 percentValue 范围的其余部分做类似的事情。 在这种情况下使用“if”和“while”有区别吗?
感谢您的帮助。
【问题讨论】:
-
如果只工作一次,而工作多次。
-
if 不是循环,虽然 while 是。
-
只是一个小问题。你为什么讨厌那个可怜的阿杜诺?您正在读取一个值,将其存储在一个 16 字节的变量中。这是正确的。但是随后您将其转换为双精度(甚至不是浮点数)。为什么?浮点变量对于微控制器来说不是一个好的选择(因为它们没有 FP 单元,所以它们必须在软件中处理它们)。那转换是为了什么?把它分成四份......只需写
if(inputValue >=0 && inputValue <=255)。你的微控制器会感谢你.... -
输入在0到1023之间。我做了转换,使数字在0到100之间,代表0%到100%。你能解释一下为什么我应该使用浮点数吗?我对你在说什么感到困惑。
-
while(percentValue >= 0 && percentValue <=25) { ...永远不会为真或永远不会发生,因为 percentValue 在循环内不会改变。 --> 使用循环函数的意思,写if语句。这使您的代码更简单。
标签: if-statement while-loop arduino