Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement if-else命令只停留在第一个逻辑门上_If Statement_Arduino_Arduino Uno - Fatal编程技术网

If statement if-else命令只停留在第一个逻辑门上

If statement if-else命令只停留在第一个逻辑门上,if-statement,arduino,arduino-uno,If Statement,Arduino,Arduino Uno,这段代码是制作一个简单的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 (re

这段代码是制作一个简单的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);
 }
 }
//卢克·阿卡·拉泽尔的代码15
常数int temp=(A0);
int(红色)=(2);
int(绿色)=(3);
int(蓝色)=(4);
int(tempread)//保存临时读取的值
无效设置()
{
pinMode(红色,输出);//设置输入和输出
引脚模式(绿色,输出);
pinMode(蓝色,输出);
pinMode(温度、输入);
}
void循环()
{
tempread=(analogRead(temp)/(2.05));//我在这里使用串行打印来测试温度传感器
模拟读数(温度);
延迟(100);
如果((tempread)>=(50)&(tempread)<(74)){
pinMode(蓝色,高);
} 
如果((tempread)>=(74)和&(tempread)<(76)){
pinMode(绿色,高电平);
}
如果((tempread)>=(76)){
pinMode(红色,高电平);
}
}
一个简单的逻辑错误。它将始终输入第一个if,因为永远不会到达其他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);
 }
if((tempread)>=(50)和&(tempread)<(74)){
pinMode(蓝色,高);
} 
如果((tempread)>=(74)和&(tempread)<(76)){
pinMode(绿色,高电平);
}
如果((tempread)>=(76)){
pinMode(红色,高电平);
}

如果有人需要更详细的信息来回答,请询问我,我会喜欢你的建议。如果它大于50,它将永远不会大于74或76,因为它将始终输入第一个if。我已经调整了参数,但仍然不起作用。谢谢,尽管我必须将其更新为最新的代码,但仍然存在逻辑错误。。71,72,73,74... 如果你愿意的话,我会永远走在第一位。请核对我的答案好的,我试试
 if ((tempread) >= (50) && (tempread) < (74)) {
   pinMode(blue,HIGH);  
 } 
else if ((tempread) >= (74) && (tempread) < (76)) {
   pinMode(green,HIGH);
 }
 else if ((tempread) >= (76)) {
   pinMode(red,HIGH);
 }