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