Блок для дисплея на чипе HD44780

Создаем свой блок. Вопросы, помощь знатоков.
Ответить
notfun
Рядовой
Сообщения: 6
Зарегистрирован: 28 июл 2020, 21:38
Имя: Nik

Блок для дисплея на чипе HD44780

Сообщение notfun »

Добрый день, форумчане!
Очень часто в своих проектах приходиться выводить информацию на дисплеи, он есть в стандартных блоках. Для изменения адреса, строки и столбца нужно входить в сам блок и проводить редактирование в нем. Очень хочется делать это с помощью переменных и вносить изменение в ходе проекта с помощью входов на это блок, то есть в проекте 1 блок для дисплея и в зависимости от требований и блока выбора sel я мог бы перемещаться по строкам и столбцам. Такой блок я написал, но есть проблема при обращении к нему он не затирает старые символы, что были записаны ранее. Может кто помочь "допилить" или указать на ошибку?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25 янв 2018, 22:23
Откуда: Bukovyna
Имя: Василий

Блок для дисплея на чипе HD44780

Сообщение Labu559 »

notfun писал(а): 28 июл 2020, 21:54 есть проблема при обращении к нему он не затирает старые символы
Если только проблема в очистке, то

Код: Выделить всё

if (En) {
			lcd.clear(); 				// Очистка дисплея 
			--Stroka;
			--Stolbec;
			lcd.setCursor(Stolbec, Stroka);            	// Установка курсора в начало первой строки
			lcd.print(D);      				// Набор текста на первой строке
 			} 
notfun
Рядовой
Сообщения: 6
Зарегистрирован: 28 июл 2020, 21:38
Имя: Nik

Блок для дисплея на чипе HD44780

Сообщение notfun »

я так пробовал, не работает, так как при 1 на входе En - в каждом цикле программы будет происходить очистка дисплея. По логике, нужно очистить при каждом новом обращении. Возможно добавить вход "Clr" и перед ним детектор изменения числа
notfun
Рядовой
Сообщения: 6
Зарегистрирован: 28 июл 2020, 21:38
Имя: Nik

Блок для дисплея на чипе HD44780

Сообщение notfun »

Вроде получилось, спасибо. добавил вход Clr, и условие при 1 на вход очистит дисплей, буду использовать в связке с rtrig и входом En
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25 янв 2018, 22:23
Откуда: Bukovyna
Имя: Василий

Блок для дисплея на чипе HD44780

Сообщение Labu559 »

notfun писал(а): 28 июл 2020, 23:12 так как при 1 на входе En - в каждом цикле программы будет происходить очистка дисплея
А для чего, тогда по Вашему вход Еn, что-бы блок бомбил в каждом цикле при статичных данных? Ставьте детектор изменения данных на вход Еn- это и есть его основное назначение. Очистка дисплея необходима если предыдущие данные длиннее текущих, её менее ресурсозатратно сделать всякий раз при смене данных, чем анализировать эти данные.
notfun
Рядовой
Сообщения: 6
Зарегистрирован: 28 июл 2020, 21:38
Имя: Nik

Блок для дисплея на чипе HD44780

Сообщение notfun »

av писал(а): 28 июл 2020, 23:23 [ref]notfun[/ref], а почему вы не используете хоть на каждый символ строк по блоку ? Понимаю что блоков будет куча и не красиво, но новый добавленный блок не займет слишком много памяти (допустим выводите слово из пяти символов одним блоком или пять символов пятью блоками разница будет небольшой). Единственная проблема в управлении этими блоками когда на какой блок нужно подать сигнал на вывод на дисплей или отключить вывод на дисплей.
Например я хочу вводить номер телефона в епром используя дисплей и енкодер. Получается на каждый символ мне придется ставить свой дисплей с фиксированной строкой и столбцом. А могу использовать счетчик для перемещения по строке, значение с счетчика прицепить к входу блока дисплея "stolbec" и крутя энкодер двигаться по номеру для редактирования нужного числа

Отправлено спустя 4 минуты 22 секунды:
Labu559 писал(а): 28 июл 2020, 23:28
notfun писал(а): 28 июл 2020, 23:12 так как при 1 на входе En - в каждом цикле программы будет происходить очистка дисплея
А для чего, тогда по Вашему вход Еn, что-бы блок бомбил в каждом цикле при статичных данных? Ставьте детектор изменения данных на вход Еn- это и есть его основное назначение. Очистка дисплея необходима если предыдущие данные длиннее текущих, её менее ресурсозатратно сделать всякий раз при смене данных, чем анализировать эти данные.
Я пробовал добавить как Вы написали, наблюдал мерцание дисплея, для себя сделал вывод, что очистка в каждом цикле
ecoins
Полковник
Сообщения: 4009
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 153 раза

Блок для дисплея на чипе HD44780

Сообщение ecoins »

У стандартного блока есть совокупность достоинств, но есть и недостатки:
1. Он "тормозит" работу основной программы. Порой существенно.
2. Он работает со строковыми переменными - это и память, и время, и сложность формирования поля при изменении параметров.
3.
notfun писал(а): 28 июл 2020, 21:54 Для изменения адреса, строки и столбца нужно входить в сам блок и проводить редактирование в нем. Очень хочется делать это с помощью переменных и вносить изменение в ходе проекта с помощью входов на это блок, то есть в проекте 1 блок для дисплея и в зависимости от требований и блока выбора sel я мог бы перемещаться по строкам и столбцам. Такой блок я написал, но есть проблема при обращении к нему он не затирает старые символы, что были записаны ранее. Может кто помочь "допилить" или указать на ошибку?
-----------------------
В основном эти проблемы решены блоками и библиотекой ecoins. Поддерживает русификацию для дисплеев с прошитой кириллицей.
Но там иные походы работы по сравнению со стандартным блоком.
notfun
Рядовой
Сообщения: 6
Зарегистрирован: 28 июл 2020, 21:38
Имя: Nik

Блок для дисплея на чипе HD44780

Сообщение notfun »

ecoins писал(а): 28 июл 2020, 23:42 В основном эти проблемы решены блоками и библиотекой ecoins. Поддерживает русификацию для дисплеев с прошитой кириллицей.
Но там иные походы работы по сравнению со стандартным блоком.
Спасибо, посмотрю в этом направлении
av писал(а): 28 июл 2020, 23:42 Сделайте в коде по условию "if" сравнение старого значения на входе и нового, а так же сравнение старых координат с новыми и если они не равны очищайте командой очистки и выводите новое значение или старое значение но по новым координатам.
Буду экспериментировать, спасибо за совет. Но в случае с номером телефона затрется все, кроме текущей выводимой позиции. Пока использую вход En с rtrig для первоначальной очистки.
notfun
Рядовой
Сообщения: 6
Зарегистрирован: 28 июл 2020, 21:38
Имя: Nik

Блок для дисплея на чипе HD44780

Сообщение notfun »

av писал(а): 29 июл 2020, 00:03 Если да, тогда следующий вопрос как вы раскладываете строку для последующего ее изменения ?
Прямо сейчас думаю над этим вопросом, в мыслях после достижения определенной ячейки будет сообщение о сохранении номера, если подтверждаю, то собранная из строки UlongInt запишу в епром, если нет счетчик возвращается в 1 ячейку с номером
Ответить

Вернуться в «Разработка пользовательских блоков»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость