// Bibliotecas----------------------------------------------------------
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
#include <math.h>
// Pinos
const int OneWireBus = 4; // DS18B20
const int sensorPin = 34; // NTC
const float BETA = 3950;
// Timer
unsigned long tempoAnterior = 0;
const long intervalo = 1000; // 1 segundo
// Instâncias
OneWire oneWire(OneWireBus);
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(115200);
sensors.begin();
lcd.init();
lcd.backlight();
}
void loop() {
unsigned long tempoAtual = millis();
if (tempoAtual - tempoAnterior >= intervalo) {
tempoAnterior = tempoAtual;
//NTC
float somaTemperaturas = 0;
for (int i = 0; i < 10; i++) {
int analogValue = analogRead(sensorPin);
float celsius = 1 / (log(1 / (4095. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
somaTemperaturas += celsius;
delay(50);
}
float mediaCelsius = somaTemperaturas / 10;
//DS18B20
sensors.requestTemperatures();
float temperaturaDS = sensors.getTempCByIndex(0);
//Serial
Serial.print("NTC: ");
Serial.print(mediaCelsius, 2);
Serial.print(" DS: ");
Serial.println(temperaturaDS, 2);
//LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("NTC:");
lcd.print(mediaCelsius, 1);
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("DS:");
lcd.print(temperaturaDS, 1);
lcd.print((char)223);
lcd.print("C");
}
}
Loading
ds18b20
ds18b20