Я начинающий ардуинщик и начал эксперименты с LCD. Сначала попробовал соединить LCD1602 c Arduino напрямую, все заработало нормально. Теперь, чтобы освободить порты на Arduino, решил подключить LCD через расширитель портов PCF8574AT. Собрал схемку, через сканер портов I2C определил порт расширителя, взял готовый скетч, чуть его подправил, запустил и ... не работает. Что я делаю не так?
Код:
#include <LiquidCrystal_I2C.h> // Подключаем библиотеку для работы с LCD дисплеем по шине I2C #define RS 2 #define ENABLE 3
LiquidCrystal_I2C lcd(0x20,16,2); // Объявляем объект библиотеки, указывая параметры дисплея (адрес I2C = 0x27, количество столбцов = 16, количество строк = 2) // Если надпись не появилась, замените адрес 0x27 на 0x3F void setup() { pinMode(RS, OUTPUT); // \ digitalWrite(RS, LOW); // \ // > Этот код добавил я pinMode(ENABLE, OUTPUT); // / digitalWrite(ENABLE, LOW); // /
lcd.init(); // Инициируем работу с LCD дисплеем lcd.backlight(); // Включаем подсветку LCD дисплея lcd.setCursor(0, 0); // Устанавливаем курсор в позицию (0 столбец, 0 строка) lcd.print("LCD"); // Выводим текст "LCD", начиная с установленной позиции курсора lcd.setCursor(0, 1); // Устанавливаем курсор в позицию (0 столбец, 1 строка) lcd.print("arduino-tex.ru"); // Выводим текст arduino-tex.ru, начиная с установленной позиции курсора } // // void loop(){} // Код внутри функции loop выполняется постоянно. Но так как мы выводим статичный текст, нам достаточно его вывести 1 раз при старте, без использования кода loop
Просто найдите другой скетч. Если и тот не заработает, продолжайте поиски, до тех пор, пока не получится. Серьезно, между прочим. Такой вариант решения проблем - самый распространенный среди ардуинщиков, просто потому, что они не разбираются во внутрянке. Так что, принимайте это как данность и шуршите поиском.
Ну и в качестве доказательства предыдущего. Вы зачем написали вон те строчки, которые пометили? Что этим хотели сказать?
Типовое подключение диспа через этот расширитель: подумайте, где в нем эти ваши RS и EN
Вот, например, не работал я на AVR с SD картами. Можно:
- купить микроконтроллер и обвязку для него; - купить разъём карты и обвязку для неё; - разработать плату, вытравить и спаять; - ошибиться и либо делать новую плату, либо резать дорожки и колхозить проводами.
При всём при этом затратить неприлично много времени.
А можно купить готовый SD модуль, подключить к Ардуино, понять как это работает хоть через стандартные библиотеки, хоть на низком уровне, и потом уже полученные знания использовать для разработки новых устройств. И всё это займёт несколько часов и, в любом случае, на порядок меньше первого варианта.
А дальше сам решает на каком уровне развития ему останавливаться - на уровне модулей и готовых скетчей или шагать дальше. Только сама платформа Ардуино в этом не виновата.
_________________ Платы для HLDI - установки лазерной засветки фоторезиста. ФоторезистыOrdyl Alpha 350 и AM 140. Жидкое олово для лужения плат (видео) - самое лучшее и только у меня. Паяльная маска XV501T-4 и KSM-S6189 (5 цветов). Заказ печатных плат - pcbsmac@gmail.com
Да никто тут не нападает на Ардуино! Наоборот - обеими руками "за", поддерживаю целиком и полностью. Ардуинщики являются поставщиками мемов и приколюх. Так что, всё тут норм, продолжайте. Хотя конечно непонятно, каким боком SD-карта относится к дисплею-двустрочнику и расширителю портов. Но раз вы считаете, что нужен скетч для SD-карты, то возражать не буду! Продолжайте, мастер.
К сожалению, вынужден констатировать, чтобы корона Вам настолько давит, что пережимает мозг, отчего Вы не в состоянии адекватно понимать, что Вам говорят. Так что это Вы продолжайте, жизнь сама Вам всё подскажет.
_________________ Платы для HLDI - установки лазерной засветки фоторезиста. ФоторезистыOrdyl Alpha 350 и AM 140. Жидкое олово для лужения плат (видео) - самое лучшее и только у меня. Паяльная маска XV501T-4 и KSM-S6189 (5 цветов). Заказ печатных плат - pcbsmac@gmail.com
Причем тут я? Вы же Мастер, а я то так, мимо проходил (я блин, эти ЖКД-двустрочники 20 лет назад на голом ассемблере, по 4-битному интерфейсу запускал, и без всяких адруин со скетчами) Вы можете сказать по существу темы, как запустить дисплей у топикстартера? С ваших слов получается, что нужен модуль SD-карты. Правильно?
LiquidCrystal_I2C lcd(0x20,16,2); Если надпись не появилась, замените адрес 0x27 на 0x3F
Отличительная черта ардуинщиков - невнимательность , неумение курить маны и неумение анализировать ошибки. Именно поэтому я и посоветовал - ПРОСТО МЕНЯЙТЕ СКЕТЧИ до тех пор, пока не заработает. Число скетчей - конечно, поэтому однажды оно заработает!
хахаха, smacorp обиделся и начал гадить. гыгыгы, приколюха. Я ж говорю - ардуинщики - поставщики мемов и ржак. Проблема топикстартера решается ИЛИМИНТАРНА, ваще беспраблем! И без всяких SD-карт. Просто нужна обычная внимательность. Или терпеливость в перебирании вариантов, там их не так уж и много.
Последний раз редактировалось Базилюк Сб окт 26, 2024 16:11:43, всего редактировалось 3 раз(а).
... а можно взять 14-ногий МК из самых недорогих и таки написать для него поддержку FAT16, основываясь на кодах 20-летней давности. На выходе будет своё, безглючное, в минимальных габаритах и не привязанное к "библиотекам, которые нужно перебирать, пока не заработает". /OFF
Limor Применение порта-расширителя подразумевает использование каскадно нескольких библиотек. Для интерфейса связи, для самого порта - расширителя и для индикатора. Бывает и единая библиотека, включающая в свой состав все дополнительные компоненты. Ищем через менеджер библиотек наиболее подходящее решение (обычно библиотеки идут с примерами). один из перво попавшихся примеров с раскладкой соединений выводов порт-расширителя и жки под используемый софт: https://www.mathertel.de/Arduino/Liquid ... F8574.aspx
Последний раз редактировалось BOB51 Сб окт 26, 2024 17:06:57, всего редактировалось 1 раз.
Да, там скорее всего пораздельно взят дисплей и модуль расширителя, и по мелкофотке очень похоже, что подключение именно 4-битное. Поэтому, классическая библиотека работать не будет. А значит, надо искать тот скетч, где реализовано 4-битное подключение через I2C-расширитель. Либо просто добавить 4 недостающих линии.
Для этого конечно же нужно хоть немного разбираться в вопросе. Но вполне дозволяется решать вопрос простым перебором вариантов. Я нисколько не отговариваю от этого, нет-нет, я совсем не против.
Цитата:
подразумевает использование каскадно нескольких библиотек.
Если по-умному, то HD44780 -> PCF8574 -> I2C. Но для непосвященных вполне допустимо без выпендрежа, одной-единственной библиотекой типа LiquidCrystal_I2C. Я тоже не возражаю, это нормальная практика в среде ардуинщиков.
...очень похоже, что подключение именно 4-битное. Поэтому, классическая библиотека работать не будет. А значит, надо искать тот скетч, где реализовано 4-битное подключение через I2C-расширитель. Либо просто добавить 4 недостающих линии.
Какая это классическая? Каждая библиотека имеет название. А что с одним PCF в 8-ми битном режиме получится подключиться?) Отож.)
Я не специалист в ардуино-библах, я об этом сразу говорил, они мне до фени. Зато я знаю, что такое адрес на шине I2C и чем отличается 4-битное от 8-битного подключения двустрочника. А PCF8574A - это всего лишь преобразователь интерфейса, и без разницы, как и что к нему подключено. Важно лишь чтобы подключение соответствовало выбранному ардуино-скетчу. Поэтому я еще в первом мессаге дал наводящие картинки и ссылки на маны ниже. Я, к сожалению, не знаю, зачем здесь предложили модуль SD-карты, но это уж пусть разбираются те, кто поумнее, зачем оный тут нужен. хахаха, у smacorp-а подгорел пукан и он начал ссать в тапки ))) блин, вот этот поцык не разбирается даже в примитивном дисплее-двустрочнике на I2C-расширителе. О чем тут еще можно говорить то? Ардуино головного мозга у smacorp-а. Турбодятел какой-то обиженный. Долбоящер, млин слыш ты, турбоящер smacorp, ты иди ка нахер а. завали свое хлебало, дегенерат. будет тут еще всякая мудила мне чето предявлять. уебок smacorp ссаный, уройся гандон
Я не специалист в ардуино-библах, я об этом сразу говорил, они мне до фени. Зато я знаю, что такое адрес на шине I2C и чем отличается 4-битное от 8-битного подключения двустрочника. А PCF8574A - это всего лишь преобразователь интерфейса, и без разницы, как и что к нему подключено. Важно лишь чтобы подключение соответствовало выбранному ардуино-скетчу.
Всё верно, только это и есть "классическая" библиотека для I2C - LCD преобразователя. И с одним PCF8574A тут именно 4-х битное подключение иначе не получится. Или это уже будет не только I2C, что теряет смысл.
Вообще, я даже в бытность PIC16 не использовал расширитель портов для двустрочника. Поскольку подключается он 6-ю ножками, и экономия всего в 4 ножки не шибко то помогает делу. Зато 5 из 6 выводов можно без проблем мультиплексировать с другими функциями. В частности, в то время за них вешалась матричная клавиатура. Сейчас, когда микроконтроллеры стали многоножными, необходимость экономить каждую ножку очень сильно уменьшилась.
Совершенно верно. Но для любителей Ардуино - чем меньше проводов, тем лучше.) Но даже и в этом случае можно запутаться.) И даже штатные примеры, которые идут с библиотекой, не помогают.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения