Ви не увійшли.
Сторінки 1
Подскажите пожалуйста как создать листинг отображаемого меню на LCD 1602. Необходимо вывести 3 вида информации поочередно по нажатию. Я предполагаю что необходимо оперировать if подсчитывая количество нажатий?
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);
}
}
только аппаратно - купите дисплей и модуль i2с отдельно.
при установке модуля ноги под подсветку не подключаете (я их просто откусил) , паяете провода под кнопку или шим (для регулировки яркости подсветки).
Увы но это не так. Вопрос вполне решается программно. Просто нужно было некоторое время для понятия сути.
Я думал про такой вариант, но не хотелось его применять.
А если библиотеку поковырять? Может можно там чего подправить?
Добрый день. Прошу пнуть в нужном направлении. Есть связка ардуино нано, LCD 1602 на шине I2C, DHT22, часы реального времени.
Подсветка включается посредством команды lcd.backlight(); Отключить ее можно командой lcd.noBacklight();
Основную задумку по коду реализовал, кроме вкл. и выкл. подсветки кнопкой. Я перечитал много тем, примеров, но так и не нашел как реализовать это. Если не сложно подскажите пожалуйста. Буду очень благодарен.
Сторінки 1