Pages: [1]   Go Down
Author Topic: accensione e spegnimento di un led in base ad una temperatura  (Read 881 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 1
Posts: 74
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Full Member
***
Karma: 0
Posts: 138
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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
Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 74
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged


Genova
Offline Offline
Faraday Member
**
Karma: 38
Posts: 3255
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code:
//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);
}
Logged

no comment

Milano
Offline Offline
Full Member
***
Karma: 7
Posts: 178
W8
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 74
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Pages: [1]   Go Up
Jump to: