Для тех, кто как я, в бронепоезде)))) Этому дисплейчику действительно 5В нужно, несмотря на то, что много где пишут, что хватает и 3.3... Весь вечер сидел думал. Смотрел разные библиотеки, лазал по форумам, смотрел подобные видео, менял адрес - все бестолку... Поэтому, если у вас подсветка есть, а текста нет - попробуйте подключить его на 5В. Еще пара советов, которые я открыл для себя и делюсь с вами: 1) Чтобы проверить, действительно ли вы ломитесь "по адресу" - попробуйте поотключать программно подсветку, как из либы в этом видео. Когда отключится - адрес найден. 2) Чтобы все-таки хоть что-то увидеть при 3.3в - выкрутите потенциометром яркость на максимум (на моей платке HW-061 нужно крутить ПО часовой стрелке), и смотрите на дисплей под углом снизу. Всем добра и успехов :3
Спасибо большое, очень помог, долго пытался решить проблему с выводом чисел и перезаписи памяти. Я даже использовал динамические массивы символов, но работало ужасно... А надо было то всего пробелы поставить!😂
Сделал проба на етот Ваш пример LCD16х02, установил счетчик counter работаеть вперед и назад + и - 200. Для очистки дисплея при переход на каждой следующий разряд сделал условие if (counter == 0 || counter == -10 || counter == -100 || counter == 10 || counter == 100) { lcd1602_Clean(); lcd1602_Clean_Text(); } Установил, что очистка некоректная. Несмотря на то что каждая очиска, всегда остоется одна нуля сзади. То ест, есть ли имеем переход при вычитании от 100 к 99, после очистки екран показаваеть неверно 990, вместо 99. В Ардуино библиотека LCD есть одна харошая функция print (), каторая универсалная и спасобна показывает как стринг, так и переменыя любова типа, включая float с вибран после запетая знак после мантиса. Я попробовал сделать такая функция к твое библиотека, но меня не получилас, я не так добрый в програмирование. Подумайте об этом, если хотите расширить возможности своей библиотеки универсальной функцией.
Здравствуйте! Пользуюсь вашей библиотекой для китайских lcd1602, не могу разобраться в некотрых вещах (все работает, просто не могу понять). Функция lcd1602_Send_init_Data , как физически передается 1 в стробирующий сигнал или 0. В даташите не могу найти информации про это, получается же что передается 00001000 или 11110111?
Привет, в начале видео подключаешь библиотеки, а можешь сделать краткий обзор по ним, какие есть в стандартной комплектации и для чего используются, искал информацию, но не нашел((( Заранее спасибо.
привет. stdbool - Для работы с булиевой логикой. stdio - Реализует основные возможности ввода и вывода в языке Си. string - Для работы с различными видами строк. math - Для вычисления основных математических функций. Список стандартных библиотек можете посмотреть здесь: ru.wikipedia.org/wiki/%D0%A1%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D0%B0%D1%8F_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0_%D0%A1%D0%B8
Спасибо большое за урок, только вопрос, всё работает как надо, но единственное - программа не хочет выводить текст на экран, с чем это может быть связано ?
Пардон, а как управлять контрастностью? Текст на дисплее проявляется еле еле, при крайнем положении крутилки контрастности на модуле I2C, при работе того же дисплея от ордуинки контрастность нормальная, при среднем положении крутилки контрастности. Библиотека вообще позволяет это регулировать? Пардон, все решилось запитыванием дисплея от 5 вольт.
ААААА.... Я уже голову сломал... кучу всего перерыл.... дисплей китай 1602, подключаю по I2C по адресу 0х27(проверил по порту), плата nucleof411re настраиваю через cubeMX (бросил I2C1 на PB8-9 c PB6-7 - удобней подключать, но пробовал и без переключения), подключаю ваши библиотеки, да и все делаю строго по видео. при подключении на lcd постоянно горит верхняя строчка. Жму RUN и тишина... 0 реакции. Подкинул analayzer24MHz8CH - на выводах штиль. Что не так? P.S. Совсем недавно переставлял систему и снова качал с stcom софт. Может что-то до установить нужно??? А и еще, сама nucleo работает - простенькая программа с кнопкой и светодиодом работает
@@Solderingironspb Спасибо. Однако у меня есть еще один вопрос: когда я инициализирую контроллер с помощью графического программатора Cube MX после написания кода в главной while(1) и генерирую код с помощью кнопки, он удаляет все, что я написал. Как это побороть? Если, например, я хочу добавить еще один ввод или вывод из Cuba MX и сгенерировать код, я удаляю все, что написал, и остается только код, созданный графическим программистом.
Извини меня, я открил проблема с очистки. Забъл сказат вперед, что сделал допалнительная функция, в каторая поставена функция spritf и там забыл поставит несколька пауза после знака %d. Сейчас все заработало и нет необходимости даже чистить экран. Вот и самая функция: void lcd1602_Print_data(int value) { sprintf(lcd1602_tx_buffer, "%d", value); for (int i = 0; i < strlen(lcd1602_tx_buffer); i++) { lcd1602_Print_symbol(lcd1602_tx_buffer[i]); } Поменял: sprintf(lcd1602_tx_buffer, "%d ", value);
Глупый код, хуже чем у первокурсника - почему бы форматирование не включить в команду принт? А движение влево - как установить в конце клнцов курсор в координаты 0,0? В каждой итерации устанавливается в 0,0, но печатается со сдвигом
Спасибо, после Ваших видео не остаётся белых пятен, приятно слушать, интересно, а главное - понятно!
Спасибо! Внятно, доступно, быстро, результативно! Отдельное спасибо автору библиотек! Гениально!
Отличная работа.Все заводится с первого раза.Уважение автору !!!
Для тех, кто как я, в бронепоезде)))) Этому дисплейчику действительно 5В нужно, несмотря на то, что много где пишут, что хватает и 3.3... Весь вечер сидел думал.
Смотрел разные библиотеки, лазал по форумам, смотрел подобные видео, менял адрес - все бестолку... Поэтому, если у вас подсветка есть, а текста нет - попробуйте подключить его на 5В.
Еще пара советов, которые я открыл для себя и делюсь с вами:
1) Чтобы проверить, действительно ли вы ломитесь "по адресу" - попробуйте поотключать программно подсветку, как из либы в этом видео. Когда отключится - адрес найден.
2) Чтобы все-таки хоть что-то увидеть при 3.3в - выкрутите потенциометром яркость на максимум (на моей платке HW-061 нужно крутить ПО часовой стрелке), и смотрите на дисплей под углом снизу.
Всем добра и успехов :3
Благодарю! Помогло, когда покрутил потенциометр
Очень, очень полезное видео. Благадарю вам!
Спасибо большое, очень помог, долго пытался решить проблему с выводом чисел и перезаписи памяти. Я даже использовал динамические массивы символов, но работало ужасно... А надо было то всего пробелы поставить!😂
Шикарно ! Спасибо ! Все работает ! Талант !
Спасибо, все получилось
спасибо, все работает. я так же пробовал в FreeRTOS . Почему то картинка на экране мерцала постоянно.
А Вы случайно постоянную очистку экрана не делали?
@@Solderingironspb пробовал и без FreeRTOS , все нормально. Может где-то эта функция стоит по умолчанию. Хз
Стоило бы рассказать что делает та или иная функция.
Не выходит выводить текст, подсветка дисплея работает, курсор (0,0). Дисплей 16х2 qapass с i2c модулем.
Здравствуйте, вы как то решили эту проблему?
pcf8574AT (pcf8574T) имеют адрес 0x3F, а pcf8574 и pcf8574A - 0x27 надо менять в библиотеке lcd1602_i2c_lib.c
Сделал проба на етот Ваш пример LCD16х02, установил счетчик counter работаеть вперед и назад + и - 200. Для очистки дисплея при переход на каждой следующий разряд сделал условие if (counter == 0 || counter == -10 || counter == -100 || counter == 10 || counter == 100) {
lcd1602_Clean();
lcd1602_Clean_Text();
}
Установил, что очистка некоректная. Несмотря на то что каждая очиска, всегда остоется одна нуля сзади. То ест, есть ли имеем переход при вычитании от 100 к 99, после очистки екран показаваеть неверно 990, вместо 99.
В Ардуино библиотека LCD есть одна харошая функция print (), каторая универсалная и спасобна показывает как стринг, так и переменыя любова типа, включая float с вибран после запетая знак после мантиса. Я попробовал сделать такая функция к твое библиотека, но меня не получилас, я не так добрый в програмирование. Подумайте об этом, если хотите расширить возможности своей библиотеки универсальной функцией.
спасибо большое!!!!!!!!!!!!!!!!!!!
Здравствуйте! Пользуюсь вашей библиотекой для китайских lcd1602, не могу разобраться в некотрых вещах (все работает, просто не могу понять). Функция lcd1602_Send_init_Data , как физически передается 1 в стробирующий сигнал или 0. В даташите не могу найти информации про это, получается же что передается 00001000 или 11110111?
Подскажите пожалуйста, как можно добавить функцию включение и выключение курсора (+ если есть возможность мигающий курсор). Спасибо
где найти библятеку для SPL?
Привет, в начале видео подключаешь библиотеки, а можешь сделать краткий обзор по ним, какие есть в стандартной комплектации и для чего используются, искал информацию, но не нашел(((
Заранее спасибо.
привет. stdbool - Для работы с булиевой логикой. stdio - Реализует основные возможности ввода и вывода в языке Си. string - Для работы с различными видами строк. math - Для вычисления основных математических функций.
Список стандартных библиотек можете посмотреть здесь: ru.wikipedia.org/wiki/%D0%A1%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D0%B0%D1%8F_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0_%D0%A1%D0%B8
Приветсвую. А есть ли библиотека u8g2 для стм? Приехала black pill с али. После ардуины конечно кажется сложновато.
Вы про большой LCD 128х64? Если да, то тоже в планах его рассмотреть. На счет сложности стм после ардуино - все фигня. Главное переключиться)
Спасибо!!!
Дайте ссылочку на предыдущий урок, в котором создавалась библиотека
Спасибо большое за урок, только вопрос, всё работает как надо, но единственное - программа не хочет выводить текст на экран, с чем это может быть связано ?
А курсор правильно выставляете?
@@Solderingironspb Вроде да, у меня стандартный дисплей 16 на 2, ставлю курсор на 0 и
0
Та же проблема, ума не приложу с чем может быть проблема. Дисплей загорается, но текста нет. Какую вы плату используете?
@@ДенисАлександров-м9ъ Здравствуйте. Если Вы нашли решение данной проблемы - напишите его сюда, пожалуйста :) Столкнулся с тем же самым.
Спасибо, хороший урок. С STM32f103С8T6 работает без проблем, а вот с STM32f103С6T6 не хочет. В чем может быть проблема, подскажите пожалуйста.
Разобрался. Cubide для этой микросхемы не генерирует GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
Почему в конце 15.4578 вы приписали f ?
@@MrEksol явное указание float
Пардон, а как управлять контрастностью? Текст на дисплее проявляется еле еле, при крайнем положении крутилки контрастности на модуле I2C, при работе того же дисплея от ордуинки контрастность нормальная, при среднем положении крутилки контрастности. Библиотека вообще позволяет это регулировать?
Пардон, все решилось запитыванием дисплея от 5 вольт.
Да. Питание дисплея от 5 вольт)
Как включить подсказки при введении названий функции?
Ctrl + пробел
Благодарю
ААААА.... Я уже голову сломал... кучу всего перерыл.... дисплей китай 1602, подключаю по I2C по адресу 0х27(проверил по порту), плата nucleof411re настраиваю через cubeMX (бросил I2C1 на PB8-9 c PB6-7 - удобней подключать, но пробовал и без переключения), подключаю ваши библиотеки, да и все делаю строго по видео. при подключении на lcd постоянно горит верхняя строчка. Жму RUN и тишина... 0 реакции. Подкинул analayzer24MHz8CH - на выводах штиль. Что не так?
P.S. Совсем недавно переставлял систему и снова качал с stcom софт. Может что-то до установить нужно???
А и еще, сама nucleo работает - простенькая программа с кнопкой и светодиодом работает
Напишите мне на почту или вконтакте. Попробую удаленно подключиться и помочь.
@@Solderingironspb Такая же проблема. В чем может быть причина?
@@maxdm2737 в данном случае, у человека была проблема в кривой nucleo.
Контролер питается от 3,3V, ето ясно, но с какое напрежение вы питаете LCD-дисплей, от 3,3V или от 5V?
Данный дисплей питается от 5в
@@Solderingironspb Спасибо. Однако у меня есть еще один вопрос: когда я инициализирую контроллер с помощью графического программатора Cube MX после написания кода в главной while(1) и генерирую код с помощью кнопки, он удаляет все, что я написал. Как это побороть? Если, например, я хочу добавить еще один ввод или вывод из Cuba MX и сгенерировать код, я удаляю все, что написал, и остается только код, созданный графическим программистом.
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
//Пишем код здесь.
}
@@Solderingironspb Огромное спасибо, все заработало как надо. Потерял очень много время за ето....Спасибо....
Извини меня, я открил проблема с очистки. Забъл сказат вперед, что сделал допалнительная функция, в каторая поставена функция spritf и там забыл поставит несколька пауза после знака %d. Сейчас все заработало и нет необходимости даже чистить экран. Вот и самая функция:
void lcd1602_Print_data(int value) {
sprintf(lcd1602_tx_buffer, "%d", value);
for (int i = 0; i < strlen(lcd1602_tx_buffer); i++) {
lcd1602_Print_symbol(lcd1602_tx_buffer[i]);
}
Поменял: sprintf(lcd1602_tx_buffer, "%d ", value);
Да, именно так. После числа ставите пробел и все. Он и будет подчищать данные)
*«Чем эти дисплеи ОТличаются (от чего-то)»*
*«Чем эти дисплеи РАЗличаются (между собой)»*
Отрадно, что ведущий адекватно воспринимает дружескую критику благодарного слушателя (и слышателя).
а что за клава ?
a4 tech kv-300h
void lcd1602_Backlight(bool state) {
if (state) {
backlight = true;
} else {
backlight = false;
}
}
Может так? :)
void lcd1602_Backlight(bool state) {
backlight = state;
}
👍🏻как угодно
как убрать - implicit declaration of function. Спасибо большое
Кривая реализация преобразования русского алфавита
попробуй использовать словари или массивы с соответствием, символ - код.
Вы можете доделать библиотеку и поделиться со всеми)
я не имею дисплея поддерживающего русский текст, из-за чего тестирование библиотеки является затруднительным.
Спасибо!!
Спасибо!!
Глупый код, хуже чем у первокурсника - почему бы форматирование не включить в команду принт? А движение влево - как установить в конце клнцов курсор в координаты 0,0? В каждой итерации устанавливается в 0,0, но печатается со сдвигом
Спасибо большое за твой труд друг!