U8Glib h библиотека описание: Библиотека U8glib для работы с LCD дисплеями для Arduino

Список библиотек Arduino

    Вы уже знаете, что комьюнити Ардуино очень большое и ежедневно растёт. За время своего существования оно родило огромное количество библиотек. Я решил составить список самых необычных, интересных и полезных, ссылки ведут на гитхаб или сайт разработчика. Полного набора специализированных библиотек для работы с модулями и шилдами здесь нет! Ищутся в гугле по названию чипа, здесь я оставлял только универсальные. Библиотеки, помеченные как стандартные, скачивать не нужно!

    Список составлен для библиотек, подходящих для UNO, NANO, MEGA, то есть тут нет мощных библиотек для DUE и ZERO подобных плат. Источники:

    • https://www.arduino.cc/en/reference/libraries
    • https://github.com/Lembed/Awesome-arduino/blob/master/README.md
    • https://www.arduinolibraries.info/architectures/avr

    2px»>avr-libs


    В состав компилятора Arduino IDE входит набор стандартных библиотек под микроконтроллеры AVR (т.н. toolchain – набор инструментов), их можно просто подключить и использовать их возможности. Полный список и документация на все либы находится здесь. Тут перечислю самые полезные и интересные (название будет ссылкой на документацию):

    • math.h – библиотека с кучей математических функций. Подключена по умолчанию
    • time.h – библиотека для работы с временем. Счёт, конвертация, временные зоны и прочее
    • avr/eeprom.h – родная библиотека для работы с EEPROM. Подробно разбирали в этом уроке
    • avr/power.h – библиотека управления потреблением МК: делитель системной частоты и включение/выключение периферии
    • avr/sleep.h – библиотека для управления режимом энергопотребления МК
    • avr/wdt.h – управление сторожевым таймером
    • util/delay.h – библиотека с задержками на базе тактов процессора (работает без таймера 0)

    3333″ data-lineheight=»35.2px»>Время, таймеры


    • Time – счётчик времени для Ардуино, считает часы-минуты-месяцы и всё такое. Описание
    • RTCTimer – таймер для работы в паре с RTC модулем
    • GyverTimer – моя версия таймера с миллис, рекомендую! Есть мс и мкс таймеры, режим периода и таймаута, улучшенный алгоритм счёта периодов.
    • Chrono – ещё библиотека “таймера с millis()” для эффективного построения логики своего кода
    • elapsedMillis – ещё один простой таймер с millis()
    • buildTime – библиотека для получения даты и времени компиляции в явном виде
    • TimeLord – библиотека, позволяющая узнать время восхода/заката Солнца и Луны, лунные фазы, звёздное время и проч. на основе географического положения
    • GyverTimer012 – лёгкая библиотека для управления прерываниями на всех трёх таймерах ATmega328. Заменена библиотекой GyverTimers
    • GyverTimers – библиотека для управления прерываниями по всем таймерам на ATmega328 и ATmega2560 с возможностью отдельной настройки каналов. Объективно лучше следующих трёх библиотек.
    • TimerOne – библиотека для удобного ручного контроля за Таймером 1 (прерывания, ШИМ, и.т.д.)
    • MsTimer2 – библиотека для удобного ручного контроля за Таймером 2. Есть версия FlexiTimer2, которая чем-то лучше.
    • TimerThree – библиотека для удобного ручного контроля за Таймером 3

    Коммуникация, интерфейсы


    • GyverBus – общение по протоколу GBUS. Двухсторонняя связь сети Ардуинок по одному проводу. Описание
    • Firmata – стандартная библиотека для общения с компьютером по протоколу Firmata. Описание
    • SoftwareSerial – стандартная библиотека для создания TTL Serial на любых двух пинах, позволяет создать дополнительный порт для общения с Bluetooth/GPS/GSM и прочими модулями с Serial коммуникацией.
    • AltSoftSerial – самая лучшая версия софтварного Serial, использует системный таймер
    • SerialCommand – лёгкая библиотека для общения через порт при помощи команд
    • CmdMessenger – мощная библиотека для общения через Serial порт, со своим парсером и кучей приколюх.  Описание
    • EasyTransfer – библиотека для общения двух Ардуинок через последовательный порт
    • Streaming – вывод в порт “в стиле C++” при помощи оператора <<
    • OneWire – библиотека для общения по протоколу one wire, например с датчиками температуры DS18b20. Ардуино может быть “slave” для общения, читать тут
    • SerialControl – набор примеров для управления состояниями пинов при помощи Serial команд. Описание
    • MiniPirate – более мощная версия SerialControl, позволяет командами в порт крутить серво, сканировать i2c и многое другое!
    • MIDI_library – библиотека для работы с музыкальными устройствами по протоколу MIDI (через Serial, подходит любая Ардуина)
    • MIDI – MIDI библиотека от великого PaulStoffregen (через Serial, подходит любая Ардуина)
    • arcore – ещё одна библиотека для MIDI (USB-MIDI, только для Леонардо/Микро)
    • MIDIUSB – ещё одна библиотека для MIDI (USB-MIDI, только для Леонардо/Микро)
    • HIDUINO – набор инструментов для создания USB MIDI устройства
    • HID – очень мощная библиотека для создания HID устройств (мыши, клавиатуры, геймпады и другие USB контроллеры)
    • ArduinoJoystickLibrary – ещё одна библиотека для создания полноценного HID геймпада на Leonardo/Micro (ATmega32U4)
    • CPPM – библиотека для организации связи по протоколу CPPM (например RC приёмник Orange R615X)
    • PPMEncoder – декодирование и генерация PPM сигнала для RC моделей
    • PWMread – статья + библиотека для чтения PWM сигнала с приёмников RC моделей
    • TVout – библиотека для вывода графики на экран телевизора через вход AV.  Описание
    • X10 – библиотека для общения по протоколу X10 по линии питания 220V. Описание тут
    • NicoHoodProtocol – универсальный протокол связи по проводу

    Некоторое железо


    • GyverStepper – высокопроизводительная библиотека для управления шаговым мотором
    • AccelStepper – более интересная и качественная замена стандартной библиотеке Stepper для контроля шаговых моторчиков. Скачать можно со страницы разработчика, или вот прямая ссылка на архив.
    • AccelMotor – моя библиотека для управления мотором с энкодером (превращает обычный мотор в “шаговый” или сервомотор)
    • ServoSmooth – моё дополнение к стандартной библиотеке Servo, позволяющее управлять сервоприводом с настройкой максимальной скорости движения и разгона/торможения (как в AccelStepper, только для серво). Must have любого любителя серво манипуляторов!
    • CapacitiveSensor – библиотека для создания сенсорных кнопок (из пары компонентов рассыпухи).  Описание
    • ADCTouchSensor – ещё одна версия библиотеки для создания сенсорных кнопок. Есть ещё одна, так, на всякий случай
    • TouchWheel – библиотека для создания сенсорных слайдеров и колец
    • Buzz – детектор присутствия на основе всего лишь одного провода! (измеряет ЭМ волны)
    • Bounce – библиотека антидребезга для кнопок и всего такого. Сомнительная полезность, но почитайте описание
    • oneButton – библиотека для расширенной работы с кнопкой. На мой взгляд неудобная
    • GyverButton – моя библиотека для расширенной работы с кнопкой. Очень много возможностей!
    • AdaEncoder – библиотека для работы с энкодерами
    • GyverEncoder – моя библиотека для энкодеров с кучей возможностей, поддерживает разные типы энкодеров
    • RTCLib – лёгкая библиотека, поддерживающая большинство RTC модулей
    • OV7670 – библиотека для работы с камерой на OV7670
    • IRremote – базовая библиотека для работы с ИК пультами и излучателями
    • IRLib – более расширенная версия для работы с ИК устройствами
    • IRLremote – самая чёткая библиотека для ИК пультов, работает через прерывания. 100% отработка пульта
    • keySweeper – почти готовый проект для перехвата нажатий с беспроводных клавиатур
    • USB_Host_Shield – позволяет Ардуине работать с геймпадами (PS, XBOX) и другими USB устройствами
    • Brain – библиотека для работы с NeuroSky ЭЭГ модулями
    • TinyGPS – шустрая библиотека для работы с GPS модулями
    • GyverRGB – моя библиотека для работы с RGB светодиодами и лентами
    • FadeLED – библиотека для плавного (ШИМ) мигания светодиодами с разными периодами
    • CurrentTransformer – измерение силы тока при помощи трансформатора (катушки) на проводе. Читай: токовые клещи
    • LiquidCrystal-I2C – библиотека для LCD дисплеев с I2C контроллером. Разработчик – fdebrabander
    • LiquidCrystal-I2C – библиотека для LCD дисплеев с I2C контроллером. Разработчик – johnrickman. Предыдущая вроде бы лучше
    • LiquidTWI2 – быстрая библиотека для LCD дисплеев на контроллерах MCP23008 или MCP23017
    • LCD_1602_RUS – библиотека русского шрифта для LCD дисплеев
    • LCD_1602_RUS_ALL – новая версия предыдущей библиотеки с поддержкой украинского языка
    • u8glib – библиотека для работы с монохромными LCD и OLED дисплеями
    • ucglib – библиотека для работы с цветными LCD и OLED дисплеями
    • Adafruit_SSD1306 – ещё одна библиотека для OLED дисплеев
    • Adafruit-GFX-Library – дополнение для adafruit библиотек дисплеев, позволяет выводить графику
    • SSD1306Ascii – самодостаточная и очень лёгкая библиотека для вывода текста на OLEDы
    • NeoPixelBus – библиотека для работы с адресной светодиодной лентой, адаптированная под esp8266 (NodeMCU, Wemos и др. ).
    • microLED – лёгкая и простая библиотека для работы с адресной лентой
    • Gyver433 – лёгкая библиотека для отправки любых данных через радио модули 433 МГц
    • rc-switch – библиотека для работы с радио модулями 433 МГц и разными протоколами связи

    Работа с данными, фильтры


    • FFT – быстрое преобразование Фурье (раскладывание звука в спектр)
    • fix_FFT – говорят пофикшенная библиотека FFT
    • FHT – быстрое преобразование Хартли (как Фурье, только ещё быстрее)
    • GyverFilters – несколько очень эффективных фильтров данных (бегущее среднее, медиана, упрощённый одномерный Калман, AB фильтр
    • TinyEKF – быстрый облегчённый вариант фильтра Калмана
    • filtering-library – несколько фильтров данных
    • Gaussian – фильтр Гаусса
    • aJson – работа с данными в формате JSON. Есть ещё Arduino JSON библиотека, и парсер потока JSON данных
    • PID – самая известная библиотека ПИД регулятора. Для неё есть дополнение – автонастройка (автотюн) параметров регулятора
    • GyverPID – моя версия PID регулятора, на мой взгляд более компактная и удобная в использовании
    • GyverRelay – библиотека релейного регулятора с гистерезисом и обратной связью по производной
    • CryptoSuite – несколько примеров шифрования данных известными шифрами
    • AESlib – библиотека для работы с AES шифрованием
    • LinkedList – работа с типом данных “связанный список”, читайте на Хабре
    • FixedPointsArduino – работа с типом данных “с фиксированной точкой” (десятичные дроби, но быстрее вычисляются)

    Системные штуки

    Работа с памятью


    • EEPROM – стандартная библиотека для работы с EEPROM. Рекомендую использовать более удобную EEPROMex
    • EEPROMex – более удобная библиотека для работы с EEPROM памятью. Описание
    • EEPROMWearLevel – “менеджер” EEPROM памяти, следит за количеством перезаписи ячеек
    • MemoryFree – библиотека для изучения текущей занятости SRAM памяти.  Описание
    • EEWrap – библиотека позволяет использовать EEPROM как оперативную память (SRAM), т.е. для хранения переменных
    • Flash – библиотека позволяет удобно хранить/читать любые данные во Flash памяти микроконтроллера (массивы, строки с текстом…)
    • PGMWrap – ещё одна мощная библиотека для записи/чтения данных во Flash память
    • optiboot_flash – модифицированный загрузчик OptiBoot, в который добавлена возможность работать с Flash памятью во время выполнения кода (считай расширение SRAM за счёт Flash!)

    Работа с пинами


    • DirectIO – более быстрая альтернатива стандартных функций чтения/записи состояния пина
    • AnalogReadFast – быстрый вариант чтения аналогового пина (21 мкс)
    • CyberLib – крутой сборник быстрых аналогов функциям Ардуино, читайте описание. Примечание: автор этой открытой библиотеки не любит, когда ей пользуются в своих проектах, так что аккуратнее.
    • GyverHacks – сборник быстрых аналогов функций Ардуино, не таких быстрых, как у CyberLib, но более привычный в использовании. Изменение частоты/разрядности ШИМ
    • SoftPWM – делаем софтверный ШИМ на разных пинах
    • PWM – библиотека, позволяющая задавать частоту ШИМ
    • GyverPWM – мощная библиотека для расширенной генерации ШИМ (только для ATmega328)
    • PinChangeInt – делаем прерывания на любом пине. Как так? Есть описание
    • PinChangeInterrupt – ещё одна библиотека (лучше), позволяющая ловить прерывания на любом пине
    • analogComp – работа с аналоговым компаратором микроконтроллера

    Глубинные настройки


    • GyverHacks – помимо описанного выше, тут есть некоторые глубинные настройки, измерение опорного напряжения и температуры ядра (для ATmega328)
    • GyverTimer012 – лёгкая библиотека для управления прерываниями на всех трёх таймерах ATmega328
    • directTimers – библиотека для расширенного ручного управления таймерами на ATmega328, раскрывает все возможности и настройки таймеров
    • directADC – библиотека для расширенного ручного управления АЦП и компаратором на ATmega328, раскрывает все возможности и настройки АЦП
    • GyverPower – самая лёгкая и универсальная библиотека для управления сном, периферией и системным клоком
    • Low-Power – мощная библиотека для управления энергосбережением и спящим режимом
    • narcoleptic – ещё одна очень простая в использовании библиотека спящего режима
    • SoftwareReset – доступ к перезагрузке Ардуино “из скетча”
    • WatchDog – библиотека для работы со “сторожевым псом”, перезагружающим МК в случае зависания.  Ещё вариант
    • Adafruit-Trinket-USB – библиотека эмуляции USB для ATtiny85 (плата Digispark). Имитирует клавиатуру/мышь
    • TrinketHidCombo_MEGA328 – библиотека эмуляции USB для ATmega328 (платы UNO/Nano/Pro Mini). Имитирует клавиатуру/мышь. Пример есть на форуме. Оригинальный пост на форуме. Скачать с FTP сайта. Скачать с облака Mail. Скачать с Яндекс Диска.
    • DMBS AVR lib – набор лёгких и быстрых базовых функций для работы с МК без ядра (аналог avr libs)
    • LUFA – лёгкий USB фреймворк для AVR

    Ядра и загрузчики


    • megaTinyCore – мой вариант ядра для плат с ATmega168/328 на борту (UNO, Nano, Mini), основан на оригинальном ядре Arduino, стандартные функции многократно ускорены и облегчены. Рекомендуется для тяжёлых и требовательных к скорости проектов.
    • optiBoot – крутой загрузчик для Ардуино, более быстрый, лёгкий и функциональный
    • HoodLoader – загрузчик для МК 16u2 с поддержкой HID (читай: превращает оригинальную UNO в аналог Leonardo с поддержкой HID)
    • ArduinoXInput_AVR – ядро для плат на базе ATmega32U4 (Leonardo, Micro), превращающее плату в контроллер с поддержкой XInput (геймпад от Xbox). Для создания игрового контроллера также понадобится библиотека ArduinoXInput. Есть гайд на английском
    • GyverCore – лёгкое и быстрое ядро для ATmega328 (Arduino NANO), которое разработали мы с коллегой. Лёгкое и быстрое, возможность работы без загрузчика и широкий выбор вариантов тактирования и вообще системных настроек.
    • MiniCore – ядро для поддержки микроконтроллеров ATmega328, ATmega168, ATmega88, ATmega48 и ATmega8, основано на optiBoot. Одна из основных фишек – поддержка внутреннего тактового генератора!
    • MicroCore – ядро для поддержки микроконтроллеров ATtiny13, ATtiny13A and ATtiny13V с выбором частоты внутреннего тактового генератора
    • ATTinyCore – ядро для поддержки микроконтроллеров ATtiny 441/841, 44/84, 45/85, 461/861, 48/88, 828, 1634, 87, 167, опять же на базе крутого OptiBoot.
    • megaTinyCore – ядро для поддержки микроконтроллеров ATtiny 3217, 1617, 817, 417, 3216, 1616, 816, 416, 1614, 814, 414, 214, 412, 212, 1607, 807, 1606, 806, 406, 1604, 804, 404, 204, 402, 202. Новые модели шьются по UPDI, по этой теме читайте отличную статью на русском языке.
    • nanoBoot – лёгкий (512 байт) загрузчик для ATmega32xx4 с поддержкой HID

    Менеджеры задач и потоков


    • ArduinoThread – библиотека для создания “потоков” – отдельно выполняемых задач по таймеру или как-то ещё
    • EventManager – библиотека для работы с событиями (опять-же таймер-вашего-кода)
    • Arduino-fsm – ещё один менеджер задач, позволяющий писать чёткий понятный код с кучей задач, выполняющихся по таймеру
    • Automaton – ещё один фреймворк для написания скетчей с задачами и таймерами. Есть вики
    • FreeRTOS – операционная система реального времени для Ардуино. Задачи, потоки…
    • Arduino_FreeRTOS – ещё одна версия RTOS
    • GyverRTOS – моя простенькая RTOS с режимом сна (на основе библиотеки Low-Power)
    • DeepSleepScheduler – менеджер задач со встроенным режимом сна

    3333″ data-lineheight=»35.2px»>Звук и речь


    • Talkie – библиотека синтеза звука речи для создания говорящих девайсов
    • Mozzi – большая библиотека для генерации различных звуков
    • uSpeech – библиотека распознавания речи
    • TMRpcm – библиотека для воспроизведения звуковых файлов .WAV с карты памяти
    • toneAC – более продвинутая версия стандартной tone() для генерации звуковой частоты. Скачать сами файлы можно тут
    • DFPlayer – библиотека для работы с MP3 модулем DFPlayer mini
    • WTV020SD16P – работа со звуковым модулем WTV020SD16P

    Разное


    • menusystem – мощный инструмент для создания меню с кучей примеров
    • LCD_Menu – готовый инструмент для создания меню на LCD Дисплеях
    • LiquidMenu – ещё один фреймворк для создания меню на LCD
    • MENWIZ – ещё один готовый вариант меню для LCD
    • MicroDebug – библиотека для удобной отладки кода
    • hoverboard-hack – немного не в тему, но это инструкция по хакингу платы ховерборда для использования её в своих целях

    Полезные страницы


    • Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
    • Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
    • Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
    • Полная документация по языку Ардуино, все встроенные функции и макросы, все доступные типы данных
    • Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
    • Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
    • Поддержать автора за работу над уроками
    • Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])

    Обновлено

    Назад
    Шпаргалка молодого бойца

    Вперёд
    Книги и статьи

    BSP430: include/bsp430/utility/u8glib.h Ссылка на файл

    Объявления, относящиеся к поддержке u8glib для конкретной платформы.
    Подробнее…

    #include
    #include

    Перейдите к исходному коду этого файла.

    9001 8

    #define configBSP430_UTILITY_U8GLIB   0
     
    #define  BSP430_UTILITY_U8GLIB   включить
     
    #define BSP430_U8GLIB_REFRESH_INTERVAL_MS   0
      9001 7
    внутр. iBSP430u8gRefresh (u8g_t *u8g)
      900 17
    hBSP430halSERIAL hBSP430u8gSPI ( void)
    U8G_DEV_T XBSP430U8GDevice
     

    Объявления, относящиеся к поддержке u8glib для конкретных платформ.

    Универсальная графическая библиотека для 8-битных встраиваемых систем — это портативная библиотека с текстовой и графической поддержкой для ЖК-дисплеев, обычно используемых на платформах микроконтроллеров.

    u8glib находится под сильным влиянием Arduino, и добавление еще одной целевой платформы в саму библиотеку было бы запутанным; однако довольно легко создать поддержку моста на каждой платформе, чтобы обеспечить интерфейс от аппаратного обеспечения к библиотеке. Этот модуль определяет общий материал, относящийся к интерфейсам, предоставляемым BSP430.

    Большинство идентификаторов и констант периферийных ресурсов зависят от платформы; например BSP430_PLATFORM_TRXEB_LCD_SPI_PERIPH_HANDLE. Интерфейс для u8glib не требует, чтобы они были абстрагированы и общедоступны.

    Для доступа к платформенно-зависимому интерфейсу необходимо добавить u8g_bsp430.c к набору исходных файлов, скомпилированных в программу, вместе с необходимыми частями самой u8glib, включая любые желаемые шрифты. Также включите $(PLATFORM_U8G_PB_C) , который определен в специфичном для платформы файле Makefile.common , чтобы выбрать правильную низкоуровневую реализацию на основе ориентации экрана и поддерживаемых цветов.

    См. также
    U8GLIB ЖК-текст и графика
    Домашняя страница
    http://github.com/pabigot/bsp430
    Copyright 90 110

    Copyright 2013-2014, Питер А. Биго. Под лицензией BSD-3-Clause
    #define BSP430_U8GLIB_REFRESH_INTERVAL_MS   0

    Укажите интервал в миллисекундах, через который следует вызывать iBSP430u8gRefresh(), чтобы поддерживать стабильное отображение.

    Если значение равно нулю, нет необходимости периодически обновлять дисплей.

    По умолчанию:
    Значение здесь заменено ранее встречавшимися определениями.
    Платформенное значение:
    Здесь не определено; включите , чтобы получить правильное значение этого макроса.
    Примеры:
    утилита/u8glib/main.c.
    #define BSP430_UTILITY_U8GLIB   include

    Указывает, что на платформе доступен ЖК-интерфейс U8GLIB. Это задается заголовком, зависящим от платформы, когда configBSP430_UTILITY_U8GLIB имеет значение true и платформа поддерживает устройство U8GLIB.

    Если это определение оценивается как false, то либо адаптация u8glib не запрашивалась, либо платформа не предоставила ее.

    Пример использования см. в тексте и графике ЖК-дисплея U8GLIB.

    Только препроцессор C:
    Значение этого макроса может ограничивать его использование условными директивами препроцессора C.
    Зависимость:
    configBSP430_UTILITY_U8GLIB
    По умолчанию:
    Значение здесь заменено ранее встречавшимися определениями.
    #define configBSP430_UTILITY_U8GLIB   0

    Определите, чтобы запросить, чтобы платформа включила адаптацию U8GLIB.

    Некоторые платформы имеют встроенный ЖК-дисплей, для которого доступен мост к u8glib. Определение этого макроса в вашем зарегистрирует запрос для этого устройства.

    Только препроцессор C:
    Значение этого макроса может ограничивать его использование условными директивами препроцессора C.
    Воздействует:
    BSP430_UTILITY_U8GLIB
    По умолчанию:
    Значение здесь заменено ранее встречавшимися определениями.
    hBSP430halSERIAL hBSP430u8gSPI ( недействителен  )

    Предоставьте доступ к устройству SPI, используемому для связи с устройством u8glib.

    Возвращает
    Устройство SPI для связи с ЖК-дисплеем. Действует только после вызова u8g_Init(). Если возвращается значение null, устройство нельзя использовать.
    Примеры:
    утилита/u8glib/main.c.
    инт iBSP430u8gRefresh ( u8g_t * у8г )

    Функция, которая должна вызываться через миллисекунды BSP430_U8GLIB_REFRESH_INTERVAL_MS, чтобы дисплей продолжал работать.

    Например, это требуется для ЖК-дисплея Sharp Memory для переключения VCOM, чтобы на дисплее не накапливалось смещение постоянного тока.

    Примечание
    Эта функция подходит для вызова из обработчика прерывания. Возвращаемое значение соответствует ожиданиям возвращаемых значений обратного вызова прерывания.
    Параметры
    u8g ручка u8glib для дисплея
    Возвращает
    Обычно ноль или значение, как описано в разделе Возвращаемые значения обратного вызова прерывания.
    Примеры:
    утилита/u8glib/main.c.
    u8g_dev_t xBSP430u8gDevice

    Платформенное устройство для встроенного ЖК-дисплея.

    Зависимость:
    BSP430_UTILITY_U8GLIB
    Примеры:
    утилита/u8glib/main.c.

    arduino nano — мне нужна помощь с библиотекой U8GLIB

    спросил

    Изменено
    4 года, 2 месяца назад

    Просмотрено
    4к раз

    У меня есть проект, в котором используется oled-дисплей 128×64. Я должен использовать U8GLIB, поскольку доступные дисплеи меняются с SSD1306 на SSh2106 в зависимости от того, когда вы его покупаете, какая библиотека охватывает оба дисплея.
    Я не хочу, чтобы программа для дисплея съедала память ардуино, поэтому я использую u8glib вместо u8g2! для этого проекта мне нужно отображать числа от 0 до 9, десятичная точка, омега (символ Ома) и метрические префиксы, такие как μ, m, k, M и т. д.
    Сначала я попытался создать растровый шрифт (.bdf) и преобразовать его в файл C, потому что на это намекали несколько сообщений. Учебников не было, и после того, как я возился с разными форматами и пытался добавить шрифт в библиотеку, я просто сдался, потому что не мог в этом разобраться. Вместо этого я решил использовать этот веб-сайт, который генерирует растровые изображения из файлов TTF:
    https://littlevgl.com/ttf-font-to-c-array

    Теперь я могу использовать эти растровые изображения и иметь несколько символов, которые используют очень мало памяти (около 20% по сравнению с более чем 70% при использовании полных символов). шрифт в u8g2!) но это делает вещи действительно неудобными, так как мне приходится переводить каждое число, которое я получаю, в отдельные цифры, а затем в растровое изображение! также я могу использовать только размеры шрифтов, высота которых кратна 8, потому что по какой-то странной причине эта библиотека ожидает ширину в количестве байтов и высоту в количестве пикселей!

    cnt: количество байтов растрового изображения в горизонтальном направлении. Ширина
    растрового изображения cnt*8.

    , поэтому я могу сделать шрифты размером, например, 48, но не 50 или 52, которые больше подходят для моего приложения!
    Я не уверен, что у кого-то еще была эта проблема, но должен быть способ отображать нужные символы, не уничтожая все пространство памяти, как это делает u8g2! На то, чтобы добраться до этого места, у меня ушло 2 дня (слева 0,96″ SSD1306, а справа 1,3″ СШ2106):

    Пожалуйста, помогите, если у вас есть какие-либо идеи о том, как обращаться с этой библиотекой, поскольку в данный момент она сводит меня с ума!

    • arduino-nano
    • библиотека
    • дисплей
    • использование памяти

    Возможно, это не совсем ответ на ваш вопрос, но может быть некоторая информация о u8g2lib, которую вы не видели. Исходный код библиотеки связан здесь: u8g2lib

    В этом репозитории находится документация FAQ, которая включает такие жемчужины, как:

    903:50

    В: U8g2 требует много памяти. Как уменьшить это?
    — Посетите https://github.com/olikraus/u8g2/wiki/u8g2optimization.
    — Если возможно, отключите функции U8g2 (см. u8g2.h)
    — Ограничение размера шрифта. Если возможно, избегайте шрифтов «f», вместо этого используйте шрифты «r» или «n».
    — Если интерфейс I2C не требуется, раскомментируйте #define U8X8_HAVE_HW_I2C в U8x8lib.h (Фон: из-за проблемы в
    Wire.h, библиотека I2C Arduino всегда включена)

    и

    В: Как мне сгенерировать собственный шрифт. A: Шрифт должен быть доступен в
    формат файла bdf. Затем используйте bdfconv для генерации данных шрифта. Шрифт
    данные могут быть вставлены в существующий файл вашего проекта. Есть
    также хороший редактор растровых шрифтов Windows «Fony»
    (http://hukka.ncn.fi/?fony), который может экспортировать файлы .

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *