Функция имитирует мигание указателя в меню.
Void BlinkCursor (const byte set_column, const byte set_row, const char cursor)
{
if (millis() - g_COUNT_BLINK_CURS >= 400) {
g_COUNT_BLINK_CURS = millis();
g_BLINK_CURS++;
}
switch (g_BLINK_CURS) {
case 0: lcd.setCursor (set_column, set_row); lcd.write(cursor); break;
case 1: lcd.setCursor (set_column, set_row); lcd.print(" "); break;
case 0: g_BLINK_CURS = 1;
}
}
Пока millis() - g_COUNT_BLINK_CURS >= 400 истина, каждый case выполняется 76 раз это заметно нагружает мк ненужными действиями. Не хватает фантазии сделать отрисовку единожды. По говнокод не надо писать. Я учусь сам как могу.
C/C++
Помогите самоучке с ардуино/с++
ИМХО (как вариант блинка со своим таймингом):
#include< LiquidCrystal.h >
unsigned long g_COUNT_BLINK_CURS = 0;
bool state = false;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup()
{
lcd.begin(16, 2);
}
void loop() {
if (millis() - g_COUNT_BLINK_CURS >= 400) {
g_COUNT_BLINK_CURS = millis();
state = ! state;
lcd.setCursor(0,0);
lcd.write(state? ' ':'_');
}
//<-- здесь ещё можно задержку поставить, чтобы не очень часто крутить цикл.
//через тот-же delay
}
Проект/пример на тинкере, завтра закрою:
https://www.tinkercad.com/things/eeTexD57bx0
#include< LiquidCrystal.h >
unsigned long g_COUNT_BLINK_CURS = 0;
bool state = false;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup()
{
lcd.begin(16, 2);
}
void loop() {
if (millis() - g_COUNT_BLINK_CURS >= 400) {
g_COUNT_BLINK_CURS = millis();
state = ! state;
lcd.setCursor(0,0);
lcd.write(state? ' ':'_');
}
//<-- здесь ещё можно задержку поставить, чтобы не очень часто крутить цикл.
//через тот-же delay
}
Проект/пример на тинкере, завтра закрою:
https://www.tinkercad.com/things/eeTexD57bx0
Я вот наивно видно думал, что case должен быть уникален, а не повторяться case 0: да case 0: в
case 0: lcd.setCursor (set_column, set_row); lcd.write(cursor); break;
case 1: lcd.setCursor (set_column, set_row); lcd.print(" "); break;
case 0: // от сель же должно дать ошибку?
Про моргание не знаю... где-то пишут в библиотеках:
blink(); – Включение мигающего курсора (с частотой около 1 Гц).
noBlink(); – Выключение мигающего курсора.
"76 раз это заметно нагружает мк ненужными действиями" тут надо прерываниями видно как-то, уже не упомню, лет 5 видно что-то помудрил да закинул подальше эту плату. А так программы можно найти, эмулятор был даже онлайн и даже графически это рисовал... даже без электронной платы можно собрать.
case 0: lcd.setCursor (set_column, set_row); lcd.write(cursor); break;
case 1: lcd.setCursor (set_column, set_row); lcd.print(" "); break;
case 0: // от сель же должно дать ошибку?
Про моргание не знаю... где-то пишут в библиотеках:
blink(); – Включение мигающего курсора (с частотой около 1 Гц).
noBlink(); – Выключение мигающего курсора.
"76 раз это заметно нагружает мк ненужными действиями" тут надо прерываниями видно как-то, уже не упомню, лет 5 видно что-то помудрил да закинул подальше эту плату. А так программы можно найти, эмулятор был даже онлайн и даже графически это рисовал... даже без электронной платы можно собрать.
Наран Манджиев
я же написал во дополнении что, ошибка... case 3: g_BLINK_CURS = 0; фишка в том что я сам могу создавать любой символ через lcd.createChar() и передавать его в функцию BlinkCursor()
Сергей Парфинович
Нам код не полный выводит: case 3 нет.
Сергей Парфинович
так значит ошибка была в том, что g_BLINK_CURS принимал значение, для которого не было кейса?
Давай помогу. Если у тебя такая острая потребность в программировании контроллеров. Возьми планку выше, программируй stm32. Мне кажется, тебе знаний хватит
Наран Манджиев
Здравствуйте. Спасибо за ответ. Пока пишу на ардуино в platformio vs code. Программировать stm32 на ардуино - этож бред? А для работы с++ пока знаний маловать.
Ну и нахрена. Шёл бы уроки с таким рвением делал. Ту же физику
Похожие вопросы
- Подскажите как написать код для ардуино
- Помогите с кодом на ардуино
- Программирование скетча ардуино
- Подскажите почему не работает элементарнейший код на ардуино
- Помогите с кодом C++
- Помогите понять формулу из книги Д. Кнута
- Помогите решить лабораторную c++
- Помогите с кодом с++
- Помогите новичку с программированием и матрицами C++
- Помогите с заданием по программированию язык C(не С++)