#1 2019-01-18 17:34:30

Marshall Kross
Учасник
Зареєстрований: 2019-01-18
Повідомлень: 5

Управление подсветкой дисплея 1602 I2C

Добрый день. Прошу пнуть в нужном направлении. Есть связка ардуино нано, LCD 1602  на шине I2C, DHT22, часы реального времени.

Подсветка включается посредством команды lcd.backlight(); Отключить ее можно командой lcd.noBacklight();
Основную задумку по коду реализовал, кроме вкл. и выкл. подсветки кнопкой. Я перечитал много тем, примеров, но так и не нашел как реализовать это. Если не сложно подскажите пожалуйста. Буду очень благодарен.

Неактивний

#2 2019-01-18 19:53:35

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 874

Re: Управление подсветкой дисплея 1602 I2C

только аппаратно - купите дисплей и модуль i2с отдельно.
при установке модуля ноги под подсветку не подключаете (я их просто откусил) , паяете провода под кнопку или шим (для регулировки яркости подсветки).

Неактивний

#3 2019-01-19 00:39:05

Marshall Kross
Учасник
Зареєстрований: 2019-01-18
Повідомлень: 5

Re: Управление подсветкой дисплея 1602 I2C

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

Остання редакція Marshall Kross (2019-01-19 00:39:42)

Неактивний

#4 2019-01-19 10:33:08

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 874

Re: Управление подсветкой дисплея 1602 I2C

ну попробуйте, вам же никто не запрещает и  не мешает.

Неактивний

#5 2019-01-19 11:33:16

renoshnik
Учасник
Зареєстрований: 2017-04-03
Повідомлень: 1,025

Re: Управление подсветкой дисплея 1602 I2C

Marshall Kross пише:

Подсветка включается посредством команды lcd.backlight(); Отключить ее можно командой lcd.noBacklight();
Основную задумку по коду реализовал, кроме вкл. и выкл. подсветки кнопкой. Я перечитал много тем, примеров, но так и не нашел как реализовать это. Если не сложно подскажите пожалуйста. Буду очень благодарен.

а в чем проблема если кнопкой (задействовать один вход контроллера) запускать команды ???

Неактивний

#6 2019-01-22 15:30:14

Marshall Kross
Учасник
Зареєстрований: 2019-01-18
Повідомлень: 5

Re: Управление подсветкой дисплея 1602 I2C

vvr пише:

только аппаратно - купите дисплей и модуль i2с отдельно.
при установке модуля ноги под подсветку не подключаете (я их просто откусил) , паяете провода под кнопку или шим (для регулировки яркости подсветки).

Увы но это не так. Вопрос вполне решается программно. Просто нужно было некоторое время для понятия сути.

Неактивний

#7 2019-01-22 15:35:52

Marshall Kross
Учасник
Зареєстрований: 2019-01-18
Повідомлень: 5

Re: Управление подсветкой дисплея 1602 I2C

renoshnik пише:
Marshall Kross пише:

Подсветка включается посредством команды lcd.backlight(); Отключить ее можно командой lcd.noBacklight();
Основную задумку по коду реализовал, кроме вкл. и выкл. подсветки кнопкой. Я перечитал много тем, примеров, но так и не нашел как реализовать это. Если не сложно подскажите пожалуйста. Буду очень благодарен.

а в чем проблема если кнопкой (задействовать один вход контроллера) запускать команды ???

Проблема была в непонимании сути и как следствие реализации желаемого. В итоге после курения вики получился такой код:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <iarduino_RTC.h>
#include "DHT.h"
#define DHTPIN 2
DHT dht(DHTPIN, DHT22);
iarduino_RTC time(RTC_DS3231);
LiquidCrystal_I2C lcd(0x3F, 16, 2);
boolean button_flag = 0;
int led_backlight = 1;
int ledPin = 13;
unsigned long last_time = 0;

void setup() {
  dht.begin();
  lcd.init();
  delay(200);
  Serial.begin(9600);
  time.begin();
  pinMode(3, INPUT_PULLUP);
  pinMode(13, OUTPUT);

}

void loop() {

  if (digitalRead(3) == HIGH && button_flag == 0) button_flag = 1;
  if (digitalRead(3) == LOW && button_flag == 1)
  {
    if (led_backlight == 1)
    {
      lcd.backlight();
      led_backlight = 0;
    } else {
      lcd.noBacklight();
      led_backlight = 1;
    }
    button_flag = 0;
    if (millis() - last_time > 100) last_time = millis();
  }
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  float f = dht.readTemperature(true);
  if (millis() % 1000 == 0) {
    lcd.setCursor(0, 0);
    lcd.print(time.gettime("H"));
    lcd.setCursor(2, 0);
    lcd.print(":");
    lcd.setCursor(3, 0);
    lcd.print(time.gettime("i"));
    lcd.setCursor(5, 0);
    lcd.print(":");
    lcd.setCursor(6, 0);
    lcd.print(time.gettime("s"));
    lcd.setCursor(9, 0);
    lcd.print(time.gettime("d"));
    lcd.setCursor(12, 0);
    lcd.print(time.gettime("Y"));
    lcd.setCursor(0, 1);
    lcd.print("t=");
    lcd.setCursor(3, 1);
    lcd.print(t, 1);
    lcd.setCursor(7, 1);
    lcd.print("c");
    lcd.setCursor(9, 1);
    lcd.print("h=");
    lcd.setCursor(11, 1);
    lcd.print(h, 1);
    lcd.print("%");
    delay(1);
  }
}

Неактивний

#8 2019-01-23 01:06:20

Marshall Kross
Учасник
Зареєстрований: 2019-01-18
Повідомлень: 5

Re: Управление подсветкой дисплея 1602 I2C

Подскажите пожалуйста как создать листинг отображаемого меню на LCD 1602. Необходимо вывести 3 вида информации поочередно по нажатию. Я предполагаю что необходимо оперировать if подсчитывая количество нажатий?

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму