Подключение реле Uno_dht_rtc_lcd

grek
Offline
Зарегистрирован: 08.08.2016

Всем привет, прогую для себя небольшой комплекс: 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); // задержка :)
}

 

grek
Offline
Зарегистрирован: 08.08.2016

быстро нарисовал без платы i2c, датчик и часы другие в этой FRITzing нет тех плат, что у меня.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

IMHO если Вы решили поделиться опытом, тему логичнее было бы помещать в "Проекты".

grek
Offline
Зарегистрирован: 08.08.2016

Возникли затруднения как прописать реле чтоб включался по времени

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

grek пишет:

Возникли затруднения как прописать реле чтоб включался по времени

Это зависит от того, какой уровень у реле активный.

Если активный 0 - в нужное время подаете на реле LOW, а в остальное время держите HIGH, а если активный 1 - наоборот.