LiquidCrystal_I2C и курсор
- Войдите на сайт для отправки комментариев
Пнд, 23/05/2016 - 20:58
Добрый день всем!
В стандартной библиотеке LiquidCrystal_I2C и в ее клонах курсор может быть включен-выключен и блинк-ноблинк. А как бы отвязать его от позиции печати символа и управлять им произвольно, перемещая независимо от setCursor() ? По идее, хочется маркировать этим курсором редактируемые поля в меню, ну и масса возможностей использования...
Нужно переписывать библиотеку как-то, а может есть готовые решения у мастеров? Пропадает целая строчка в символе, жалко, однако!
Как сделать так:
То есть, если вы напишете :
lcd.setCursor(0, 0);
То есть, если вы напишете :
lcd.setCursor(0, 0);
1
lcd.setCursor( 0, 0);
2
lcd.print(
"1234567890qwerty"
);
3
4
lcd.setCursor(10, 0);
5
lcd.cursor();
....то подчеркнется "q"
...не подчеркивается
01
#include <Wire.h>
02
#include <LiquidCrystal_I2C.h>
03
LiquidCrystal_I2C lcd(0x3f, 20, 4);
04
05
void
setup
(){
06
Serial
.begin(9600);
07
Wire.begin();
08
lcd.init();
09
lcd.backlight();
10
}
11
12
void
loop
() {
13
lcd.setCursor( 0, 0);
14
lcd.print(
"1234567890qwerty"
);
15
16
lcd.setCursor(19, 0);
17
lcd.cursor();
18
}
...не подчеркивается
01
#include <Wire.h>
02
#include <LiquidCrystal_I2C.h>
03
LiquidCrystal_I2C lcd(0x3f, 20, 4);
04
05
void
setup
(){
06
Serial
.begin(9600);
07
Wire.begin();
08
lcd.init();
09
lcd.backlight();
10
11
lcd.setCursor( 0, 0);
12
lcd.print(
"1234567890qwerty"
);
13
14
lcd.setCursor(10, 0);
15
lcd.cursor();
16
17
}
18
19
void
loop
() {}
Библиртека стандатная?
Библиртека стандатная?
ты попробовал мой вариант кода?
Да, конечно. Курсор проблёскивает еле видно под всей строкой.
Да, конечно. Курсор проблёскивает еле видно под всей строкой.
прекращай - у тебя свой вариант кода, если курсор проблескивает.
очевидно же, что ты долбишь печать в лупе с частотой обработки скетча, а не один раз в сетапе.
с чего бы это проблескивать курсору?
Дак в том и нужда : печатать курсор в экранах меню как метку изменяемого параметра.
Дак в том и нужда : печатать курсор в экранах меню как метку изменяемого параметра.
я, надеюсь, что ты понимаешь свою проблему - вместо печати один раз, ты долбишь индикатор с частотой обработки скетча.
не делай так.
Да, нужно писать задержку печати курсора, либо "подмораживать " окна меню вместе с курсором в нужном положении
Да, нужно писать задержку печати курсора, либо "подмораживать " окна меню вместе с курсором в нужном положении
нет - нужно печатать ОДИН раз по условию изменения чего-то там.
изменилась переменная - напечатал.
нажал на кнопку - напечатал.
что-то произошло - напечатал.
не знаю, как это у меня так скопипастилось
lcd.setCursor(19, 0);
конечно же
lcd.setCursor(10, 0);
Да, уже сам додумался. По коду меньше не будет, мне кажется. Но проверю все равно.
Но проверю все равно.
достаточно попробовать с закоментированным и расскоментированным.
01
#include <Wire.h>
02
#include <LiquidCrystal_I2C.h>
03
LiquidCrystal_I2C lcd(0x3f, 20, 4);
04
05
void
setup
(){
06
Serial
.begin(9600);
07
Wire.begin();
08
lcd.init();
09
lcd.backlight();
10
11
lcd.setCursor( 0, 0);
12
lcd.print(
"1234567890qwerty"
);
13
14
lcd.setCursor(10, 0);
15
lcd.cursor();
16
17
}
18
19
void
loop
() {
20
21
// lcd.setCursor( 0, 0);
22
// lcd.print("1234567890qwerty");
23
24
// lcd.setCursor(10, 0);
25
// lcd.cursor();
26
27
}
не знаю, как это у меня так скопипастилось
lcd.setCursor(19, 0);
конечно же
lcd.setCursor(10, 0);
Да это суть неважно. Спасибо за совет, буду посмотреть.
Что пишу: 14 -15 окошек меню, в которых изменяются 5-6 переменных. Сейчас в скетче активная область мигает, для этого написал функции поочередной печати переменной и пробела . Т.к. переменные занимают разное кол-во ячеек экрана, пришлось писать отдельно для float, bool, и byte свои функции мигания. С курсором по вашей методе будет проще, и процессор меньше занят будет постоянной печатью.