#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
#define ONE_WIRE_BUS 7
#define RED_LED 9
#define GREEN_LED 10
#define BLUE_LED 8
const float TEMP_LOWER = 20.0;
const float TEMP_UPPER = 28.0;
// LCD: RS, E, D4, D5, D6, D7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(9600);
sensors.begin();
lcd.begin(16, 2);
lcd.print("Thermometer");
lcd.setCursor(0, 1);
lcd.print("Ready...");
pinMode(RED_LED, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
pinMode(BLUE_LED, OUTPUT);
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED, LOW);
digitalWrite(BLUE_LED, LOW);
delay(2000);
}
void loop() {
sensors.requestTemperatures();
float temp = sensors.getTempCByIndex(0);
// Гасим все
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED, LOW);
digitalWrite(BLUE_LED, LOW);
if (temp < TEMP_LOWER) {
digitalWrite(BLUE_LED, HIGH);
} else if (temp > TEMP_UPPER) {
digitalWrite(RED_LED, HIGH);
} else {
digitalWrite(GREEN_LED, HIGH);
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
if (temp == DEVICE_DISCONNECTED_C) {
lcd.print("ERROR");
} else {
lcd.print(temp);
lcd.print((char)223);
lcd.print("C");
}
lcd.setCursor(0, 1);
lcd.print(TEMP_LOWER);
lcd.print("-");
lcd.print(TEMP_UPPER);
lcd.print((char)223);
lcd.print("C");
delay(1000);
}Loading
ds18b20
ds18b20