Go Down

Topic: accensione e spegnimento di un led in base ad una temperatura (Read 1 time) previous topic - next topic

davideanubi

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

max95

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

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

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?

leo72


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

pablos

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

Code: [Select]
//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);
}
no comment

Alex96T


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

davideanubi

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

Go Up