Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° U8glib.h β€” это ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с графичСскими ΠΈ символными дисплСями Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… Arduino, AVR ΠΈ STM32. Она ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ 300 ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ экранов, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ OLED (SSD1306, SH1106), LCD (HD44780, KS0108) ΠΈ TFT, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Ρ‘ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΠΎΠΉ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² с Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ интСрфСйсом. Однако ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡ€ΠΈ поискС Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ вСрсии Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ β€” ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° GitHub большС Π½Π΅ обновляСтся, Π° Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ источники часто содСрТат ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сборки.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π²Ρ‹ Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Π΅ способы ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ U8glib.h (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π°Ρ€Ρ…ΠΈΠ²Π½Ρ‹Π΅ вСрсии), инструкции ΠΏΠΎ установкС Π² Arduino IDE ΠΈ PlatformIO, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ошибок Π²Ρ€ΠΎΠ΄Π΅ #error "U8glib: No display definition found". ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ, Ρ‡Π΅ΠΌ U8glib отличаСтся ΠΎΡ‚ Π΅Ρ‘ ΠΏΡ€Π΅Π΅ΠΌΠ½ΠΈΠΊΠ° β€” U8g2, ΠΈ ΠΊΠΎΠ³Π΄Π° стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ быстро ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ дисплСй Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±Π΅Π· Π»ΠΈΡˆΠ½ΠΈΡ… зависимостСй, этот Π³Π°ΠΉΠ΄ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ часов ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ источники для скачивания U8glib.h

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° U8glib Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»Π°ΡΡŒ Oliver Kraus ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π»Π°ΡΡŒ Π½Π° GitHub. Однако с 2017 Π³ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π°ΠΌΠΎΡ€ΠΎΠΆΠ΅Π½, Π° всС усилия Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈΡΡŒ Π½Π° U8g2 β€” Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, U8glib.h Π΄ΠΎ сих ΠΏΠΎΡ€ вострСбована ΠΈΠ·-Π·Π° простоты API ΠΈ совмСстимости со старыми ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ.

Π“Π΄Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹:

  • πŸ“¦ Архивный Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ GitHub: ПослСдняя ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°Ρ вСрсия (1.19.1) доступна ΠΏΠΎ прямой ссылкС. Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°ΠΉΡ‚Π΅ ZIP-Π°Ρ€Ρ…ΠΈΠ² ΠΈ устанавливайтС Ρ‡Π΅Ρ€Π΅Π· Sketch β†’ Include Library β†’ Add .ZIP Library.
  • πŸ”„ Fork-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ: НСкоторыС энтузиасты ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΏΠ°Ρ‚Ρ‡ΠΈ для Π½ΠΎΠ²Ρ‹Ρ… дисплССв. НапримСр, вСрсия ΠΎΡ‚ adafruit с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ SSD1327 β€” ссылка.
  • πŸ’Ύ Arduino Library Manager: Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π² поискС U8glib β€” ΠΈΠ½ΠΎΠ³Π΄Π° Ρ‚Π°ΠΌ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½Π½Ρ‹Π΅ сборки ΠΎΡ‚ сообщСства (Π½ΠΎ провСряйтС Π΄Π°Ρ‚Ρƒ выпуска!).
  • 🌐 Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠ΅ хостинги: На сайтах Π²Ρ€ΠΎΠ΄Π΅ Arduino Libraries ΠΈΠ»ΠΈ PlatformIO Registry ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π·Π΅Ρ€ΠΊΠ°Π»Π°, Π½ΠΎ риск Π½Π°Ρ€Π²Π°Ρ‚ΡŒΡΡ Π½Π° вирусы ΠΈΠ»ΠΈ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Π²Ρ‹ΡˆΠ΅.
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: НС скачивайтС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ с нСизвСстных Ρ„ΠΎΡ€ΡƒΠΌΠΎΠ² ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΠΎΠ²! Π’ Π°Ρ€Ρ…ΠΈΠ²Π°Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ скрыты врСдоносныС скрипты, особСнно Ссли Ρ„Π°ΠΉΠ» называСтся Ρ‚ΠΈΠΏΠ° U8glib_full_pro_v2.7z. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Π΅ источники ΠΈΠ· этого списка.
πŸ“Š Π“Π΄Π΅ Π²Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ скачиваСтС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для Arduino?
  • ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ GitHub
  • Arduino IDE (Library Manager)
  • PlatformIO
  • Π€ΠΎΡ€ΡƒΠΌΡ‹/сообщСства
  • Π”Ρ€ΡƒΠ³ΠΎΠΉ источник

Установка U8glib.h Π² Arduino IDE ΠΈ PlatformIO

ΠŸΡ€ΠΎΡ†Π΅ΡΡ установки зависит ΠΎΡ‚ вашСй срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. НиТС β€” ΠΏΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹Π΅ инструкции для Π΄Π²ΡƒΡ… самых популярных инструмСнтов.

Для Arduino IDE (вСрсии 1.8.x ΠΈ 2.x):

  1. Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ ZIP-Π°Ρ€Ρ…ΠΈΠ² с GitHub.
  2. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Arduino IDE ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Sketch β†’ Include Library β†’ Add .ZIP Library.
  3. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ скачанный Π°Ρ€Ρ…ΠΈΠ². Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° появится Π² спискС Sketch β†’ Include Library.
  4. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π΅Ρ‘ Π² ΠΊΠΎΠ΄Π΅:
    #include <U8glib.h>

Для PlatformIO:

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» platformio.ini вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  2. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ строку:
    lib_deps =
    

    https://github.com/olikraus/U8glib_Arduino/archive/refs/heads/master.zip

  3. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» ΠΈ Π΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ΡΡŒ автоматичСской установки зависимостСй.

Загрузился ΠΏΡ€ΠΈΠΌΠ΅Ρ€ HelloWorld ΠΈΠ· File β†’ Examples β†’ U8glib|

НСт ошибок компиляции Ρ‚ΠΈΠΏΠ° fatal error: U8glib.h: No such file or directory|

Π’ ΠΏΠ°ΠΏΠΊΠ΅ <Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹>/Arduino/libraries появилась дирСктория U8glib|

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° отобраТаСтся Π² Sketch β†’ Include Library-->

Если послС установки Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ #error "U8glib: No display definition found", Π·Π½Π°Ρ‡ΠΈΡ‚, Π²Ρ‹ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π»ΠΈ модСль дисплСя Π² конструкторС. НапримСр, для SSD1306 Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ:

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);

Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ U8glib.h с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° U8glib ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»Π°ΡΡŒ для AVR (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ATmega328P Π² Arduino Uno), Π½ΠΎ с ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…. НиТС β€” Ρ‚Π°Π±Π»ΠΈΡ†Π° совмСстимости с популярными МК:

ΠœΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ
AVR (Uno, Nano, Mega) βœ… Полная ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Π°Ρ ΠΏΠ°ΠΌΡΡ‚ΡŒ (ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ для слоТной Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ) Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ U8G_PAGE_BUFFER для экономии RAM
ESP8266/ESP32 ⚠️ Частичная ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Ρ‚Π°ΠΉΠΌΠΈΠ½Π³Π°ΠΌΠΈ I2C, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ Π½Π° дисплСС ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ U8G_I2C_OPT_FAST ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π½Π° U8g2
STM32 (Blue Pill, Nucleo) βœ… Π‘ ΠΏΠ°Ρ‚Ρ‡Π°ΠΌΠΈ ВрСбуСтся ручная ΠΏΡ€Π°Π²ΠΊΠ° utility/u8g_com_stm32duino_hw_i2c.cpp Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ STM32duino с послСдними Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌΠΈ
Raspberry Pi Pico (RP2040) ❌ НСт ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ I2C/SPI Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Pico-Graphics ΠΈΠ»ΠΈ U8g2 с эмуляциСй

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ для ESP32: ΠΏΡ€ΠΈ использовании U8glib.h с дисплСями Π½Π° шинС I2C ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΏΠΈΠ½Ρ‹ SDA/SCL Π² конструкторС, ΠΈΠ½Π°Ρ‡Π΅ экран Π½Π΅ инициализируСтся. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_DEV_0, 21, 22);  // SDA=21, SCL=22
πŸ’‘

Если ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρ‹, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² скСтч ΡˆΡ€ΠΈΡ„Ρ‚ u8g_font_cyrillic ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ UTF-8 Π² IDE. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π°: u8g.drawStr(0, 10, "ΠŸΡ€ΠΈΠ²Π΅Ρ‚!");

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ U8glib.h: быстрый старт с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΊΠΎΠ΄Π°

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° прСдоставляСт простой API для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ ΠΈ тСкстом. Π’ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ пригодятся Π² 90% ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²:

  • πŸ“ Π’Ρ‹Π²ΠΎΠ΄ тСкста:
    u8g.setFont(u8g_font_unifont);  // Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡˆΡ€ΠΈΡ„Ρ‚
    

    u8g.drawStr(0, 10, "Hello, U8glib!"); // ВывСсти строку

  • 🎨 РисованиС ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ²:
    u8g.drawFrame(0, 0, 64, 32);  // ΠŸΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ
    

    u8g.drawCircle(32, 16, 10); // ΠžΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΡŒ

  • πŸ“Š БуфСризация экрана:
    u8g.firstPage();
    

    do {

    // Π’Π°Ρˆ ΠΊΠΎΠ΄ рисования

    } while(u8g.nextPage());

  • πŸ”„ ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° экрана:
    u8g.clearBuffer();  // Для Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… дисплССв
    

    u8g.clearDisplay(); // Для Π½Π΅Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ…

ΠŸΠΎΠ»Π½Ρ‹ΠΉ список Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ смотритС Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π²ΠΈΠΊΠΈ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ для экономии памяти Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ u8g_font_6x10 вмСсто u8g_font_unifont β€” ΠΎΠ½ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π² 5 Ρ€Π°Π· мСньшС мСста.

Как ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€Π΅ΠΆΠΈΠΌΡ‹ U8G_I2C_OPT_FAST ΠΈΠ»ΠΈ U8G_I2C_OPT_NO_ACK для I2C-дисплССв, Π½ΠΎ Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π°ΠΌ. Для SPI-дисплССв ΡƒΠ²Π΅Π»ΠΈΡ‡ΡŒΡ‚Π΅ Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΡƒΡŽ частоту Π² конструкторС: U8GLIB_ST7920_128X64 u8g(13, 11, 10, U8G_COM_SPI_HW_FAST);

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Π”Π°ΠΆΠ΅ послС ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ установки U8glib.h ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с ошибками компиляции ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ дисплСя. Π’ΠΎΡ‚ самыС частыС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ способы ΠΈΡ… исправлСния:

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ avr/gcc: internal compiler error ΠΏΡ€ΠΈ компиляции для AVR, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ скСтч слишком большой. Π£ΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚Π΅ количСство Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Arduino Mega (большС памяти).
Ошибка ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° РСшСниС
#error "U8glib: No display definition found" НС ΡƒΠΊΠ°Π·Π°Π½ Ρ‚ΠΈΠΏ дисплСя Π² конструкторС Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ строку Π²ΠΈΠ΄Π° U8GLIB_SSD1306_128X64 u8g(...);
undefined reference to `u8g_ll_HW_I2C_fn' ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° I2C для вашСй ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ ΡΠΌΡƒΠ»ΡΡ†ΠΈΡŽ: U8G_I2C_OPT_NO_ACK
Π­ΠΊΡ€Π°Π½ Π½Π΅ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ (Π±Π΅Π»Ρ‹ΠΉ/Ρ‡Ρ‘Ρ€Π½Ρ‹ΠΉ) ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΏΠΈΠ½Ρ‹ ΠΈΠ»ΠΈ адрСс I2C ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈ адрСс дисплСя сканСром I2CScanner
Section `.bss' will not fit in region `ram' НС Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти Π£ΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚Π΅ Π±ΡƒΡ„Π΅Ρ€ экрана ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ U8G_PAGE_BUFFER

Если ваш дисплСй SSD1306 ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΈΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„Ρ‹ вмСсто тСкста, скорСС всСго, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ явно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ адрСс I2C:

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_DEV_0, 0x3C);  // 0x3C ΠΈΠ»ΠΈ 0x3D

U8glib vs U8g2: Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°?

Π‘ 2017 Π³ΠΎΠ΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ U8glib Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° U8g2 β€” Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π½ΠΎΠ²Ρ‹Ρ… дисплССв ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. Однако U8glib.h Π΄ΠΎ сих ΠΏΠΎΡ€ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π° Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… случаях:

  • πŸ”„ Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ со старыми ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ: Если Ρƒ вас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π½Π° U8glib, миграция Π½Π° U8g2 ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΡ€Π°Π²ΠΎΠΊ API.
  • πŸ“‰ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ рСсурсы: U8g2 потрСбляСт большС памяти ΠΈΠ·-Π·Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ†Π²Π΅Ρ‚Π½Ρ‹Ρ… TFT).
  • πŸ› οΈ ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° API: Π’ U8glib ΠΏΡ€ΠΎΡ‰Π΅ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ Π±Π΅Π· Π»ΠΈΡˆΠ½ΠΈΡ… настроСк.

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π½Π° U8g2, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹:

  • πŸ†• ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½ΠΎΠ²Ρ‹Ρ… дисплССв (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, SSD1322, IL3820).
  • 🎨 Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° (Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Ρ‹, антиалиасинг).
  • πŸ“± ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ для ESP32 ΠΈ STM32.
πŸ’‘

Для Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ U8g2, Π½ΠΎ Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° максимальная ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ со старым ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠ»ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ рСсурсы β€” ΠΎΡΡ‚Π°Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° U8glib.

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ U8glib.h для спСцифичСских Π·Π°Π΄Π°Ρ‡

Если U8glib Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, рассмотритС эти Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ:

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° НСдостатки Π›ΡƒΡ‡ΡˆΠ΅ для...
U8g2 ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½ΠΎΠ²Ρ‹Ρ… дисплССв, оптимизация для ESP32 Π‘Π»ΠΎΠΆΠ½Π΅Π΅ API, большС памяти Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² с TFT/OLED
Adafruit GFX ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ API, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρ‹ "ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ" МСдлСннСС U8glib Π½Π° AVR ΠŸΡ€ΠΎΡΡ‚Ρ‹Ρ… тСкстовых интСрфСйсов
TFT_eSPI Высокая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ для SPI-дисплССв Волько для TFT, слоТная настройка Π˜Π³Ρ€ ΠΈ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π½Π° Ρ†Π²Π΅Ρ‚Π½Ρ‹Ρ… экранах
LiquidCrystal ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΡΡ‚ΠΈΡ‡Π½Π°, идСальна для HD44780 Волько символныС LCD ΠŸΡ€ΠΎΡΡ‚Ρ‹Ρ… тСкстовых дисплССв 16x2

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρƒ Π±Π΅Π· Ρ‚Π°Π½Ρ†Π΅Π² с Π±ΡƒΠ±Π½ΠΎΠΌ, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Adafruit_Russian β€” надстройку Π½Π°Π΄ Adafruit GFX, которая ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с русским тСкстом.

FAQ: ЧастыС вопросы ΠΏΠΎ U8glib.h

πŸ”Ή Как ΡƒΠ·Π½Π°Ρ‚ΡŒ адрСс I2C ΠΌΠΎΠ΅Π³ΠΎ OLED-дисплСя?

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ скСтч I2CScanner β€” ΠΎΠ½ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ всС устройства Π½Π° шинС. Для SSD1306 Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ адрСса: 0x3C ΠΈΠ»ΠΈ 0x3D.

πŸ”Ή МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ U8glib.h Π½Π° Arduino Due?

Π”Π°, Π½ΠΎ с ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ: Arduino Due (ARM Cortex-M3) поддСрТиваСтся, Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Ρ‚Π°ΠΉΠΌΠΈΠ½Π³Π°ΠΌΠΈ I2C. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ U8G_I2C_OPT_FAST ΠΈ провСряйтС ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ отобраТСния.

πŸ”Ή ΠŸΠΎΡ‡Π΅ΠΌΡƒ тСкст Π½Π° экранС ΠΌΠ΅Ρ€Ρ†Π°Π΅Ρ‚?

Π­Ρ‚ΠΎ типичная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡ€ΠΈ использовании Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅:

  1. ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ: U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_BUFFER);
  2. Π£ΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ частоту обновлСния экрана.
  3. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ питания (Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ кондСнсатор 100nF рядом с дисплССм).
πŸ”Ή Π“Π΄Π΅ Π½Π°ΠΉΡ‚ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ всСм ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌ дисплСям?

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ докумСнтация устарСла, Π½ΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ:

  • Π’ Π²ΠΈΠΊΠΈ рСпозитория.
  • Π’ Ρ„Π°ΠΉΠ»Π΅ U8glib.h β€” Ρ‚Π°ΠΌ пСрСчислСны всС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ (ΠΈΡ‰ΠΈΡ‚Π΅ строки U8GLIB_*).
  • На Ρ„ΠΎΡ€ΡƒΠΌΠ°Ρ… Arduino.cc ΠΈ EEVblog (поиск ΠΏΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈ дисплСя).
πŸ”Ή Как ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π½Π° ESP32?

Для ESP32:

  1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ U8G_I2C_OPT_FAST.
  2. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ дисплСй ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΌΡƒ I2C (ΠΏΠΈΠ½Ρ‹ GPIO21/SDA ΠΈ GPIO22/SCL).
  3. Π£Π²Π΅Π»ΠΈΡ‡ΡŒΡ‚Π΅ Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΡƒΡŽ частоту I2C Π΄ΠΎ 800 ΠΊΠ“Ρ† (Π² Wire.begin()).

Если Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ β€” Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ ΠΊ стандартной частотС 400 ΠΊΠ“Ρ†.