вторник, 6 апреля 2021 г.

Работа OLED 0.91 inch 128*32 с библиотекой u8g2 (бывшая u8glib) (LRR 0.91 inch)

   


 Библиотека u8g2 (бывшая u8glib) позволяет выводить на дисплей текстовую информацию. Большой выбор шрифтов и большое количество поддерживаемых дисплеев делает эту библиотеку наиболее популярной.
    Для начала рассмотрим подключение дисплея OLED 0.91 inch 128*32 к ARDUINO. Для подключения потребуется всего 4 провода: GND, 5V, SCL (Clock Line) и SDA (Data Line)


    В моем случае используются:
        - версия программы ARDUINO 1.8.13
        - плата ARDUINO UNO
        - дисплей OLED 0.91 inch 128*32
        - библиотека u8g2

     Если у вас не установлена эта библиотека, то ее нужно установить. Пункт меню ИНСТРУМЕНТЫ - УПРАВЛЯТЬ БИБЛИОТЕКАМИ. Далее найти и установить u8g2






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

#include <Arduino.h>
#include <U8g2lib.h>
#include <SPI.h>
#include <Wire.h>

U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0); // описание OLED 0.91 inch 128*32

void setup(void) {
  u8g2.begin();
}

void loop(void) {
  u8g2.clearBuffer();                                 // очищаем буфер
  u8g2.setFont(u8g2_font_cupcakemetoyourleader_tr);   // выбираем красивый шрифт
  u8g2.drawStr(0, 29, "D.A.CHOCOLATE");               // начальная позиция и текст 
  u8g2.sendBuffer();                                  // отправляем в буфер
  delay(2000);                                        // пауза

  for (int i = 0; i < 250; i++) {                     // добавляем цикл для эффекта бегущей строки
  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_bubble_tr);                  // еще один красивый шрифт
  u8g2.drawStr(125-i, 29, "FANYA");                   // горизонтальная позиция меняется от 125 до -125
  u8g2.sendBuffer();
  delay(20);                                          // этой паузой задается скорость
 }
  u8g2.clearBuffer();         
  u8g2.setFont(u8g2_font_tenstamps_mf);               // еще один красивый шрифт
  u8g2.drawStr(15, 29, "Little");
  u8g2.sendBuffer();
  delay(1500);

  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_heavybottom_tr);             // еще один красивый шрифт
  u8g2.drawStr(32, 29, "Red Rat");
  u8g2.sendBuffer();
  delay(2000);

Посмотреть и выбрать шрифты можно по ссылке https://github.com/olikraus/u8g2/wiki/fntlistall
    

    


    Шрифты отсортированы по размеру. Слева образец. Копируем название нужного шрифта и вставляем в скетч. Можно найти шрифты с русскими буквами, шрифты с символами (заряд батареи, уровень сигнала и т.п.) 

    Также в скетче указывается позиция вывода текста

         u8g2.drawStr(32, 29, "Red Rat");


    Как видно на фото, сначала указывается горизонтальная позиция (слева направо), затем вертикальная (сверху вниз). Значения могут выходить из диапазона 128*32. За счет этого у меня реализована бегущая строка. При отрицательных значениях текст начинается с позиции за видимой частью дисплея.

    Для отображения нескольких строк делаем следующие:       

  u8g2.clearBuffer();         
  u8g2.setFont(u8g2_font_tenstamps_mf);              
  u8g2.drawStr(15, 16, "Line 1");
  u8g2.drawStr(15, 32, "Line 2");
  u8g2.sendBuffer();
  delay(4500);



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

    На этом все. Спасибо всем за внимание. Если вам помогла эта статья, можете сказать мне спасибо просто посмотрев рекламу :)