MicroPython:Библиотеки/lcd160cr: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
 
(не показано 15 промежуточных версий 1 участника)
Строка 3: Строка 3:
{{Myagkij-редактор}}
{{Myagkij-редактор}}


=Модуль lcd160cr – управление дисплеем LCD160CR<ref>[http://docs.micropython.org/en/latest/library/lcd160cr.html docs.micropython.org - ]</ref>=
=Модуль lcd160cr – управление дисплеем LCD160CR<ref>[http://docs.micropython.org/en/latest/library/lcd160cr.html docs.micropython.org - lcd160cr — control of LCD160CR display]</ref>=


В этом модуле реализовано управление дисплеем [[MicroPython]] [[LCD160CR]].
В этом модуле реализовано управление дисплеем [[MicroPython]] [[LCD160CR]].
Строка 17: Строка 17:
Например:
Например:


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


Строка 43: Строка 43:
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.w|LCD160CR.w]]
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.w|LCD160CR.w]]
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.h|LCD160CR.h]]
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.h|LCD160CR.h]]
* [[MicroPython:Библиотеки/lcd160cr/
* [[MicroPython:Библиотеки/lcd160cr/
* [[MicroPython:Библиотеки/lcd160cr/
* [[MicroPython:Библиотеки/lcd160cr/
* [[MicroPython:Библиотеки/lcd160cr/
• LCD160CR.w, LCD160CR.h – это ширина и высота дисплея соответственно (в пикселях). Значения в этих элементах обновляются при вызове LCD160CR.set_orient(). Их нужно использовать только для чтения.


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


LCD160CR.set_power(on) – включает или выключает дисплей в зависимости от значения в аргументе on. Если в нем задано «0» или False, дисплей будет выключен, а если «1» или True – включен.
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.set_power()|LCD160CR.set_power(on)]]
LCD160CR.set_orient(orient) – задает ориентацию экрана. В аргументе orient могут быть следующие значения: PORTRAIT, LANDSCAPE, PORTRAIT_UPSIDEDOWN, LANDSCAPE_UPSIDEDOWN.  
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.set_orient()|LCD160CR.set_orient(orient)]]
LCD160CR.set_brightness(value) – задает яркость экрана (между «0» и «31»).
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.set_brightness()|LCD160CR.set_brightness(value)]]
LCD160CR.set_i2c_addr(addr) – задает I2C-адрес дисплея. Два самых младших бита в аргументе addr должны быть нулями.
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.set_i2c_addr()|LCD160CR.set_i2c_addr(addr)]]
LCD160CR.set_uart_baudrate(baudrate) – задает скорость передачи данных UART-интерфейса.
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.set_uart_baudrate()|LCD160CR.set_uart_baudrate(baudrate)]]
LCD160CR.set_startup_deco(value) – задает стартовую картинку на экране. Значение в аргументе value может быть логическим или STARTUP_DECO_NONE, STARTUP_DECO_MLOGO, STARTUP_DECO_INFO.
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.set_startup_deco()|LCD160CR.set_startup_deco(value)]]
LCD160CR.save_to_flash() – сохраняет на flash-память следующие параметры (чтобы потом снова воспользоваться ими при запуске/перезапуске): стартовую картинку, ориентацию, яркость, скорость UART-коммуникации и I2C-адрес дисплея.
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.save_to_flash()|LCD160CR.save_to_flash()]]


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


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


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


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


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


Эти методы используют основной и фоновый цвета, заданные с помощью метода set_pen().
Эти методы используют основной и фоновый цвета, заданные с помощью метода set_pen().
LCD160CR.set_pen(line, fill) – задает цвет контура и заливки для примитивных фигур.
 
LCD160CR.erase() – окрашивает весь экран в цвет заливки, задаваемый с помощью метода set_pen().
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.set_pen()|LCD160CR.set_pen(line, fill)]]
LCD160CR.dot(x, y) – рисует на заданной позиции один пиксель при помощи цвета контура, задаваемого с помощью метода set_pen().
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.erase()|LCD160CR.erase()]]
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() рисуют только что-то одно: первый – контур, второй – внутреннюю часть прямоугольника.
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.dot()|LCD160CR.dot(x, y)]]
LCD160CR.line(x1, y1, x2, y2) – рисует линию между заданными координатами, используя цвет контура, задаваемый в методе set_pen().
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.rect()|LCD160CR.rect(x, y, w, h)]]
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) – эти методы работают аналогично тем, что описаны выше, но никак не отсекают элемент, чьи координаты были заданы в аргументах. Эти методы быстрее своих обрезающих версий, и их можно использовать, когда вы точно знаете, что заданные координаты находятся в пределах экрана.
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.rect_outline()|LCD160CR.rect_outline(x, y, w, h)]]
LCD160CR.poly_dot(data) – рисует группу точек при помощи цвета контура, задаваемого с помощью метода set_pen(). Значением в аргументе data должен быть буфер с байтами, в котором каждая соседняя пара байтов соответствует паре координат x и y.
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.rect_interior()|LCD160CR.rect_interior(x, y, w, h)]]
LCD160CR.poly_line(data) – работает аналогично poly_dot(), но также рисует линии между точками.
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.line()|LCD160CR.line(x1, y1, x2, y2)]]
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.dot_no_clip()|LCD160CR.dot_no_clip(x, y)]]
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.rect_no_clip()|LCD160CR.rect_no_clip(x, y, w, h)]]
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.rect_outline_no_clip()|LCD160CR.rect_outline_no_clip(x, y, w, h)]]
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.rect_interior_no_clip()|LCD160CR.rect_interior_no_clip(x, y, w, h)]]
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.line_no_clip()|LCD160CR.line_no_clip(x1, y1, x2, y2)]]
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.poly_dot()|LCD160CR.poly_dot(data)]]
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.poly_line()|LCD160CR.poly_line(data)]]


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


LCD160CR.touch_config(calib=False, save=False, irq=None) – настраивает тачскрин:
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.touch_config()|LCD160CR.touch_config(calib=False, save=False, irq=None)]]
o Если в аргументе calib будет задано True, то вызов этого метода запустит калибровку резистивного тактильного датчика. Во время этой калибровки пользователю нужно будет касаться разных участков экрана.
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.is_touched()|LCD160CR.is_touched()]]
o Если в аргументе save будет задано True, то настройки тактильного датчика будут сохранены в NVRAM-память, чтобы ими можно было продолжать пользоваться после сброса или выключения.
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.get_touch()|LCD160CR.get_touch()]]
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-данные.
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.set_spi_win()|LCD160CR.set_spi_win(x, y, w, h)]]
LCD160CR.fast_spi(flush=True) – подготавливает дисплей к приему пиксельных RGB-данных на SPI-шину, делая так, чтобы позиция первого байта вновь переместилась в левый верхний угол окна, заданного в методе LCD16CR.set_spi_win(). Этот метод возвращает объект SPI, который можно использовать для записи пиксельных данных.
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.fast_spi()|LCD160CR.fast_spi(flush=True)]]
Отправляемые пиксели должны быть 16-битными RGB-значениями в формате 5-6-5. Прибытие данных отслеживается с помощью специального счетчика (при каждом прибытии новых данных значение в нем будет увеличиваться), и вы можете отправлять данные любого размера. Когда значение в счетчике достигнет размера окна, заданного в методе LCD160CR.set_spi_win(), оно обнулится до значения, обозначающего верхний левый угол этого окна.
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.show_framebuf()|LCD160CR.show_framebuf(buf)]]
LCD160CR.show_framebuf(buf) – показывает на экране заданный буфер. В аргументе buf должен быть задан массив байтов, содержащий 16-битные пиксельные RGB-значения, и они будут записаны в область, заданную с помощью метода LCD160CR.set_spi_win(), начиная с ее верхнего левого угла.
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.set_scroll()|LCD160CR.set_scroll(on)]]
Для создания кадровых буферов можно воспользоваться [http://docs.micropython.org/en/latest/library/framebuf.html модулем framebuf]. В нем также есть инструментарий для рисования примитивов. При использовании кадрового буфера производительность анимаций лучше, чем при рисовании прямо на экране.
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.set_scroll_win()|LCD160CR.set_scroll_win(win, x=- 1, y=0, w=0, h=0, vec=0, pat=0, fill=2016, color=0)]]
LCD160CR.show_framebuf(buf) – включает и выключает прокрутку. Этот метод глобально управляет прокруткой во всех окнах.
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.set_scroll_win_param()|LCD160CR.set_scroll_win_param(win, param, value)]]
LCD160CR.set_scroll_win(win, x=- 1, y=0, w=0, h=0, vec=0, pat=0, fill=2016, color=0) – настраивает область (окно) экрана для прокрутки:
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.set_scroll_buf()|LCD160CR.set_scroll_buf(s)]]
o win – идентификатор окна, которое надо настроить. Окна с идентификаторами 0-7 – это стандартные окна общего назначения, а окно с идентификатором 8 – это окно текстовой прокрутки (бегущая строка).
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.jpeg()|LCD160CR.jpeg(buf)]]
o x, y, w, h – позиция окна на экране.
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.jpeg_start()|LCD160CR.jpeg_start(total_len)]]
o vec – направление и скорость прокрутки. Это 16-битное значение в формате 0bF.ddSSSSSSSSSSSS. В dd задается направление прокрутки: «0», «1», «2», «3» – для +x, +y, -x, -y. В F задается формат скорости, и «0» будет значить, что окно будет смещаться со скоростью (S % 256) пикселей за кадр, а «1» – что окно будет смещаться на 1 пиксель каждые S кадров.
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.jpeg_data()|LCD160CR.jpeg_data(buf)]]
o pat – 16-битная паттерновая маска для фона.
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.feed_wdt()|LCD160CR.feed_wdt()]]
o fill – это цвет заливки.
* [[MicroPython:Библиотеки/lcd160cr/LCD160CR.reset()|LCD160CR.reset()]]
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().
* [[MicroPython:Библиотеки/lcd160cr/lcd160cr.PORTRAIT|lcd160cr.PORTRAIT]]
lcd160cr.STARTUP_DECO_NONE, lcd160cr.STARTUP_DECO_MLOGO, lcd160cr.STARTUP_DECO_INFO – типы стартовой заставки. Их можно задать вместе по принципу логического ИЛИ при помощи метода LCD160CR.set_startup_deco().
* [[MicroPython:Библиотеки/lcd160cr/lcd160cr.LANDSCAPE|lcd160cr.LANDSCAPE]]
* [[MicroPython:Библиотеки/lcd160cr/lcd160cr.PORTRAIT_UPSIDEDOWN|lcd160cr.PORTRAIT_UPSIDEDOWN]]
* [[MicroPython:Библиотеки/lcd160cr/lcd160cr.LANDSCAPE_UPSIDEDOWN|lcd160cr.LANDSCAPE_UPSIDEDOWN]]
* [[MicroPython:Библиотеки/lcd160cr/lcd160cr.STARTUP_DECO_NONE|lcd160cr.STARTUP_DECO_NONE]]
* [[MicroPython:Библиотеки/lcd160cr/lcd160cr.STARTUP_DECO_MLOGO|lcd160cr.STARTUP_DECO_MLOGO]]
* [[MicroPython:Библиотеки/lcd160cr/lcd160cr.STARTUP_DECO_INFO|lcd160cr.STARTUP_DECO_INFO]]


<syntaxhighlight lang="python" enclose="div">
=См.также=
=См.также=



Текущая версия от 19:52, 23 мая 2023

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


Модуль 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 ниже открыты для общего доступа:

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

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

С помощью методов ниже осуществляется управление отдельными пикселями на экране:

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

Чтобы нарисовать текст, необходимо задать его позицию, цвет и шрифт, а затем воспользоваться методом LCD160CR.write().

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

Эти методы используют основной и фоновый цвета, заданные с помощью метода set_pen().

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

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

Константы

См.также

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