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