error led with tmp36 + lcd arduino uno

hi, i have a question…why the led red light always , while the led green not light?

arduino code:

// 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 = 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*;_
    _
    }*_

* 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*); //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*); //scrivo la temperatura*
* lcd.print(" Gradi"); // scrivo sul display la parola “gradi”
if (valori >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);*
}

Please edit your post and place the code between code tags

** **[code]** **
your code here
** **[/code]** **

will result in

your code here

The variable t is never modified in your code.
It is globally declared, which automatically initialises it to 0, then never given another value, so this condition is always true:-

if (t < temperaturaMinima)
  {
    digitalWrite(led_red, HIGH);   // Viene accesso il LED rosso
    delay(ritardo); 
    digitalWrite(led_red, LOW);   // Viene spento il  LED rosso
  }

and this one is never true:-

if (t > temperaturaMassima)
  {
    digitalWrite(led_green, HIGH);   // Viene accesso il LED verde
    delay(ritardo); 
    digitalWrite(led_green, LOW);   // Viene spento il LED verde
  }

gian3194:
then , wich is the correct code?

Your code needs to set t to a value. I have no idea what you're trying to do, but hopefully you do. Once t has a value equal to the temperature you're trying to compare in the conditional statements, both pieces of code are probably correct.

I suspect that you should have posted this thread in the Italiano section of the forums, instead of here in the English section. At least then people could have understood the comments in your code.

Forse si dovrebbe avete pubblicato questa discussione nella sezione Italiana del forum.