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

iGorw
Offline
Зарегистрирован: 04.09.2016

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "stDHT.h"

DHT sens(DHT21);
DHT sens2(DHT11);

LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем дисплей

int flag=0;

void setup()
{
  lcd.init();                     
    
   pinMode(2, INPUT);
  digitalWrite(2, HIGH);
  pinMode(3, INPUT);
  digitalWrite(3, HIGH);
}
void loop()
{
 
 
  int t = sens.readTemperature(2); // чтение датчика на пине 2
  int h = sens.readHumidity(2);    // чтение датчика на пине 2
  delay(2000);
 
  int t2 = sens2.readTemperature(3); // чтение датчика на пине 3
  int h2 = sens2.readHumidity(3);    // чтение датчика на пине 3
  delay(2000);
       
      lcd.clear();
      lcd.print("HumStr: ");
      lcd.print(h);
      lcd.print(" %");
      lcd.setCursor(0, 1);
      lcd.print("TempStr: ");
      lcd.print(t);
      lcd.print(" C ");
     
      delay(4000);
     
      lcd.clear();
      lcd.print("HumHome: ");
      lcd.print(h2);
      lcd.print(" %");
      lcd.setCursor(0, 1);
      lcd.print("TempHome: ");
      lcd.print(t2);
      lcd.print(" C ");
      
      lcd.noBacklight();
      
      if(digitalRead(14)==HIGH&&flag==0)
      flag=1;
             
      if(digitalRead(14)==LOW&&flag==1)
     {    
       lcd.backlight();
       flag=0;
     }
}

 

И так по порядку вданном скетче: 2 датчика температуры и влажности DHT 11 и DHT 22, LCD1602 подключенный по I2C. Если использовать полностью данный скетч не меняя, то на экран выводятся данные с датчиков по очереди и распологаются на экране по 4 секунды. И если успеть нажать кнопку после того вывелись данные со второго датчика на экран, и еще не успели начать считываться с первого то включится экран на 8 секунд. А нужно что бы экран включался в любое время при нажатии на кнопку на какое то время, что бы можно было посмотреть данные с обоих датчиков и он погас. И До меня честно говоря не доходит как это можно сделать, пытался искать информацию можно ли производить какие то действия пока действует delay (похоже нет) искал альтернативы, millis() вроде получше в этом плане, но она не сбрасывается, точнее сбрасывается но через 50 дней, не понимаю как приспособить его сюда. Я новичек, сильно не бросайте камнями), это первый проект.

bwn
Offline
Зарегистрирован: 25.08.2014

[/quote]

 И До меня честно говоря не доходит как это можно сделать, пытался искать информацию можно ли производить какие то действия пока действует delay (похоже нет) искал альтернативы, millis() вроде получше в этом плане, но она не сбрасывается, точнее сбрасывается но через 50 дней, не понимаю как приспособить его сюда. Я новичек, сильно не бросайте камнями), это первый проект.

[/quote]

Легенда о сбросившейся миллис не была подтверждена научными экспедициями и в правильно приготовленном виде она не пытается прибегнуть к суициду. Читаем здесь (хорошая статья от старого участника форума) и пользуемся на здоровье.

BoBo4kA
Offline
Зарегистрирован: 15.01.2016

на плате есть отдельная перемычка подсветки, можно её на отдельный пин вывести, правда по току не готов ответить, хватит ли.

bwn
Offline
Зарегистрирован: 25.08.2014

BoBo4kA пишет:

на плате есть отдельная перемычка подсветки, можно её на отдельный пин вывести, правда по току не готов ответить, хватит ли.

По току не хватит однозначно (до 100мА может быть), и какой смысл отказываться от штатного библиотечного управления. У меня работает без каких либо проблем (тронули любую кнопку, две минуты подсвечивает, потом гаснет)