2014-07-21 2 views
0

Ce code est de faire un simple thermomètre à led rbb. Le problème que j'ai est que j'ai trois niveaux de température de couleur, et quelque chose dans ma syntaxe fait en sorte que le seul regarde la première porte logique. Le code est montré ci-dessous.si d'autres commandes restent simplement sur la première porte logique

// 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

Si quelqu'un a besoin de plus de détails afin de répondre s'il vous plaît demandez-moi j'aimerais votre avis. – user3792207

+0

s'il est plus grand que 50, il ne sera jamais plus grand que 74 ou 76, car il entrera TOUJOURS le premier si. – epipav

+0

j'ai ajusté les paramètres et il n'a toujours pas fonctionné merci je dois cependant mettre à jour au code le plus récent – user3792207

Répondre

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

une simple erreur logique. il entrera toujours dans le premier si d'autres ne seront jamais atteints.

  • assument 75 -> plus grand que 50, d'abord si - ne pas tenir compte d'autres
  • assumeront pas 77 -> plus grand, puis 50, d'abord si - ne pas tenir compte d'autres

vous devriez changer votre logique ce

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

tester comme je parle – user3792207

Questions connexes