MicroPython:Библиотеки/lcd160cr

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Модуль lcd160cr – управление дисплеем LCD160CR[1]

В этом модуле реализовано управление дисплеем MicroPython LCD160CR.

По этой ссылке можно найти руководство по дисплею LCD160CR, а по этой – его схему.

Класс LCD160CR

В классе LCD160CR реализован программный интерфейс для дисплея LCD160CR. Создав экземпляр этого класса, вы сможете использовать его методы для рисования на дисплее и считывания статуса сенсорной панели.

Например:

import lcd160cr

lcd = lcd160cr.LCD160CR('X')
lcd.set_orient(lcd160cr.PORTRAIT)
lcd.set_pos(0, 0)
lcd.set_text_color(lcd.rgb(255, 0, 0), lcd.rgb(0, 0, 0))
lcd.set_font(1)
lcd.write('Привет, MicroPython!')
print('touch:', lcd.get_touch())

Конструкторы

Статические методы

Элементы экземпляра

Элементы экземпляра LCD160CR ниже открыты для общего доступа:

Методы для настройки

Методы для работы с пикселями

  • [[MicroPython:Библиотеки/lcd160cr/
  • [[MicroPython:Библиотеки/lcd160cr/

С помощью методов ниже осуществляется управление отдельными пикселями на экране: • LCD160CR.set_pixel(x, y, c) – рисует пиксель заданного цвета в заданном месте. В аргументе с (это цвет пикселя) должно быть 16-битное целое число, которое может быть сгенерировано с помощью метода LCD160CR.rgb(). • LCD160CR.get_pixel(x, y) – считывает 16-битное значение заданного пикселя. • LCD160CR.get_line(x, y, buf) – низкоуровневый метод, считывающий линию пикселей в заданный буфер buf. Чтобы прочесть n пикселей, размер буфера buf должен быть 2*n+1. Первый байт – это байт-пустышка, который должен быть проигнорирован, а все последующие байты – это пиксели в линии, начиная с координат x и y). • LCD160CR.screen_dump(buf, x=0, y=0, w=None, h=None) – загружает содержимое экрана в буфер buf. В аргументах x и y задаются начальные координаты, а в w и h – размер считываемого региона. Если в w и h будет задано None, то в них будут заданы максимальные значения (размер экрана минус значения в x и y). Размер буфера buf должен быть достаточно велик, чтобы вместить 2*w*h байтов. Если он меньше, то будут сохранены только начальные горизонтальные линии. • LCD160CR.screen_load(buf) – загружает на экран данные из буфера buf.

Методы для рисования текста

Чтобы нарисовать текст, необходимо задать его позицию, цвет и шрифт, а затем воспользоваться методом LCD160CR.write(). • LCD160CR.set_pos(x, y) – задает позицию для текста, который затем будет нарисован с помощью LCD160CR.write(). Координаты x и y – это левый верхний угол рисуемого текста. • LCD160CR.set_text_color(fg, bg) – задает основной и фоновый цвета текста. • LCD160CR.set_font(font, scale=0, bold=0, trans=0, scroll=0) – задает шрифт текста. Все последующие вызовы write() будут использовать шрифт, заданный этим методом. В методе set_font() используются следующие аргументы: o font – шрифтовое семейство, которым надо воспользоваться. Допустимые значения: «0», «1», «2», «3». o scale – масштабирующее значение для каждого символьного пикселя. При этом пиксель рисуется квадратом, размер стороны которого составляет scale + 1. Допустимые значения: от «0» до «63». o bold – здесь задается количество дополнительных пикселей для каждого символьного пикселя. Это позволяет создать эффект жирного текста. Два самых младших бита в bold – это количество дополнительных пикселей в горизонтальном направлении, а два следующих бита – это количество дополнительных пикселей в вертикальном направлении. Например, если задать в bold значение «5», это нарисует по одному дополнительному пикселю и в горизонтальном, и в вертикальном направлениях. o trans – здесь может быть «0» или «1». Если задать «1», символы будут нарисованы с прозрачным фоном. o scroll – здесь может быть «0» или «1». Если задать тут «1», то при перемещении к следующей строчке текста будет выполнена плавная прокрутка. • LCD160CR.write(s) – рисует текст на экране, используя текущие настройки позиции, цвета и шрифта. После того, как текст будет нарисован, показатель позиции будет автоматически увеличен. Дисплей LCD160CR поддерживает базовые коды управления VT100, в числе которых, например, символы новой строки и возврата на шаг назад со стиранием (Backspace).

Методы для рисования примитивных фигур

Эти методы используют основной и фоновый цвета, заданные с помощью метода set_pen(). • LCD160CR.set_pen(line, fill) – задает цвет контура и заливки для примитивных фигур. • LCD160CR.erase() – окрашивает весь экран в цвет заливки, задаваемый с помощью метода set_pen(). • LCD160CR.dot(x, y) – рисует на заданной позиции один пиксель при помощи цвета контура, задаваемого с помощью метода set_pen(). • LCD160CR.rect(x, y, w, h), LCD160CR.rect_outline(x, y, w, h), LCD160CR.rect_interior(x, y, w, h) – рисуют на заданной позиции (аргументы x и y) прямоугольник заданного размера (аргументы w и h). Для контура используется, соответственно, цвет контура, а для внутренней части фигуры – цвет заливки. Метод rect() рисует и контур, и внутреннюю часть, а как rect_outline() и rect_interior() рисуют только что-то одно: первый – контур, второй – внутреннюю часть прямоугольника. • LCD160CR.line(x1, y1, x2, y2) – рисует линию между заданными координатами, используя цвет контура, задаваемый в методе set_pen(). • LCD160CR.dot_no_clip(x, y), LCD160CR.rect_no_clip(x, y, w, h), LCD160CR.rect_outline_no_clip(x, y, w, h), LCD160CR.rect_interior_no_clip(x, y, w, h), LCD160CR.line_no_clip(x1, y1, x2, y2) – эти методы работают аналогично тем, что описаны выше, но никак не отсекают элемент, чьи координаты были заданы в аргументах. Эти методы быстрее своих обрезающих версий, и их можно использовать, когда вы точно знаете, что заданные координаты находятся в пределах экрана. • LCD160CR.poly_dot(data) – рисует группу точек при помощи цвета контура, задаваемого с помощью метода set_pen(). Значением в аргументе data должен быть буфер с байтами, в котором каждая соседняя пара байтов соответствует паре координат x и y. • LCD160CR.poly_line(data) – работает аналогично poly_dot(), но также рисует линии между точками.

Методы для работы с тачскрином

• LCD160CR.touch_config(calib=False, save=False, irq=None) – настраивает тачскрин: o Если в аргументе calib будет задано True, то вызов этого метода запустит калибровку резистивного тактильного датчика. Во время этой калибровки пользователю нужно будет касаться разных участков экрана. o Если в аргументе save будет задано True, то настройки тактильного датчика будут сохранены в NVRAM-память, чтобы ими можно было продолжать пользоваться после сброса или выключения. o Если в аргументе irq будет задано True, то дисплей будет настроен на то, чтобы притянуть IRQ-линию к значению LOW при обнаружении касания. Если в irq будет задано False, эта функция будет отключена. Если в irq будет задано None (это значение по умолчанию), эта настройка не претерпит никаких изменений. • LCD160CR.is_touched() – возвращает булево значение: True – если прямо сейчас экрана что-то касается, False – если нет. • LCD160CR.get_touch() – возвращает 3-элементный кортеж: (active, x, y). Если прямо сейчас экрана что-то касается, в active будет «1», а если нет, то «0». В элементах x и y будет указано место текущего или самого последнего касания.

Методы для продвинутого использования

• LCD160CR.set_spi_win(x, y, w, h) – задает окно, в которое будут записаны SPI-данные. • LCD160CR.fast_spi(flush=True) – подготавливает дисплей к приему пиксельных RGB-данных на SPI-шину, делая так, чтобы позиция первого байта вновь переместилась в левый верхний угол окна, заданного в методе LCD16CR.set_spi_win(). Этот метод возвращает объект SPI, который можно использовать для записи пиксельных данных. Отправляемые пиксели должны быть 16-битными RGB-значениями в формате 5-6-5. Прибытие данных отслеживается с помощью специального счетчика (при каждом прибытии новых данных значение в нем будет увеличиваться), и вы можете отправлять данные любого размера. Когда значение в счетчике достигнет размера окна, заданного в методе LCD160CR.set_spi_win(), оно обнулится до значения, обозначающего верхний левый угол этого окна. • LCD160CR.show_framebuf(buf) – показывает на экране заданный буфер. В аргументе buf должен быть задан массив байтов, содержащий 16-битные пиксельные RGB-значения, и они будут записаны в область, заданную с помощью метода LCD160CR.set_spi_win(), начиная с ее верхнего левого угла. Для создания кадровых буферов можно воспользоваться модулем framebuf. В нем также есть инструментарий для рисования примитивов. При использовании кадрового буфера производительность анимаций лучше, чем при рисовании прямо на экране. • LCD160CR.show_framebuf(buf) – включает и выключает прокрутку. Этот метод глобально управляет прокруткой во всех окнах. • LCD160CR.set_scroll_win(win, x=- 1, y=0, w=0, h=0, vec=0, pat=0, fill=2016, color=0) – настраивает область (окно) экрана для прокрутки: o win – идентификатор окна, которое надо настроить. Окна с идентификаторами 0-7 – это стандартные окна общего назначения, а окно с идентификатором 8 – это окно текстовой прокрутки (бегущая строка). o x, y, w, h – позиция окна на экране. o vec – направление и скорость прокрутки. Это 16-битное значение в формате 0bF.ddSSSSSSSSSSSS. В dd задается направление прокрутки: «0», «1», «2», «3» – для +x, +y, -x, -y. В F задается формат скорости, и «0» будет значить, что окно будет смещаться со скоростью (S % 256) пикселей за кадр, а «1» – что окно будет смещаться на 1 пиксель каждые S кадров. o pat – 16-битная паттерновая маска для фона. o fill – это цвет заливки. o color – это дополнительный цвет (для текста или основной цвет паттерна). • LCD160CR.set_scroll_win_param(win, param, value) – задает один параметр области прокрутки: o win – идентификатор окна (0-8). o param – номер параметра, который надо настроить. Возможные значения: 0-7. Они соответствуют параметрам в методе set_scroll_win(). o value – значение, которое надо задать. • LCD160CR.set_scroll_buf(s) – задает строку для прокрутки в окне 8. В аргументе s должна быть строка размером не более 32 символов. • LCD160CR.jpeg(buf) – показывает JPEG-изображение. В буфере buf должны содержаться данные всего JPEG-изображения. Эти данные не должны содержать EXIF-информацию. Поддерживаются следующие кодировки: Baseline DCT, код Хаффмана, 8 бит на выборку, RGB, YCbCr4:2:2. Начальная точка JPEG-изображения задается с помощью метода LCD160CR.set_pos(). • LCD160CR.jpeg_start(total_len), LCD160CR.jpeg_data(buf) – показывают JPEG-изображение, чьи данные разбросаны по нескольким разным буферам. Вначале нужно один раз вызвать метод jpeg_start(), указав общее количество байт в JPEG-изображении. Затем это количество байтов нужно передать на дисплей при помощи одного или нескольких вызовов метода jpeg_data(). • LCD160CR.feed_wdt() – первый вызов этого метода запустит внутренний сторожевой таймер дисплея. Последующие вызовы будут сбрасывать этот таймер. Продолжительность таймаута – примерно 30 секунд. • LCD160CR.reset() – сбрасывает дисплей.

Константы

• lcd160cr.PORTRAIT, lcd160cr.LANDSCAPE, lcd160cr.PORTRAIT_UPSIDEDOWN, lcd160cr.LANDSCAPE_UPSIDEDOWN – ориентации дисплея, используемые в методе LCD160CR.set_orient(). • lcd160cr.STARTUP_DECO_NONE, lcd160cr.STARTUP_DECO_MLOGO, lcd160cr.STARTUP_DECO_INFO – типы стартовой заставки. Их можно задать вместе по принципу логического ИЛИ при помощи метода LCD160CR.set_startup_deco().

<syntaxhighlight lang="python" enclose="div">

См.также

Внешние ссылки