LCD 20x4 строки не подряд

Тема в разделе "Arduino & Shields", создана пользователем spamaway, 22 фев 2019.

  1. spamaway

    spamaway Нерд

    Приветсвую! Столкнулся с интересным делом. Хотел вывести на сабжевый экран длинную строку одним разом, типа такого:
    lcd.print("11112222223333333344444445555556666667777777778888888899999990000000");
    В результате, строка выводится не сверзу вниз, а в таком порядке строк на экране: 1,3,2,4. Библиотека LiquidCrystal_I2C. При этом, адресация строк setСursor - правильная. Не то, чтобы принципиально надо, просто интересно, особенность моего экрана это или баг в библиотеке.

    [​IMG]
     
  2. Airbus

    Airbus Радиохулиган Модератор

    Четам в скетче?
     
  3. Vovka

    Vovka Гик

    Особенность дисплеев этого типа на HD44780 или ему подобном.
    Инакомыслящим советую изучить даташит на странице 5 внизу
     
    vvr, parovoZZ, Airbus и ещё 1-му нравится это.
  4. Airbus

    Airbus Радиохулиган Модератор

    Одним махом не получиться.Надо указывать места кого и куда в коде.
     
    ostrov нравится это.
  5. spamaway

    spamaway Нерд

    Ну теперь всё ясно. Без бубна не исправить, а усложнять код ради этого нет смысла. Что же эти неруси по порядку адресацию не сделали...
     
  6. parovoZZ

    parovoZZ Гуру

    да вот тебя Hitachi спросить забыл.
     
    vvr нравится это.
  7. Airbus

    Airbus Радиохулиган Модератор

    Никакого Бубна.Все по фен шую.В вики есть пример с кодом для этого дисплея.Это Вы пытаетесь с Бубном наипать дисплей.
     
  8. spamaway

    spamaway Нерд

    Если они читают через строчку снизу вверх, это их проблемы, пусть адресацию хоть по диагонали делают. А мы, русские, читаем сверху вниз, поэтому логично и текст так выводить.
    Я ничего не пытаюсь. Я использую библиотеку, которая якобы под этот дисплей была написана людьи, которые куда лучше разбираются в лсд дисплеях, чем я :) Ну если не учли особенности адресации в функции print, я как-нибудь переживу, а переписывать работающий трехнедельный код из-за причуд адресации не буду, благо, есть другие способы вывести текст в правильном порядке. Просто было странно, что библиотека уже не молодая и используетс многими людьми в примерах, а никого такой очевидный косяк не беспокоит, вот и задал вопрос, чтобы узнать, где именно проблема - только в моем экране или в самой библиотеке.
     
  9. Airbus

    Airbus Радиохулиган Модератор

    Библиотека не при чем.У Вас ошибка в коде.Я вчера взял код из ВИКИи тупо проверил. Все работает.Вы конечно же пример не смотрели?
     
  10. vvr

    vvr Инженерище

    вот сразу напрашивается вопросик патриоту - а какого хрена вы, русские, нифига не делаете, а пользуетесь разработанным в буржуинстве и собранном в Китае ?
     
    parovoZZ нравится это.
  11. Airbus

    Airbus Радиохулиган Модератор

    Да дисплей то может и наш МЭЛТовский.Но стандарт есть стандарт.Как и у нас.Мы должны в кабине друг с другом на английском разговаривать.Во многих случаях и лаконичнее и точнее.Тоже стандарт ничего не поделать.
     
  12. spamaway

    spamaway Нерд

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

    Воистину, ошибка кода. Когда пишешь print("12345678") и видишь на экране "12563478", вот уж воистину ошибка в коде, брат, аминь.... Я больше 20 лет программирую, уж знаю, как должна работать функция print, если она не через задницу реализована... не сомневаюсь, что если кодить без этой библиотеки LiquidCrystal_I2C, то вывести можно что угодно и как угодно.
     
  13. parovoZZ

    parovoZZ Гуру

    тот, кто 20 лет кодит, за 20 минут сможет организовать свою функцию print. Я всего полгода кодю, а библиотеками до сих пор не пользуюсь. Нет нужды. Всё своё.
     
    vvr нравится это.
  14. Airbus

    Airbus Радиохулиган Модератор

    Вы не правы.Посмотрите примеры из этой библиотеки там должно все быть.Я вообще в шоке как так можно такой массив тупо пихнуть по I2C.Сам бы до такого никогда не додумался всегда указываю место символа независимо русские или английские.Даже в двухстрочном где наверное и так сойдет.Пишите код красиво.Пишите код правильно.И будет Вам Щастье!ВИКИ не посмотрели так?
     
    Последнее редактирование: 23 фев 2019
    DetSimen нравится это.
  15. Airbus

    Airbus Радиохулиган Модератор

    Вы Гений.Ясен Пень
     
  16. vvr

    vvr Инженерище

    ну хочет товарищ впихнуть невпихуемое )))))
     
    Airbus нравится это.
  17. DetSimen

    DetSimen Guest

    а вот это прям щас стыдно было...
     
  18. spamaway

    spamaway Нерд

    Весь вопрос в целях, затратах сил и времени, которые человек готов на эти цели потратить. Если для Вас это хобби, Вы можете хоть месяц кодить свою функцию print на ассемблере, засылая данные напрямую в видеопамять экрана - сэкономите кучу памяти, добъетесь мега-скорости, и получите кайф от проделанной работы. Я в 90-е через это прошел, но тогда на 10-мегагерцовых процессорах с 640 кб памятью нужно было все экономить, потом появились языки высокого уровня и многие их оценили за простоту и скорость разработи программ для решения конкретных целей, и никого уже не волновало, что те же проги на паскале заметно тормозили и требовали памяти больше, чем сишные, ну а про асм я вообще молчу. Именно для тех, кому нужно выполнить задачу просто и быстро, и делают библиотеки, которые можно подключить, и через минуту наслаждаться результатом без лишнего кодинга. А по Вашей логике, если пожарную машину вызывают в деревню тушить пожар, водитель думает, чего я как дурак поеду по пустому ровному шоссе, это ж слишком просто - за 5 минут доеду. Вот по проселочным дорогам - куда интереснее будет добраться, ну и что, что на 2 часа дольше, и дом за это время сгорит, зато покажу всем свой профессионализм - в одном месте безерку завалил, чтобы проехать по узкой дороге, в другом месте лебедкой поработал, чтобы вытащить машину из глины - вот ведь настоящий профессионализм водителя пожарной машины! А кому он нужен, этот профессионализм, если тушить уже нечего - к моменту приезда машины от дома ничего не осталось, и услуги пожарных больше не требуются!!? Так же и в программировании, если человек решает пользоваться готовой библиотекой, обычно он понимает, что теряет в количестве оставшейся памяти и часто в скорости выполнения программы и надежности, но выигрывает во времени разработки всего проекта в целом. У каждого свои цели. Мне на данном этапе интересна скорость и простота разработки. Те, кто хотят кодить каждый бит самостоятельно, думается, не сидят на ардуино, а кодят голые микропроцессоры и получают профит во всем, кроме потерянного на разработку проекта времени... хотя и потери времени с приходом опыта можно минимизировать.
     
    Vovka нравится это.
  19. DetSimen

    DetSimen Guest

    Тебе говорят только про то, что для программирующего 20 лет, прочитать даташит на 44780, хотя бы по диагонали, никакого труда не составит. И нубских вопросов, простительных 15-ти летнему пацану, профессионал бы не задавал. Но, проще сказать, не разобравшись, что производитель идиот, и библиотека кривая, правда же? Для грамотных людей, в этой ситуации, идиотом выглядит понятно кто.
    Мы тут уже столько "спицалистов" с 20-ю языками насмотрелись...
     
    Airbus, parovoZZ и vvr нравится это.