Гроубокс помощь с скетчем

parfizanXXXXXXX
Offline
Зарегистрирован: 19.12.2021

Привет форумчане.

Помогите в правке кода.

Вроде работает,но как-то криво.Не могу настроить включение реле по времени.

#include <stDHT.h>
#include <iarduino_RTC.h>
#include <LiquidCrystal_PCF8574.h>
#include <TimeLib.h>
#include <DS1307RTC.h>
#include <Wire.h>

  iarduino_RTC time(RTC_DS1307);   

  int in2 = 6;
  int in1 = 8;

  LiquidCrystal_PCF8574 lcd(0x27);

  DHT sens(DHT22);

  unsigned long timing;

void setup(){
  pinMode(in2, OUTPUT); //реле освещения
  pinMode(in1, OUTPUT); //реле вентилятора

  tmElements_t tm;

  time.begin(); 

  lcd.begin(16, 2);// у нас экран 16 столбцов на 2 строки
  lcd.setBacklight(255); //установить яркость подсветки на максимум
 }
void loop(){
  int t2 = sens.readTemperature(2);
  int h2 = sens.readHumidity(2);

  tmElements_t tm;
if (RTC.read(tm))
if (tm.Minute==59)
  {digitalWrite(in1, LOW);}
if (tm.Second==40)
  {digitalWrite(in1, HIGH);}
  
if (t2 > 26) {digitalWrite(in1, LOW);
  lcd.setCursor(0,1);
  lcd.print("Fan is ON ");
  lcd.print(char(126));
  lcd.print(t2);
  lcd.print(char(223));
  lcd.print(" "); 
  lcd.print(" "); 
}
else{  
  lcd.setCursor(0,1); 
  lcd.print("Temperature: "); 
  lcd.print(t2);
  lcd.print(char(223));
}
  lcd.setCursor(0,0);
  lcd.print("Humidity: ");
  lcd.print(h2);
  lcd.print("%");
  
if (millis() - timing > 7000){
   digitalWrite(in2, LOW);
   lcd.setCursor(0,0);
   lcd.print("Humidity: ");
   lcd.print(h2);
   lcd.print("%");
   lcd.print(" ");
   lcd.print(char(111));
   lcd.print(char(78));
 }
if (millis() - timing > 35000){
  timing = millis(); digitalWrite(in2, HIGH);
   lcd.setCursor(0,0);
   lcd.print("Humidity: ");
   lcd.print(h2);
   lcd.print("%");
   lcd.print(" ");
   lcd.print(char(111));
   lcd.print(char(70));
  }
}

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

И что именно не получается? Словами описать можешь?

b707
Offline
Зарегистрирован: 26.05.2017

parfizanXXXXXXX пишет:

Вроде работает,но как-то криво.Не могу настроить включение реле по времени.

 

все силы на работу с LCD ушли?

Если серьезно - когда отлаживаете код, оставьте в нем только самое необходимое, например работу с реле, а всю лабуду типа экранчиков и когечек - нах.

Когда отладите реле - тогда постепенно начинайте добавлять все остальное

parfizanXXXXXXX
Offline
Зарегистрирован: 19.12.2021

Как видишь по коду,то реле на освещение работает по тайменгу.Хотя уменя стоит модуль 1307.Не получается включать челе по времени.Допустим в 9-00 вкл. а в 21-00 выкл.В итоге сделал так.

parfizanXXXXXXX
Offline
Зарегистрирован: 19.12.2021

Так и делал.Не получается привязать релейки к времени.Вроде как на вентилятор работает,а на освещение не вкакую.Пришлось по таймингу делать

parfizanXXXXXXX
Offline
Зарегистрирован: 19.12.2021

Еще вопрос по коду

if (t2 > 26) {digitalWrite(in1, LOW);

42   lcd.setCursor(0,1);
43   lcd.print("Fan is ON ");
44   lcd.print(char(126));
45   lcd.print(t2);
46   lcd.print(char(223));
47   lcd.print(" ");
48   lcd.print(" ");
49 }
50 else
51   lcd.setCursor(0,1);
52   lcd.print("Temperature: ");
53   lcd.print(t2);
54

  lcd.print(char(223));

Включение вентилятора на >26С.

Автоматом он выключается чере 15-20 секунд.

Если после else добавить код на выключение,допустим на 24С или просто код digitalWrite(in1, HIGH);то происходит конфликт с кодом на включение вентилятора раз в час на 20 секунд.

if (tm.Minute==59)
37   {digitalWrite(in1, LOW);}
38 if (tm.Second==40)
39   {digitalWrite(in1, HIGH);}

В итоге реле не работает

parfizanXXXXXXX
Offline
Зарегистрирован: 19.12.2021

я так понимаю нужно капать в сторону кода на ds1307 но не пойму что ему не хватает

b707
Offline
Зарегистрирован: 26.05.2017

Не получается сделать по времени? А как пробовал? И пробовал ли?

parfizanXXXXXXX
Offline
Зарегистрирован: 19.12.2021

if (tm.Hour>=9) {digitalWrite(in2, HIGH);} //Если время 9-00, то включаем лампу посредством реле
if (tm.Hour>=21) {digitalWrite(in2, LOW);} //Если время 21-00, то выключаем лампу посредством реле

По идее должен был сработать.

b707
Offline
Зарегистрирован: 26.05.2017

И че не так?
Я не пойму, кому это надо - тебе или нам? Что из тебя все клещами тянуть надо?

parfizanXXXXXXX
Offline
Зарегистрирован: 19.12.2021

Было бы "так",то весь этот бутер работал бы,и не обращался б за помощью.Вроде как все выше было сказано что не так.

nik182
Offline
Зарегистрирован: 04.05.2015

Сегодня уже отвечали в другой теме. Используй unix time.

b707
Offline
Зарегистрирован: 26.05.2017

parfizanXXXXXX - научитесь нормально формулировать свои вопросы и описывать проблемы.

Кстати, этот навык очень связан с умением программировать. Именно потому, что вы не в силах и два слова связать - у вас и компьютеру не удается обьяснить, что и как должно работать.