Attenzione! Questo articolo non viene aggiornato da più di 12 mesi.

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);
}
