0

这段代码是做一个简单的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);
 }
 }
4

1 回答 1

0
 if ((tempread) >= (50)) {
   pinMode(blue,HIGH);  
 } 
else if ((tempread) >= (74)) {
   pinMode(green,HIGH);
 }
 else if ((tempread) >= (76)) {
   pinMode(red,HIGH);
 }

一个简单的逻辑错误。它将始终进入第一个 if,因为永远不会达到其他 else-if。

  • 假设 75 -> 大于 50,首先如果 - 忽略其他
  • 假设 77 -> 大于 50,首先如果 - 忽略其他

你应该改变你的逻辑

 if ((tempread) >= (50) && (tempread) < (74)) {
   pinMode(blue,HIGH);  
 } 
else if ((tempread) >= (74) && (tempread) < (76)) {
   pinMode(green,HIGH);
 }
 else if ((tempread) >= (76)) {
   pinMode(red,HIGH);
 }
于 2014-07-21T15:53:44.853 回答