Temperatura con DS18B20 e display I2C

Share

Ecco un esempio di codice Arduino per leggere la temperatura utilizzando il sensore di temperatura DS18B20 e visualizzare i risultati su un display I2C.

Prima di tutto, assicurati di avere installate le librerie OneWire e LiquidCrystal_I2C nella tua IDE di Arduino. Puoi farlo andando su “Strumenti” -> “Gestione librerie” e cercando i nomi delle librerie.

#include <OneWire.h>
#include <LiquidCrystal_I2C.h>

// Pin del sensore di temperatura
const int pinDS18B20 = 2;

// Setup del sensore di temperatura
OneWire oneWire(pinDS18B20);
DallasTemperature sensors(&oneWire);

// Indirizzo I2C del display
const int addr = 0x27;

// Numero di colonne e righe del display
const int cols = 16;
const int rows = 2;

// Creazione dell'oggetto display
LiquidCrystal_I2C lcd(addr, cols, rows);

void setup() {
  // Inizializzazione del sensore di temperatura
  sensors.begin();

  // Inizializzazione del display
  lcd.begin(cols, rows);
}

void loop() {
  // Lettura della temperatura
  sensors.requestTemperatures();
  float temperatura = sensors.getTempCByIndex(0);

  // Visualizzazione della temperatura sul display
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Temperatura:");
  lcd.setCursor(0, 1);
  lcd.print(temperatura);
  lcd.print(" C");

  // Ritardo di 1 secondo tra le letture
  delay(1000);
}

In questo esempio, viene utilizzata la libreria OneWire per comunicare con il sensore di temperatura DS18B20 e la libreria LiquidCrystal_I2C per comunicare con il display I2C.

Nel setup, viene inizializzato il sensore di temperatura e il display. Nel loop, viene richiesta la temperatura al sensore, quindi viene visualizzata sul display. Viene utilizzato un ritardo di 1 secondo tra le letture per evitare una visualizzazione troppo rapida dei dati.

Assicurati di aver collegato correttamente il sensore di temperatura DS18B20 e il display I2C al tuo Arduino, e di aver selezionato il giusto indirizzo I2C per il display nel codice (nel nostro caso, 0x27). Adatta il codice se l’indirizzo del tuo display è diverso.