Un piccolo sistema per verificare costantemente la temperatura dell’acquario
Arduino collegato a sensori di temperatura DS18B20 e display LCD 16×2 (con modulo I2C)
Per prima cosa troviamo gli indirizzi dei sensori:
TROVO INDIRIZZI SENSORI /* * Rui Santos * Complete Project Details https://randomnerdtutorials.com */ #include <OneWire.h> // Based on the OneWire library example OneWire ds(4); //data wire connected to GPIO15 void setup(void) { Serial.begin(9600); } void loop(void) { byte i; byte addr[8]; if (!ds.search(addr)) { Serial.println(" No more addresses."); Serial.println(); ds.reset_search(); delay(250); return; } Serial.print(" ROM ="); for (i = 0; i < 8; i++) { Serial.write(' '); Serial.print(addr[i], HEX); } }
Poi carichiamo il codice vero e proprio con gli indirizzi trovati
#include <Wire.h> #include <LiquidCrystal_I2C.h> #include <OneWire.h> #include <DallasTemperature.h> // inizializzazione della libreria in cui è descritta la modalità di utilizzo dei pin LiquidCrystal_I2C lcd(0x27, 16, 2); // impostazione dell'indirizzo dell'LCD 0x27 di 16 caratteri e 2 linee //----------------------------- // Data wire is plugged into port 4 on the Arduino #define ONE_WIRE_BUS 4 // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs) OneWire oneWire(ONE_WIRE_BUS); // Pass our oneWire reference to Dallas Temperature. DallasTemperature sensors(&oneWire); DeviceAddress sensor1 = { 0x28, 0x58, 0xA0, 0x96, 0x42, 0x20, 0x1, 0xAB }; DeviceAddress sensor2 = { 0x28, 0x62, 0x62, 0x9, 0x42, 0x20, 0x1, 0x53 }; void setup() { //lcd lcd.begin(); // inizializzazione dell'LCD lcd.backlight(); // attivazione della retroilluminazione // start serial port Serial.begin(115200); // Start up the library sensors.begin(); } //----------------------------- void loop(void) { Serial.print("Requesting temperatures..."); sensors.requestTemperatures(); // Send the command to get temperatures Serial.println("DONE"); Serial.print("Sensor 1(*C): "); Serial.print(sensors.getTempC(sensor1)); Serial.print(" Sensor 1(*F): "); Serial.println(sensors.getTempF(sensor1)); Serial.print("Sensor 2(*C): "); Serial.print(sensors.getTempC(sensor2)); Serial.print(" Sensor 2(*F): "); Serial.println(sensors.getTempF(sensor2)); //-----// lcd.setCursor(0,0); lcd.print("Temp1: "); lcd.print(sensors.getTempC(sensor1)); lcd.setCursor(0,1); lcd.print("Temp2: "); lcd.print(sensors.getTempC(sensor2)); delay(5000); }
Lascia un commento