accensione e spegnimento di un led in base ad una temperatura

Buongiorno a tutti, sono nuovo di Arduino, fin'ora ho fatto le classiche sperimentazioni di accensioni e spegnimenti di led.
Ora però vorrei accendere un led e spegnerlo in base ad una certa temperatura.... come si può fare?
Ringrazio tutti..

certo che puoi, ma un arduino è sprecato per solo questa funzione :slight_smile:

per leggere la temperatura usa un lm35 o simili... leggi la temperatura su pin analogico, e in base al tuo programma attivi o meno il pin del led

eh certo che lo so che è sprecato ma da qualche parte dovrò pur cominciare, e so anche che si può fare, ma non ho idea di come farlo mi puoi aiutare?

davideanubi:
da qualche parte dovrò pur cominciare

Eh già...
http://playground.arduino.cc/Italiano/HomePage
http://playground.arduino.cc//Italiano/Led
http://arduino.cc/en/Reference/AnalogRead

Qualcosa come questo, sono 2 sensori ... taglia e cuci prendi solo quello che ti serve

//con LM35DZ sensore di temperatura 

byte  pin1 = 1; // analog pin A1
byte pin2 = 2; // analog pin A2
byte pinallBasso = 48; //uscita allarme alta temp
byte pinallAlto = 49; // uscita allarme bassa temp
float allAlto = 39.00;
float allBasso = 21.00; 
float  tempc1 = 0; 
float  tempc2 = 0; 
float samples1[8]; // array di precisione 
float samples2[8]; // array di precisione 
float maxi1 = -100, mini1 = 100; // start max/min temperatura
float maxi2 = -100, mini2 = 100; // start max/min temperatura
int i;

void setup()
{
  pinMode(pinallBasso, OUTPUT);
  pinMode(pinallAlto, OUTPUT);
  Serial.begin(9600); 
}

void loop()
{
 
for(i = 0; i<=7; i++)
// prende 8 campioni di temperatura
{  
  samples1[i] = (( 5.0 * analogRead(pin1) * 100.0) / 1024.0);
  tempc1 = tempc1 + samples1[i];
  samples2[i] = (( 5.0 * analogRead(pin2) * 100.0) / 1024.0);
  tempc2 = tempc2 + samples2[i];
  delay(200);

}

tempc1 = tempc1/8.0; // precisione
tempc2 = tempc2/8.0; // precisione
//tempf = (tempc * 9)/ 5 + 32; // conversione fahrenheit

if(tempc1 > maxi1) {maxi1 = tempc1;} // set max temperatura
if(tempc1 < mini1) {mini1 = tempc1;} // set min temperatura
if(tempc2 > maxi2) {maxi2 = tempc2;} // set max temperatura
if(tempc2 < mini2) {mini2 = tempc2;} // set min temperatura
      
      if(tempc1 < allBasso)
        {
          digitalWrite(pinallBasso, HIGH);
          Serial.println("Allarme BASSA temperatura");
        }
       
      else
        {
         // digitalWrite(pinallAlto, LOW);
          digitalWrite(pinallBasso, LOW);
        }  
      
      
      if(tempc1 > allAlto)
        {
          digitalWrite(pinallAlto, HIGH);
          Serial.println("Allarme ALTA temperatura");
        }
      
      else
        {
          digitalWrite(pinallAlto, LOW);
          //digitalWrite(pinallBasso, LOW);
        }  

Serial.print(tempc1,1); Serial.print(" C   "); 
Serial.print(maxi1,1); Serial.print(" Max, "); Serial.print(mini1,1); Serial.print(" Min");
Serial.print("          "); 
Serial.print(tempc2,1); Serial.print(" C   ");
Serial.print(maxi2,1); Serial.print(" Max, "); Serial.print(mini2,1); Serial.println(" Min");

tempc1 = 0;
tempc2 = 0;
delay(1000); 
}

davideanubi:
eh certo che lo so che è sprecato ma da qualche parte dovrò pur cominciare, e so anche che si può fare, ma non ho idea di come farlo mi puoi aiutare?

Hai perfettamente ragione, devi però avere un modulo per rilevare la temperatura (es. termistore o lm35)
a seconda di cosa hai cambia il modo di interfacciarlo con Arduino

Ti ringrazio per la risposta, ma ragionandoci un pò su sono riuscito da solo, per fortuna....
Grazie comunque