Не работает подсветка lcd 1602

Arduino.ru

Дисплей LCD 1602 не показывает «Hello World»

Подскажите пожалуйста:
Почему LCD 1602 не показывает буквы.
Только линия прямоугольников.

Подключаю к Arduini UNO
Версия Arduinoid 1.8.7

Версия библиотекиLiquidCristall 1.0.7 пробовал на 1.0.4

Соединение как в примере:
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

Соединения проверил 100 раз.

Контраст пробовал регулировать?

Это же не I2C подключение, на самом дисплее крутилок нет.

Да и у него квадраты остаются, что говорит о том, что ни единой посылки данных на дисплей не пришло.

Соединения проверил 100 раз.

Это вы небось проверяли те ли контакты соединяете. А вот как соединяете.

Ставлю на хреновый контакт этих тоненьких тыкалок в макетке! В правом нижнем углу рыжий с чёрным аж вылезают.

Это же не I2C подключение, на самом дисплее крутилок нет.

На дисплее нет, а на макетке у него есть

5 нога на земле сидит?
Данные слева-направо справа-налево не перепутаны?
https://voltiq.ru/lcd-1602-and-arduino/

Такое ощущение, что где то плохой контакт.
Контакты прозвонил тестером. Норма.
Один раз, ковыряясь в проводах, на экране высветилось две строки:
в первой пару непонятных символов,
во второй число типа 68,234683143846843 и число жило,

Да, аж сам стал понимать , что где то точно плохой контакт.
Прозваниваю нормально, а при работе, на высокой частоте теряет контакт.

Источник

Arduino.ru

Управление подсветкой дисплея 1602 I2C

Добрый день. Прошу помощи, пнуть в нужном направлении. Есть связка ардуино нано, LCD 1602 на шине I2C, DHT22, часы реального времени на базе DS3231 (тоже I2C). Подсветка включается посредством команды lcd.backlight(); Отключить ее можно командой lcd.noBacklight(); Основную задумку по коду почти реализовал кроме листинга выводимой на дисплей информации (код прилагаю), основная проблема с реализацией задумки вкл. и выкл. подсветки кнопкой. Идея такая, есть кнопка подключенная к пину D2 при ее нажатии подсветка должна отключится и при повторном нажатии снова включится. Планировалась реализация без коственно програмно без использования транзистора. Я перечитал много тем, примеров, но так и не нашел как реализовать это. Если не сложно подскажите пожалуйста. Буду очень благодарен.

А в чем проблема? Команды lcd.noBacklight(); / lcd.backlight(); работают?

Естественно работают. Я писал выше что не нашел информации как реализовать включение и выключение подсветки кнопкой не прибегая к отрезанию подсветки и управлению ею через транзистор.

» Идея такая, есть кнопка подключенная к пину D2 при ее нажатии подсветка должна отключится и при повторном нажатии снова включится. «

Не понял. Если lcd.noBacklight() работает. То пошлите эту команду по нажатию кнопки. А по второму нажатию пошлите lcd.backlight() .

Я пробовал, но видать где то я туплю. Не до конца понимаю как подставить эту команду. За основу взял этот кусок кода. Но не могу понять как правильно подсунуть команду, отладчик все время ругается на приставку lcd.

Я писал его для отработки флагов на кнопке, но как всунуть ему команду не могу понять((

ПС. Если вдруг что я не студент и курсак не пишу, я еще в 2015 закончил институт)) Я просто изучаю ардуинки.

Ну в коде от сообщения №1 на lcd же не ругается. Посмотрите там на строку 8 и помедетируйте.

Попробую впарить ТСу свою кнопку)) Пусть разбирается.

Я писал выше что не нашел информации как реализовать включение и выключение подсветки кнопкой не прибегая к отрезанию подсветки и управлению ею через транзистор.

без транзистора и даже без МК

В перерывах от выходных забот немного занимался этой задачей в итоге основной код приобрел такой вид. Теперь подсветка включается и выключается тактовой кнопкой.

Единственный момент. Т.к. задействовал прерывание attachInterrupt(); вылез жесткий дребезг контактов кнопки, пытался избавится путем задержки но что то не выходит. Возможно где то не так делаю. Посмотрите, будьте любезны.

задействовать для кнопки целое прерывание не очень хорошая идея

Подскажите пожалуйста как надо. И почему идея плоха? Хочется понять. Буду очень признателен.

задействовать для кнопки целое прерывание не очень хорошая идея

Внешние прерывания attachInterrupt служат для отлавливания и обработки коротких импульсов, поэтому с кнопками, которые дают дребезг и относительно длительный импульс, их не используют.

Ну не хочешь самый простой вариант, тогда пробуй так

Поставьте кнопку с фиксацией или тумблер, зачем извращаться-то в данном вопросе?

Читайте так же:  Замена ламп подсветки кнопок ваз 2110

Поставьте кнопку с фиксацией или тумблер, зачем извращаться-то в данном вопросе?

Замена возможности программного управления (в данном случае: вкл-выкл) на аппаратное, конечно упрощает решение, но не прибавляет мыслей для развития проекта. С помощью той же (одной) кнопки довольно просто реализовать не только включение-выключение подсветки, но и изменение яркости подсветки с помощью ШИМ. Или сделать то же самое дистанционно на IR. Или сделать автоматическое выключение подсветки через заданное время, чтобы лишний раз не давить на кнопку.

Можно даже этой кнопкой в космос запускать ракету.

Но коли человек мучается с прерыванием, то пусть уж для начала опрашивает нормально замкнутую или разомкнутую кнопку в лупе. Научится — перейдет к прерыванию, если захочет.

Спасибо. Вот именно исходя из этих соображений (пробовать руками и научится, понять) я вникаю в этот момент. Тумблер беспорно простое решение, но это шаг назад в развитии.

Ну не хочешь самый простой вариант, тогда пробуй так

Спасибо. Вот оно, как говорится рядом было. Я ковырял вот этот кусок кода. Только у меня подсвет включался по нажатию и отключался когда я отпускал кнопку.

Добрый день! Я начинающий программист-любитель.Ни одного скетча еще не написал. Но встретил в сети любопытную систему программирования FLProg называется. Программирование с помощью соединения графических изображений элементов. Таких систем видимо существует несколько, но я попал на эту. Захотелось сделать на базе Ардуино нано схему управления насосом пневомобака установленного в колодце, дабы заменить механические реле давления аналоговым датчиком давления. И, о чудо, все получилось с нескольких попыток.

Попробовал порешать Вашу проблему, получился вот такой скетч:

Во, во, и руки с мылом помой.))))

Виктор50 — для обсуждения программ, написанных на ФЛПРОГе и ей подобных системах существуют специальные форумы. На нашем форуме не стоит даже упоминать, что вы этой системой пользуетесь — с вами после этого и пары слов никто не захочет сказать.

Чтобы вы не думали, что это просто ретроградство — могу сказать что даже поверхностный взгляд на ваш код сразу вылавливает кучу косяков. Вот некоторые

строка 31 — неверная работа со временем
строка 42 — бредовое условие
строки 43 и 47 — неаккуратное отношение к памяти — повтороное использование одной и тоже строки в формате String

Система FLProg генерит монструозный, абсолютно нечитаемый код, который содержит много корявых конструкций и не слишком эффективно работает. Зачем пользоваться этим костылем, когда вручную можно написать короче и красивее? 🙂

Для многих здешних обиталей программирование — это творчество, это игра, это похоже на флирт. А вы нам предлагаете флиртовать с надувной куклой из секс-шопа? 🙂

Источник

Не работает подсветка lcd 1602

SarmatK

Я только начинаю изучение (да и на форуме первый день) и встретился с непонятным моментом — на LCD1602 выводятся черные квадраты вместо символов. На странице урока сказано:

  • Если дисплей показывает чёрные прямоугольники или пустой экран – крутим контраст
  • Если кроме чёрных прямоугольников и пустого экрана ничего не видно – меняем адрес в программе.

Контраст ничего не дает — первая строка из черных квадратов, а с адресом все должно быть нормально, так как в функции loop() я мигаю подсветкой дисплея и это работает, а значит адрес верный. Тогда в чем дело?
Код:

Смена адреса на 0x3f, как и д.б., приводит к тому, что дисплей перестает мигать подсветкой, так как команд не получает.

Ардуинка питается от USB, дисплей — от ардуинки (5v), может ему такого напряжения мало?

++:
Подавал питание от 5 до 15 вольт (ЛБП) — ничего не изменилось, во всем диапазоне контрастностей дисплей выводит черные квадраты или пустоту.

ТехнарьКто

Скетч у Вас рабочий. Напряжения в 5V должно быть достаточно. Встречал один раз, что при питании через стабилизатор ардуины как в Вашем случае, питания дисплею не хватало. Нехватка напряжения питания была в том, что окисленные контакты проводов и макетной платы приводили к большому падению напряжения. Подсветка работала, а вместо информации были черные квадраты. Изменение напряжения питания на Vin до стабилизатора напряжения на ситуацию не влияет. Просто подал 5V на дисплей (массы объединить обязательно) и все заработало.

SarmatK

Спасибо, попробую питать их отдельно. А макетка действительно так себе — очень слабенько держатся в ней проводки из набора.

Запараллелил питание — ардуинка и дисплей питаются от БП из набора, напряжение на дисплее = 5.28V. но на дисплее по-прежнему либо пусто, либо черные знакоместа в первой строке.

++: Закомментировал строку «lcd.init();» и получил тот же самый моргающий экран с квадратами — то есть, ошибка может заключаться в программе, а не в схеме. Как узнать, какую именно библиотеку использует IDE? Может какой-то конфликт возникает. Функции не из той либы, например.

Читайте так же:  Mip550d cx4 уменьшить ток подсветки

Старик Похабыч

bort707

SarmatK

Я не на скетч грешу, а на подключение библиотеки. После включения подробного вывода, я увидел предупреждения о задвоившихся определениях членов класса «LiquidCrystal_I2C» — вот тут, наверное, собака и порылась.

Спасибо, поставил галочку и увидел кучу варнингов. Буду разбираться.

Вот фото во время работы и дисплея с двух сторон.

ТехнарьКто

Скачать портабл IDE на котором я компилировал (не требует установки), разархивировать и затем скомпилировать и загрузить скетч на этом IDE. Исключаем аппаратные проблемы.

SarmatK

IamNikolay

SarmatK

IamNikolay

Геннадий П

ТехнарьКто

Вы почему-то считаете, что мы тут экстрасенсы? Понял, что уровень ваш много ниже начального. В общем идите Вы в сад. В смысле детский, для ардуинщиков. Сначала прошиваете стандартный блинк «Blink» из примеров. Если светодиод мигает. Это подтвердит, что Вы смогли правильно настроить порт и научились прошивать простейшие скетчи. Затем прошиваете «Здравствуй мир» в примерах это «Hello World». Вот когда это у Вас получиться, тогда и поговорим.

IamNikolay

Старик Похабыч

@SarmatK,
Ниже 3 фото LCD , тоже, только графическое.
1) фото сделано при максимально выкрученном в одну сторону потенциометре.
2) Тоже положение, только под углом.
3) Нормально настроенный
4) не сделал, это выкручено в другую сторону, экран совсем пустой.

Как вариант попробовать поработать без модуля i2c , подключив по параллельному интерфейсу.

ТехнарьКто

Вижу, что мысль о важности первоначальных проверок, просто пролетела у всех мимо ушей.

Бывают для аппаратной части процессоров
1) x86 операционные системы 32bit
2) x86 операционные системы 64bit
3) ARM операционные системы 32bit
4) ARM операционные системы 64bit.

Для x86 это всем привычные
1) настольные компьютеры
2) ноутбуки
Для процессоров ARM
3) смартфоны (телефоны)
4) планшеты
5) ноутбуки
6) всякие Raspberry.

Для телефонов соответственно IDE могут быть разные, например глюкавое ArduinoDroid.

IDE для Linux теоретически может быть любое для C, С++ но скетчи под это дело надо переделывать в нормальный код, это уже не ArduinoIDE для новичков.

Eclipse
Bluefish
NetBeans
Komodo IDE
Anjuta
MonoDevelop
CodeLite
Kdevelop
и еще много всякого. А вот что умудрился использовать вопрошающий, загадка.

Может быть использовано и ArduinoIDE но работать будет не на всех Linux.

Для ArduinoIDE разных версий, совместимость скетчей отсутствует, почему так происходит придумайте сами.
Например на совершенно рабочий скетч ArduinoIDE стала выдавать ошибку компиляции «‘prog_char’ does not name a type», оказывается просто изменили ‘prog_char’ и теперь надо просто ‘char’. А формально оба скетча рабочие, просто прошиваться будут только на разных версиях ArduinoIDE. И это относиться не просто к скетчам, а и к библиотекам. Взяли скрестили новую версию библиотеки со старым ArduinoIDE или наоборот старую библиотеку с новой версией ArduinoIDE и работать скетч уже не будет. Поэтому. Установили в какой-то операционной системе какую то IDE. Написали по какому то примеру какой то скетч, а не работает. То ли с железом проблема. То ли программы сорятся. То ли ошибок в скетче понаделали. Если скетч старый и рабочий, а у Вас стоит ArduinoIDE с новыми правилами написания скетчей, все равно формально скетч рабочий — просто факт.
И какая ситуация конкретно у спрашивающего, форуму не ведомо. Для начинающих. Установили в чем-то какой-то IDE. Запускаете из примеров Blink. Меняете частоту вспышек. Убеждаетесь, что эти изменения вызваны Вашими действиями. Это Важный шаг. Не надо этот шаг пропускать, типа и так все понятно и просто. Если лампочки на ардуинке мигают то это говорит о том, что какой то процесс идет. Но не говорит о том, что все правильно сделано. При этом может и не работать. Шаг следующий. Устанавливаете или используете установленную библиотеку. Запускаете примеры из этой библиотеки. Разбираетесь почему не работает. И только после того, как убедитесь, что Ваше устройство (в данном случае дисплей) работает на примерах из библиотеки, начинаете с этим делать что то свое. И не раньше. А вопросы не работает стандартное, совсем другая тема.
Если хотите адекватный ответ, пишите операционную систему полностью. Версию IDE полностью. Версию использованной библиотеки полностью. Работала ли первоначальная проверка вспышкой и стандартные примеры на используемой библиотеке.

PS Когда захотел помочь. Получилось как обычно. Думаешь одно, а все совсем иначе. А вопрошающий считает, что вокруг одни экстрасенсы и всю дополнительную информацию про него обязаны знать.

Источник

Оцените статью
Охраны в доме нет
Adblock
detector