Подключение реле Uno_dht_rtc_lcd
- Войдите на сайт для отправки комментариев
Пнд, 08/08/2016 - 14:03
Всем привет, прогую для себя небольшой комплекс: Arduino Uno + DHT+RTC+LCD, хочу подключить реле, чтоб включалось по времени и может потом по датчику температуры. Показания с RTC и датчика температуры вывожу на экран через i2c
схему нарисую в ближ время, дополню тему.
/*
(~ ̄▽ ̄)~
Arduino UNO + DHT22+ LCD via i2c соединен через часы DS3231
DHT22 подключен на 2 пинчерез резистор
lcd 1 строка: дата время 2 строка: влажность и температура с датчика DHT22
датчик температуры на плате часов не задействован
добра бобра!!!
*/
#include <DS3231.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
//#include <DS1307RTC.h>
// Connect via i2c, default address #0 (A0-A2 not jumpered)
LiquidCrystal_I2C lcd(0x27, 16, 2);
DS3231 Clock;
bool h12 = false; //True is 12-h, false is 24-hour.;
bool PM;
bool Century = false;
DHT dht;
byte degree[8] = // кодируем символ градуса
{
B00111,
B00101,
B00111,
B00000,
B00000,
B00000,
B00000,
};
void setup() {
//установка настроек экрана
//lcd.begin(16, 2);
lcd.init();
lcd.backlight();// Включаем подсветку дисплея
Wire.begin();
dht.setup(2);
}
void loop() {
int second, minute, hour, date, month, year, temp;
year = Clock.getYear();
month = Clock.getMonth(Century);
date = Clock.getDate();
hour = Clock.getHour(h12, PM);
minute = Clock.getMinute();
second = Clock.getSecond();
temp = Clock.getTemperature();
//вывод даты
lcd.setCursor(0, 0); // установка на начало первой строки
if (date < 10) lcd.print('0');
lcd.print(date, DEC);
// lcd.print('/');
if (month < 10) lcd.print('0');
lcd.print(month, DEC);
//lcd.print('/');
//lcd.print("20");
lcd.print(year, DEC);
// вывод времени
lcd.setCursor(10, 0); // с10 символа 1 строки
if (hour < 10) lcd.print('0');
lcd.print(hour, DEC);
lcd.print(':');
if (minute < 10) lcd.print('0');
lcd.print(minute, DEC);
/* удалил секунды
lcd.print(':');
if (second < 10) lcd.print('0');
lcd.print(second, DEC);
lcd.print(' ');
*/
/* датчик температуры на часах
lcd.setCursor(13, 1); //13 символ 2 строки
lcd.print("T:");
lcd.print(temp);
*/
// работа с датчиком DHT22
float h = dht.getHumidity();
float t = dht.getTemperature();
lcd.setCursor(0, 1);
lcd.print("h:");
lcd.print(h, 1); //округление до десятой
lcd.print("% t:"); // пробелы сохраняем. в этой строке 15 символов.
lcd.print(t, 1);
//lcd.setCursor(15, 1); //знак градуса будет символом на дисплее
lcd.write(1);
delay(2000); // задержка :)
}
быстро нарисовал без платы i2c, датчик и часы другие в этой FRITzing нет тех плат, что у меня.
IMHO если Вы решили поделиться опытом, тему логичнее было бы помещать в "Проекты".
Возникли затруднения как прописать реле чтоб включался по времени
Возникли затруднения как прописать реле чтоб включался по времени
Это зависит от того, какой уровень у реле активный.
Если активный 0 - в нужное время подаете на реле LOW, а в остальное время держите HIGH, а если активный 1 - наоборот.