salve ragazzi...
avrei bisogno di qualche consiglio da voi esperti...
ho scritto questo semplice codice per leggere la temperatura di 3 sensori DS18B20 e gli ho dato degli intervalli per accendere e spegnere le 3 ventole con il relativo scambio visivo su lcd.
questa parte del codice funziona senza problemi però vorrei sapere se lo stesso si può snellire avendo le stesse funzioni
grazie
#include "OneWire.h"
#include "DallasTemperature.h"
#include "Wire.h"
#include "LiquidCrystal_I2C.h"
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int temp1;
int temp2;
int temp3;
const int fanvasca=4;
const int fanplafo=5;
const int fancpu=6;
LiquidCrystal_I2C lcd(0x38,20,4);
void temperatura();
void setup (void) {
lcd.init();
Wire.begin();
RTC.begin();
sensors.begin();
pinMode(fanvasca, OUTPUT);
pinMode(fanplafo, OUTPUT);
pinMode(fancpu, OUTPUT);
}
void loop(void) {
temperatura();
}
void temperatura(){
sensors.requestTemperatures();
lcd.setCursor(0,2);
lcd.print("T:");
temp1=sensors.getTempCByIndex(0);
lcd.print(temp1);
lcd.print((char)223);
lcd.print("C");
lcd.print(" T:");
temp2=sensors.getTempCByIndex(1);
lcd.print(temp2);
lcd.print((char)223);
lcd.print("C");
lcd.print(" T:");
temp3=sensors.getTempCByIndex(2);
lcd.print(temp3);
lcd.print((char)223);
lcd.print("C");
if ((temp1)>=50){
digitalWrite(fanplafo, HIGH);
lcd.setCursor(0,3);
lcd.print("F:-ON-");
}
else if ((temp1)<=45){
digitalWrite(fanplafo, LOW);
lcd.setCursor(0,3);
lcd.print("F: OFF");
}
if ((temp2)>=24){
digitalWrite(fanvasca, HIGH);
lcd.setCursor(7,3);
lcd.print("F:-ON-");
}
else if ((temp2)<=22){
digitalWrite(fanvasca, LOW);
lcd.setCursor(7,3);
lcd.print("F: OFF");
}
if ((temp3)>=29){
digitalWrite(fancpu, HIGH);
lcd.setCursor(14,3);
lcd.print("F:-ON-");
}
else if ((temp3)<=25){
digitalWrite(fancpu, LOW);
lcd.setCursor(14,3);
lcd.print("F: OFF");
}
}