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