这段代码是制作一个简单的rgb led温度计。我遇到的问题是我有三种颜色的温度层,而我的语法中的一些东西正在制作它所以它只看第一个逻辑门。代码如下所示。
// code by luke aka lazerfire15
const int temp= (A0);
int (red)=(2);
int (green)=(3);
int (blue)=(4);
int (tempread); //holds a value for the temp read
void setup()
{
pinMode (red,OUTPUT); //set inputs and outputs
pinMode (green,OUTPUT);
pinMode (blue,OUTPUT);
pinMode (temp,INPUT);
}
void loop()
{
tempread=(analogRead(temp)/(2.05)); // i used serial print here to test the temp sensor
analogRead(temp);
delay (100);
if ((tempread) >= (50) && (tempread) < (74)) {
pinMode(blue,HIGH);
}
else if ((tempread) >= (74) && (tempread) < (76)) {
pinMode(green,HIGH);
}
else if ((tempread) >= (76)) {
pinMode(red,HIGH);
}
}
答案 0 :(得分:0)
if ((tempread) >= (50)) {
pinMode(blue,HIGH);
}
else if ((tempread) >= (74)) {
pinMode(green,HIGH);
}
else if ((tempread) >= (76)) {
pinMode(red,HIGH);
}
一个简单的逻辑错误。如果因为其他的if-ifs永远不会到达,它将始终进入第一个。
你应该改变你的逻辑
if ((tempread) >= (50) && (tempread) < (74)) {
pinMode(blue,HIGH);
}
else if ((tempread) >= (74) && (tempread) < (76)) {
pinMode(green,HIGH);
}
else if ((tempread) >= (76)) {
pinMode(red,HIGH);
}