Подключение двух дисплеев по I2C к Ардуино про мини ( Китай)

Тема в разделе "Arduino & Shields", создана пользователем Ursus, 21 янв 2018.

  1. Ursus

    Ursus Нуб

    Ну у меня есть скачанный проект на LCD 8x2, но он на атмеге 8 и дисплей там один, и парметры выводятся там пара всего, что меня не устраивает. 0,96" дисплея, я взял для пробы,т.к. не знал какие они на самом деле, они маленькие для моих целей, буду брать побольше. А вообще LCD громоздкие по сравнению с теми же OLED. Вот. а выводить на дисплеи я планирую: температуру и давление масла, температуру тосола из 2-х точек, напряжение в сети автомобиля, уровень топлива в баке, расстояние которое я могу проехать на этом остатке топлива, и если получится то и обороты двигателя.
     
  2. arssev1

    arssev1 Гик

    Не увидел веских причин отказаться от ЖК 20x4.
     
  3. Ursus

    Ursus Нуб

    Мне он не понравился, по крайней мере из-за габаритов по толщине, и второе, цифры маленькие, я уже плоховато вижу вблизи, а на TFT или OLED дисплеях можно всё-таки шрифт побольше сделать. В поездках на дальние расстояния это для меня особенно необходимо,
     
  4. b707

    b707 Гуру

    arssev1
    Ursus
    ОЛЕД или ЖК - пустой спор. В программном смысле вывод что на Олед, что на ЖК не вызывает никаких проблем, главное понимать, что делаешь.

    Что касается идеи - "выводить на дисплеи я температуру и давление масла, температуру тосола из 2-х точек, напряжение в сети автомобиля, уровень топлива в баке, расстояние которое я могу проехать на этом остатке топлива, и если получится то и обороты двигателя." - советую подумать, почему никто из производителей авто этого не делает.
    За себя - как водитель с почти 30-летним стажем - скажу что из всего этого списка мне нужен только остаток бензина в баке (причем без всяких расчетов запаса хода) и, может быть, температура двигателя.
    Если вам удастся осуществить эту идею - уверен - вы поиграетесь неделю и перестанете вовсе обращать внимание на эти цифры.
    В совеременных машинах из всего этого ставят только датчик топлива. Давление масла и температура - в виде лампочек, зажигающихся только при проблеме. И это правильно.
    "Не мешай машине работать".
     
    Securbond нравится это.
  5. Securbond

    Securbond Гуру

    Тогда Вам стоит обратить внимание на дисплеи “Nextion” Всё что вы хотите. И экран почти любого размера и не «толстый» и тач поддерживает для управления и не загружает основной контроллер, т.к. имеет свой. А дальше всё зависит от кривизны Ваших рук.
     
  6. Securbond

    Securbond Гуру

    И вообще, что то мне подсказывает, что у Вас не хватит знаний, что бы воплотить в жизнь все Ваши хотелки. Не говоря уже о том, что в Вашем случае ещё придётся изучать протокол CAN шины ...
     
  7. Ursus

    Ursus Нуб

    Так вот, это конечно правильно, в современных авто всё можно на датчиках, не спорю, но в современных авто почти во всех стоит бортовой компьютер, который все эти параметры отслеживает, своевременно предупреждая водителя о несправности. У меня машина старая, к тому дизельная, из всей электроники: блок накала и блок управления чем-то, который у меня не работает и на что влияет я не знаю, так как почти всё что мне надо работает. А тут разговоры про CAN-шину, да если бы у меня стоял бортовой БК, я вообще бы даже и не думал про какие-то экраны OLED на машину. И кстати на дизелях, особенно старых как у меня есть ещё куча параметров, которые необходимо отслеживать. А насчёт хотелок, ну даже если не получится, так что, теперь вообще не пробовать? Тем более я просто спросил совета, а тут на меня налетели умники, сами что, сразу с пелёнок без чей-то помощи всё узнали? Тоже ведь задавали вопросы, которые кто-то считал глупыми?
     
  8. Securbond

    Securbond Гуру

    Отвечая на Ваши вопросы люди исходят из полученных данных. Про старую дизельную машину без бортового ПК до сей поры вроде ни где не упоминалось ))
     
  9. Ursus

    Ursus Нуб

    Так и нужды не было, здесь форум про другое, а не про машины. Мне нужен был только совет про подключение 2-х OLED дисплеев и всё.
     
  10. Промах

    Промах Нерд

    У меня нету олед , у меня куча 20х2 и 8х2 , и кучка I2C переходников , паяем перемычки и.. .В общем вот такой код , мне помог ..
    Код (C++):
    //YWROBOT
    //Compatible with the Arduino IDE 1.0
    //Library version:1.1
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    /*
    * /                 addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
    LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
    */

    LiquidCrystal_I2C lcd1(0x3e,8,2);
    LiquidCrystal_I2C lcd2(0x3f,20,2);
    // A4 SDA     A5  SCL

    void setup()
    {
      lcd1.init();                      // initialize the lcd
      lcd2.init();
      // Print a message to the LCD.
    //  lcd.backlight();
      lcd2.setCursor(0,0);
      lcd2.print("1234567890ABCDEFGHIJ");
      lcd2.setCursor(0,1);
      lcd2.print("JIHGFEDCBA0987654321");
      lcd1.setCursor(0,0);
      lcd1.print("01234567");
      lcd1.setCursor(0,1);
      lcd1.print("89ABCDEF");

    }


    void loop()
    {
    }
     
    Последнее редактирование: 1 фев 2018
  11. Ursus

    Ursus Нуб

    Спасибо за совет, я конечно им воспользуюсь, только моя проблема в том, что 2 дисплея имея разные адреса, не хотят работать вместе,т.е. один из дисплеев не даёт работать другому, а по отдельности работают, или когда у них одинаковый адрес.
     
  12. Промах

    Промах Нерд

    Сканер I2c точно их видит на разных адресах ?
    Жду 2 оледа , мне тоже нужно 2 выносных дисплея ,но неужто i2c железки , работающие приёмниками , могут конфликтовать ( может чё с железом)?.
    Покажите скетч , без латиницы .
     
  13. Ursus

    Ursus Нуб

    Сканер их видит на разных адресах, если только они стоят по одному, если вместе, то только один, тот который изначально шёл с I2C. Если надо 2 дисплея, то заказывай их так, что бы они оба были с I2C, и что бы была возможность изменить у одного из них адрес. Выбирай внимательно, так как продаются дисплеи, у которых непонятно как менять адреc
    Вот скетч для примера работы с двумя дисплеями:
    Код (C++):
    //  Раскомментируйте для программной реализации шины I2C:    //
    //  #define pin_SW_SDA 3                                     // Назначение любого вывода Arduino для работы в качестве линии SDA программной шины I2C.
    //  #define pin_SW_SCL 9                                     // Назначение любого вывода Arduino для работы в качестве линии SCL программной шины I2C.
    //  Раскомментируйте для совместимости с большинством плат:  //
    //  #include <Wire.h>                                        // Библиотека iarduino_OLED будет использовать методы и функции библиотеки Wire.
    //  Ссылки для ознакомления:                                 //
    //  Подробная информация о подключении модуля к шине I2C:    // http://wiki.iarduino.ru/page/i2c_connection/
    //  Подробная информация о функциях и методах библиотеки:    // http://wiki.iarduino.ru/page/OLED_trema/
    //  Библиотека  iarduino_OLED_txt (текстовая) экономит ОЗУ:  // http://iarduino.ru/file/341.html
    //  Бибилиотека iarduino_OLED     (графическая):             // http://iarduino.ru/file/340.html
                                                                 //
    //  ДАННЫЙ ПРИМЕР НЕ БУДЕТ РАБОТАТЬ НА ПЛАТАХ                //
    //  С ОБЪЁМОМ ДИНАМИЧЕСКОЙ ПАМЯТИ НИЖЕ 2.5 КБ                //
                                                                 //
    #include <iarduino_OLED.h>                                   // Подключаем библиотеку iarduino_OLED.
    iarduino_OLED myOLED_1(0x3C);                                // Объявляем объект myOLED_1, указывая адрес первого дисплея на шине I2C: 0x3C.
    iarduino_OLED myOLED_2(0x3D);                                // Объявляем объект myOLED_2, указывая адрес второго дисплея на шине I2C: 0x3D.
                                                                 //
    extern uint8_t MediumFontRus[];                              // Подключаем шрифт MediumFontRus.
    extern uint8_t SmallFontRus[];                               // Подключаем шрифт SmallFontRus.
                                                                 // Если Вы не используете Кириллицу, то лучше подключить шрифты MediumFont и SmallFont, они займут меньше места в памяти программ.
    void setup(){                                                //
        myOLED_1.begin  ();                                      // Инициируем работу с первым дисплеем.
        myOLED_2.begin  ();                                      // Инициируем работу с вторым дисплеем.
        myOLED_1.setFont(MediumFontRus);                         // Указываем шрифт который требуется использовать для вывода цифр и текста на первом дисплее.
        myOLED_2.setFont(MediumFontRus);                         // Указываем шрифт который требуется использовать для вывода цифр и текста на втором дисплее.
        myOLED_1.print  ("1 дисплей", OLED_C, 31);               // Выводим текст на первый дисплей по центру экрана, координата нижней части текста по оси Y равна 31.
        myOLED_2.print  ("2 дисплей", OLED_C, 31);               // Выводим текст на второй дисплей по центру экрана, координата нижней части текста по оси Y равна 31.
        myOLED_1.setFont(SmallFontRus);                          // Указываем шрифт который требуется использовать для вывода цифр и текста на первом дисплее.
        myOLED_2.setFont(SmallFontRus);                          // Указываем шрифт который требуется использовать для вывода цифр и текста на втором дисплее.
        myOLED_1.print  ("Адрес дисплея 0x3C", OLED_C, 47);      // Выводим текст на первый дисплей по центру экрана, координата нижней части текста по оси Y равна 47.
        myOLED_2.print  ("Адрес дисплея 0x3D", OLED_C, 47);      // Выводим текст на второй дисплей по центру экрана, координата нижней части текста по оси Y равна 47.
    }                                                            //
                                                                 //
    void loop(){}                                                //
     
  14. Промах

    Промах Нерд

    Вот такие , там якобы адреса меняются https://ru.aliexpress.com/item/0-96...269a-4530-a2ca-ad4dd45011e6&priceBeautifyAB=0 .
    Да в принципе - не пойдут ,даже и не расстроюсь .
     
  15. Ursus

    Ursus Нуб

    У этих как раз и меняются адреса, я в ютюбе смотрел. Хотя на мой взгляд, можно и чуток побольше дисплеи взять, например 1,44.
     
  16. Промах

    Промах Нерд

    Ограничен в высоте , наверно верхнюю часть с пинами спилить придётся , обычные LCD на морозе не хотят адекватно работать , вот где то подслушал , что якобы oled в этом плане лучше , а может и на солнце тоже хорошо. Приедут - будет видно , а то могут не приехать , 2 посылки за 17 год не пришли ,и деньги тоже тю-тю.
     
  17. Ursus

    Ursus Нуб

     
  18. Ursus

    Ursus Нуб

    Мне тоже две не пришли, заказал жене телефон , чехол,стекло, и себе ардуино уно. В начале декабря заказал, телефон после нового года пришёл и стекло, а всё остальное нет. Больше всего жалко, что уно не пришёл, смотрел уже в России выписать, так цена плюс доставка, в два раза дороже чем из китая, хотя тот же китай. Кстати об ОЛЕД, тут уже выше писали, да и я сам читал, что они недолговечны. Есть ещё вариант, дисплей от нокиа 1112, он монохромный, и на свету должен работать нормально, так как и на морозе должен работать. А ты его хочешь на приборку поставить? Если на приборку, то попросту попробуй выпилить место в самой приборке, я так собираюсь делать.
     
  19. Промах

    Промах Нерд

    Дисплей должен быть механически защищён , у меня это приборы ваттметры, ампервольметры .можно было бы 7сегментные ,но я их ненавижу .