#include <Servo.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h> // подключаем библиотеку дисплея
const int SERVO_PIN = 5; // Arduino pin connected to Servo Motor's pin
const int SENSOR_PIN = 2; // Arduino pin connected to DS18B20 sensor's DATA pin
const float TEMPERATURE_THRESHOLD = 20; // °C
const float TOLERANCE = 0.5;
LiquidCrystal_I2C lcd(0x27, 16, 2);// °C
Servo servo; // create servo object to control a servo
OneWire oneWire(SENSOR_PIN); // setup a oneWire instance
DallasTemperature sensor(&oneWire); // pass oneWire to DallasTemperature library
float temperature;
int angle;
void setup() {
Serial.begin(9600); // initialize serial
servo.attach(SERVO_PIN); // attaches the servo on pin 9 to the servo object
servo.write(0);
sensor.begin(); // initialize the sensor
lcd.init(); // инициализация
lcd.backlight(); // включить подсветку
}
void loop() {
sensor.requestTemperatures(); // send the command to get temperatures
temperature = sensor.getTempCByIndex(0); // read temperature in Celsius
if (temperature > (TEMPERATURE_THRESHOLD + TOLERANCE))
angle = 90; // set angle to 90 degree
else if (temperature < (TEMPERATURE_THRESHOLD - TOLERANCE))
angle = 0; // set angle to 0 degree
servo.write(angle); // rotate servo motor
lcd.home(); // курсор в 0,0
lcd.print(temperature); // выводим температуру
lcd.write(223); // символ градуса
lcd.print("C "); // С и пара пробелов для очистки
// print to serial
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print("°C => servo angle: ");
Serial.println(angle);
}