【发布时间】:2022-01-23 23:08:54
【问题描述】:
我有这个 arduino 代码似乎卡在第一个 while 循环上。它有什么问题? 它应该根据从1V到5V的电压水平分别打开绿色,黄色和红色LED。
0.01V - 2.9V 为绿灯
3.0V - 3.9V 为黄灯
4.0V - 5.0V 为红灯
int readPin = A1;
int readVal;
float Voltage;
int green = 8;
int yellow = 9;
int red = 10;
int delayT = 100;
void setup() {
// put your setup code here, to run once:
pinMode(A1, INPUT);
pinMode(green, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(red, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
readVal = analogRead(readPin);
Voltage = (readVal/1023.) * 5.;
while (Voltage >= 0.01 && Voltage < 3.0){
digitalWrite(green, HIGH);
Voltage = (readVal/1023.) * 5.;
}
digitalWrite(green, LOW);
while (Voltage >= 3.0 && Voltage < 4.0){
digitalWrite(yellow, HIGH);
Voltage = (readVal/1023.) * 5;
}
digitalWrite(yellow, LOW);
while (Voltage >= 4.0 && Voltage <= 5.0){
digitalWrite(red, HIGH);
Voltage = (readVal/1023.) * 5;
}
digitalWrite(red, LOW);
delay(delayT);
}
【问题讨论】:
-
用你自己的话来说,
Voltage = (readVal/1023.) * 5.的结果为什么会超出范围?为什么它应该在 while 循环中更改? -
应该不会,谢谢解答! :)
标签: arduino