errore accensione led con tmp36 + lcd

Salve a tutti..ho una domanda da porvi.. ho collegato ad arduino uno un sensore di temperatura il quale viene letto da un display lcd 16x2. fino a qui tutto bene.
Ho voluto collegare due led, uno rosso e uno verde, ma ho sbagliato qualcosa nel codice perchè lampeggia solo il led rosso.
Al variare della temperatura, se scende sotto i 18° il led rosso si dovrebbe accendere; se sale sopra i 25 ° il led verde si dovrebbe accendere. Se il valore della temperatura rimane tra i 18° e i 25° i led non dovrebbero accendersi.

  • led rosso acceso < 18° ;
  • led verde acceso > 25°;
  • led spenti >= 18 , <= 25

Di seguito ho inserito il codice:

// Vengono indicate le temperature per cui i LED si devono accendere
int temperaturaMassima = 25;
int temperaturaMinima = 18;
int t;
int i;
// Vegngono inizializzati i pin a cui sono connessi i LED
int led_red = 7;
int led_green = 6;
int ritardo = 1000;
const int NRLETTURE = 12; // numero letture
const int SensorPin = A0; //variabile lettura sensore
const int fisso = 1.8;
float valori[NRLETTURE]; //array con i valori
int T_campionamento = 80; // tempo campionamento
float sommaGradi; //variabile somma
float mediaGradi; //variabile media
float conversione1;
float conversione2;
#include <LiquidCrystal.h> // includo la libreria del display lcd
 
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //pin display LCD
 

 
void setup() 
{
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  Serial.begin(9600); //inizializzo la seriale
  lcd.print("Creato da:");
  lcd.setCursor(0,2);
  lcd.print("Gianluca Gallo");
  delay(3000);
  pinMode(13,OUTPUT);
  digitalWrite(13,LOW);
  pinMode(led_red, OUTPUT);
  pinMode(led_green, OUTPUT);
  
 
 
}
 
void loop() 
{
 
  for ( int i = 0; i<=NRLETTURE;i++)
  {
    int sensorVal = analogRead(SensorPin);
 

  float voltage = (sensorVal /1024.0) * 5.0;
  float temperature = ((voltage - 0.5) * 100);
//  conversione1 = (temperature - 32);
 // conversione2 = conversione1 / fisso;

  valori[i] = temperature; //conversione2;
  delay(T_campionamento);
   }
  sommaGradi = 0; // devi essere sicuro che il primo valore sia zero, altrimenti poi sballa tutto
  for (int i=0; i<NRLETTURE; i++) //ciclo che somma i valori dell'array
  
  {
      sommaGradi = sommaGradi + valori[i];
  }
  
  mediaGradi = sommaGradi / NRLETTURE; //divido la somma dei valori per il loro numero (media)
      lcd.clear(); //pulisco lo schermo
  Serial.print ("Gradi: "); //scrivo sul display la parola "gradi"
  Serial.println(valori[i]); //scrivo la temperatura sulla seriale
  lcd.print("Temperatura:"); //scrivo sul display la parola "temperatura"
  lcd.setCursor(0,2); //sposto il cursore sulla seconda linea
  lcd.print(valori[i]); //scrivo la temperatura
  lcd.print(" Gradi"); // scrivo sul display la parola "gradi"
if (valori[i] >temperaturaMassima)
{
  digitalWrite(13,HIGH);
  Serial.println("Temperatura raggiunta!!!!");
}
 

  // I prossimi due IF fanno accedere i LED, a seconda della temperatura
  if (t > temperaturaMassima)
  {
    digitalWrite(led_green, HIGH);   // Viene accesso il LED verde
    delay(ritardo);  
    digitalWrite(led_green, LOW);   // Viene spento il LED verde
  }
 
  if (t < temperaturaMinima) 
  {
    digitalWrite(led_red, HIGH);   // Viene accesso il LED rosso
    delay(ritardo);  
    digitalWrite(led_red, LOW);   // Viene spento il  LED rosso 
  }
 

  
  {
   digitalWrite(13,LOW);
}
 
  delay(2000);
}

Fai un po' di casino con le variabili. Cosa contiene t? La tua temperatura è contenuta in mediaGradi, per cui dovresti usare quella nei confronti, e anche nelle print(), invece di valori[ i].

@gian3194: in conformità al REGOLAMENTO, punto 13, il cross-posting è proibito (anche tra lingue diverse) e tu hai già posto la stessa domanda QUI.

Non solo, in quel thread ti stanno già rispondendo ed è veramente poco cortese abbandonare una discussione e chi ti stava aiutando, per venire di qua a porre la stessa domanda come a significare ... "mica mi fido tanto, ora vado a verificare da un'altra parte". ::slight_smile:

Poi, NON avendolo tu ancora fatto, ti chiedo di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto :wink:) e di leggere con attenzione il REGOLAMENTO.

Infine, per rispetto verso chi ti stava già aiutando nell'altro thread, questo tuo thread viene chiuso e ti prego di continuare dove avevi cominciato. Grazie.

Guglielmo