OLED 0.96, 0X27

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем port-Maksim, 22 окт 2019.

  1. port-Maksim

    port-Maksim Нерд

    крч приехал экран Oled 1,3 с али, я решил его запустить загружаю в него разные скетчи, Но экран весь в белых квадратиках в пикселях, Но в самом верху видно какие то процессы скетчей, что может быть
     
    Последнее редактирование: 23 окт 2019
  2. parovoZZ

    parovoZZ Гуру

    По-русски ни бум бум?
     
    port-Maksim нравится это.
  3. port-Maksim

    port-Maksim Нерд

     

    Вложения:

  4. DetSimen

    DetSimen Guest

    Адрес его проверь, мошт он вовсе не 0х27, а, например, 0х3С или 0x3D.
    I2C сканнером пройдись, и увидишь
     
    Andrey12 и port-Maksim нравится это.
  5. port-Maksim

    port-Maksim Нерд

    Там с обратной стороны написано 0x78 и 0x7A и возле 0x78 припаян smd резистор (472)
    и ещё у меня ошибка этот дисплей не 0.96, а 1.3
     
  6. port-Maksim

    port-Maksim Нерд

    I2C Scanner
    Scanning...
    I2C device found at address 0x3C !
    done
     
  7. DetSimen

    DetSimen Guest

    сравни теперь с заголовком темы. чо там значит 0х27?
     
    port-Maksim нравится это.
  8. port-Maksim

    port-Maksim Нерд

    Нет,
    я изменил в скетче на 0x3C, и теперь эран как старый телевизор показывает, он не рябит, а полоса проходит ,и в это полосе видны какие то фигуры
     
  9. DetSimen

    DetSimen Guest

    бывает.
     
    port-Maksim нравится это.
  10. DetSimen

    DetSimen Guest

    но, такак хрустального шара у меня нет, больше ничо не могу сказать.
     
    port-Maksim нравится это.
  11. Andrey12

    Andrey12 Гик

    Просто I2C использует для адреса 7 бит, а ардуина отправляет 8 бит то есть из 0x78 ( 7 бит 0111-100) после сдвига получаем 0x3C ( 8 бит 0011-1100)Может не научно но как то так с адресом.
    да 0,97 от 1,3 только размером отличается, чип у них один и тот же в основном ssd1306

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

    А по поводу полос, I2C медленный для этих целей, если перерисовывать весь дисплей то перерисовка заметна на глаз.
     
    port-Maksim нравится это.
  12. port-Maksim

    port-Maksim Нерд

    Код (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
                                                                           //
    #include <iarduino_OLED.h>                                             // Подключаем библиотеку iarduino_OLED.
    iarduino_OLED myOLED(0x3C);                                            // Объявляем объект myOLED, указывая адрес дисплея на шине I2C: 0x3C или 0x3D.
                                                                           //
    void setup(){                                                          //
        myOLED.begin();                                                    // Инициируем работу с дисплеем.
    }                                                                      //
                                                                           //
    void loop(){                                                           //
        myOLED.drawRect   (10, 10,  50, 50, true , true );                 // Прорисовываем квадрат по двум точкам: 10x10, 50x50       , закрасить - true  (да) , цвет - true  (белый).
        myOLED.drawRect   (15, 15,  45, 45, true , false);                 // Прорисовываем квадрат по двум точкам: 15x15, 45x45       , закрасить - true  (да) , цвет - false (черный).
        myOLED.drawLine   (10, 10,  50, 50,        false);                 // Прорисовываем линию через две точки:  10x10, 50x50       ,                          цвет - false (черный).
        myOLED.drawLine   (10, 50,  50, 10,        false);                 // Прорисовываем линию через две точки:  10x50, 50x10       ,                          цвет - false (черный).
        myOLED.drawCircle (30, 30,      10, false, true );                 // Прорисовываем круг с центром с точке  30x30 и радиусом 10, закрасить - false (нет), цвет - true  (белый).
        myOLED.drawCircle (30, 30,       5, true , true );                 // Прорисовываем круг с центром с точке  30x30 и радиусом 5 , закрасить - true  (да) , цвет - true  (белый).
        myOLED.drawPixel  (30, 30,                 false);                 // Прорисовываем точку в координате      30x30,                                        цвет - false (черный).
        myOLED.drawRect   (60, 10, 100, 50, false, true );                 // Прорисовываем квадрат по двум точкам: 60x10, 100x50      , закрасить - false (нет), цвет - true  (белый).
        myOLED.drawRect   (65, 15,  95, 45, true , true );                 // Прорисовываем квадрат по двум точкам: 65x15,  95x45      , закрасить - true  (да) , цвет - true  (белый).
        myOLED.drawLine   (60, 10, 100, 50,        true );                 // Прорисовываем линию через две точки:  60x10, 100x50      ,                          цвет - true  (белый).
        myOLED.drawLine   (60, 50, 100, 10,        true );                 // Прорисовываем линию через две точки:  60x50, 100x10      ,                          цвет - true  (белый).
        myOLED.drawCircle (80, 30,      10, false, false);                 // Прорисовываем круг с центром с точке  80x30 и радиусом 10, закрасить - false (нет), цвет - false (черный).
        myOLED.drawCircle (80, 30,       5, true,  false);                 // Прорисовываем круг с центром с точке  80x30 и радиусом 10, закрасить - true  (да) , цвет - false (черный).
        myOLED.drawPixel  (80, 30,                 true );                 // Прорисовываем точку в координате      80x30,                                        цвет - true  (белый).
        delay(2000);                                                       // Ждём 2 секунды.
        myOLED.clrScr();                                                   // Чистим экран.
        delay(1000);                                                       // Ждём 1 секунду.
    }                                                                      //
     
  13. Andrey12

    Andrey12 Гик

    Для таких случаев на работу просил такой https://ru.aliexpress.com/item/32564430663.html
    Не купили.
     
    port-Maksim и DetSimen нравится это.
  14. DetSimen

    DetSimen Guest

    Ненуачо, цена то намайная, можно даже потом на квартиру поменять
     
    Andrey12 и port-Maksim нравится это.
  15. Andrey12

    Andrey12 Гик

    И что в итоге то на экране?
     
    port-Maksim нравится это.
  16. port-Maksim

    port-Maksim Нерд

    Примерно так, я бы вставил видео, но нельзя
     

    Вложения:

  17. DetSimen

    DetSimen Guest

    Нуууу... Это сильное колдунство. Тем, укаво хрустальных шароф нету - не под силу без кода расколдовать.
     
    port-Maksim нравится это.
  18. Andrey12

    Andrey12 Гик

    Поступим проще. Такой код что дает?

    Код (C++):
    #include <iarduino_OLED.h>                                 // Подключаем библиотеку iarduino_OLED.
    iarduino_OLED myOLED(0x3C);                                // Объявляем объект myOLED, указывая адрес дисплея на шине I2C: 0x3C или 0x3D.
                                                               //
    extern uint8_t SmallFontRus[];                             // Подключаем шрифт SmallFontRus.
                                                               // Если Вы не используете Кириллицу, то лучше подключить шрифт SmallFont, он займет меньше места в памяти программ.
    void setup(){                                              //
        myOLED.begin();                                        // Инициируем работу с дисплеем.
        myOLED.setFont(SmallFontRus);                          // Указываем шрифт который требуется использовать для вывода цифр и текста.
        myOLED.invText();                                      // Указываем что цвет текста выводимого после данной функции должен быть инвертирован.
        myOLED.print("*** iarduino.ru ***", OLED_C, 31);       // Выводим текст по центру экрана, координата нижней части текста по оси Y равна 31. Текст будет написан черными буквами на белом фоне.
        myOLED.invText(false);                                 // Указываем что цвет текста выводимого после данной функции не требуется инвертировать.
        myOLED.print("*** iarduino.ru ***", OLED_C, 47);       // Выводим текст по центру экрана, координата нижней части текста по оси Y равна 31. Текст будет написан белыми буквами на чёрном фоне.
    }                                                          //
    void loop(){}    
     
    port-Maksim нравится это.
  19. parovoZZ

    parovoZZ Гуру

    с подключением напутал чего или неверно выбран экран (контроллер экрана) в коде.
     
    port-Maksim нравится это.
  20. port-Maksim

    port-Maksim Нерд

    в
    всё правильно подключено, sda A4 scl A5