Sensore di t° con LED RGB - ma non funziona

Ciao a Tutti,

Sto smanettando con Arduino e sto provando di fare un sensore di t° che acenda
il LED verde quando la t° è di 20°
il LED rosso quando è sotto
il LED blue quando è sopra
…Ma non si accende il LED

Il sensore di t° legge, lo vedo nel serial.

qui il mio sketch

const int sensorPin = A0;
const float baselineTemp = 20.0;

const int redLEDPin = 12;
const int blueLEDPin = 11;
const int greenLEDPin = 10;

int redValue = 0; 
int blueValue = 0;
int greenValue = 0;

void setup()
{
  Serial.begin(9600);

  for(int pinNumber = 10; pinNumber < 13; pinNumber ++)
  {
    pinMode(pinNumber, OUTPUT);
    //digitalWrite(pinNumber, LOW);
  }
}

void loop()
{
  int sensorVal = analogRead(sensorPin);
  Serial.print("sensore Value : ");
  Serial.print(sensorVal);
  
  //convertire la ADC in tensione
  float voltage = (sensorVal/1024.0) * 5.0;
  
  Serial.print(", Volts: ");
  Serial.print(voltage);
  
  Serial.print(", degrees C: ");
  //convertire la tensione in t°
  float temperature = (voltage - .5) * 100;
  Serial.println(temperature);
  
  if(temperature < baselineTemp) 
  {
    digitalWrite(redLEDPin, HIGH);
    digitalWrite(blueLEDPin, LOW);
    digitalWrite(greenLEDPin, LOW);
  }
  else if (temperature > baselineTemp)
  {
    digitalWrite(redLEDPin, LOW);
    digitalWrite(blueLEDPin, HIGH);
    digitalWrite(greenLEDPin, LOW);
  }
  else if (temperature == 20);
  {
    digitalWrite(redLEDPin, LOW);
    digitalWrite(blueLEDPin, LOW);
    digitalWrite(greenLEDPin, HIGH);
  }
}

Qui il wiring

La variabile temperature ritorna la temperatura corretta?
Sicuro di aver messo giusto i piedini del led ?

perche’ nella foto vedo il Catodo del Led scollegato ?

Brunello:
perche' nella foto vedo il Catodo del Led scollegato ?

Azz, @Wado, @Brunello ha ragione, mica hai collegato il pin senza resistenza. :smiley: Il filo arancio rimane solo nella prima parte di breadboard.

ahahah è vero!

adesso però il led rimane verde fisso..

Perchè c'e' un errore nel codice:

if (temperature == 20);
{

hai messo il ; alla fine, l'if termina li e il blocco successivo lo esegue sempre

Poi è meglio se fai cosi, perchè temperature è float

if (temperature == baselineTemp)
{

Ho modificato lo sketch cosi

const int sensorPin = A0;
const float baselineTemp = 20.0;

const int redLEDPin = 12;
const int blueLEDPin = 11;
const int greenLEDPin = 10;

int redValue = 0; 
int blueValue = 0;
int greenValue = 0;

void setup()
{
  Serial.begin(9600);

  for(int pinNumber = 10; pinNumber < 13; pinNumber ++)
  {
    pinMode(pinNumber, OUTPUT);
    //digitalWrite(pinNumber, LOW);
  }
}

void loop()
{
  int sensorVal = analogRead(sensorPin);
  Serial.print("sensore Value : ");
  Serial.print(sensorVal);
  
  //convertire la ADC in tensione
  float voltage = (sensorVal/1024.0) * 5.0;
  
  Serial.print(", Volts: ");
  Serial.print(voltage);
  
  Serial.print(", degrees C: ");
  //convertire la tensione in t°
  float temperature = (voltage - .5) * 100;
  Serial.println(temperature);
  
  if(temperature < baselineTemp) 
  {
    digitalWrite(redLEDPin, HIGH);
    digitalWrite(blueLEDPin, LOW);
    digitalWrite(greenLEDPin, LOW);
  }
  else if (temperature >= baselineTemp + 2)
  {
    digitalWrite(redLEDPin, LOW);
    digitalWrite(blueLEDPin, HIGH);
    digitalWrite(greenLEDPin, LOW);
  }
  else if (temperature > baselineTemp && 
  temperature < baselineTemp +2);
  {
    digitalWrite(redLEDPin, LOW);
    digitalWrite(blueLEDPin, LOW);
    digitalWrite(greenLEDPin, HIGH);
  }
}

Adesso dovrebbe acendere rosso se < baselineTemp
blu se > baselineTemp +2
verde se > baselineTemp ma < baselinetemp +2

PERO’
il LED si accende si blu e di rosso ma non di verde.
Quando si dovrebbe acendere di verde imane spento.
Le t° sono giuste le monitoro col serial.

@Wado, nel codice cha hai postato c’e’ ancora l’errore:

else if (temperature > baselineTemp && temperature < baselineTemp +2);
  {

Quel punto e virgola non ha senso

GRANDE NID,

Risolto grazie mille a tutti!