Библиотека GLCD


Залежался у меня тут перевод описания библиотеки GLCD (Graphical LCD), может кому полезно будет.

Итак, посмотрим какие функции имеются у нас в распоряжении.

Init()
Инициализация и очистка дисплея. Должна вызывается в setup-е до вызова каких-либо других функций библиотеки.

GLCD.Init() ; //инциализовать для рисования зажиганием пикселей (обычный вывод)
GLCD.Init(NON-INVERTED) ;  // тоже самое
GLCD.Init(INVERTED) ; // инциализовать для рисования выключением пикселей (инверсный вывод)

SetDisplayMode()
Устанавливает графический режим — нормальный или инверсный

GLCD.SetDisplayMode(NON_INVERTED); // устанавливает нормальный режим
GLCD.SetDisplayMode(INVERTED);  // устанавливает инверсный режим

ClearScreen()
Очистка экрана (от 0,0 до GLCD.Width-1,GLCD.Height-1)

GLCD.ClearScreen();   // погасить все пиксели  (если режим NORMAL , если INVERTED - зажечь)
GLCD.ClearScreen(WHITE); // тоже самое
GLCD.ClearScreen( BLACK);   // зажечь все пиксели

ReadData()
Читает байт данных (8 пикселей) начиная с текущей позиции

GLCD.ReadData(); 

См. также GotoXY();

WriteData()
Записывает байт данных (8 пикселей) начиная с текущей позиции

GLCD.WriteData( data);

Функции рисования

Система координат

0,0 — верхний левый угол экрана
GLCD.Width — ширина дисплея в пикселях
GLCD.height — высота дисплея в пикселях
GLCD.Right — крайний правый пиксель (тоже что и GLCD.Width-1)
GLCD.Bottom нижний пиксель (тоже что и GLCD.Height-1)
GLCD.CenterX — центр по горизонтали (тоже что и GLCD.Width/2)
GLCD.CenterY — центр по вертикали (тоже что и GLCD.Height/2)

Цвета=)
Тут немного — всего два
BLACK — зажжённый пиксель WHITE — потушенный
BLACK — «цвет» по умолчанию

GotoXY()
Переместить «курсор» в указанные координаты

GLCD.GotoXY(x,y);

x – значение от 0 доGLCD.Width-1
y — значение от 0 до GLCD.Height-1

SetDot()
Рисует/стирает пиксель в текущей позиции

GLCD.SetDot(x,y, BLACK); // нарисовать пиксель в  x,y
GLCD.SetDot(x,y, WHITE); // стереть пиксель в  x,y

x – значение от 0 доGLCD.Width-1
y — значение от 0 до GLCD.Height-1

DrawVLine()
Рисует вертикальную линию

GLCD.DrawVertLine(x, y,  height);  // рисует линию из  x,y  в x, y + height
GLCD.DrawVertLine(x, y,  height, BLACK);  // то же
GLCD.DrawVertLine(x, y,  height, WHITE);  //то же но "стирание" линией

x – значение от 0 доGLCD.Width-1
y — значение от 0 до GLCD.Height-1
height – значение от 1 до GLCD.Height-y-1
BLACK или WHITE необязательные параметры «цвета» пикселя, по умолчанию BLACK

DrawHLine()
Рисует горизонтальную линию

GLCD.DrawHoriLine(x, y,  width);   // рисует линию из  x,y  в  x + width , y
GLCD.DrawHoriLine(x, y,  width, BLACK);   // то же
GLCD.DrawHoriLine(x, y,  width, WHITE);	// то же но "стирание" линией

x – значение от 0 до GLCD.Width-1
y — значение от 0 до GLCD.Height-1
width– значение от 1 до GLCD.Width-x-1
BLACK или WHITE необязательные параметры «цвета» пикселя, по умолчанию BLACK

DrawLine()
Рисует линию между двумя точками

GLCD.DrawLine( x1,  y1,  x2,  y2);   // рисует линию из  x1,y1 в x2,y2
GLCD.DrawLine( x1,  y1,  x2,  y2, BLACK);  // то же
GLCD.DrawLine( x1,  y1,  x2,  y2, WHITE);  //  то же но "стирание" линией

x1 – значение от 0 до GLCD.Width-1 начальная x координата
y1 — значение от 0 до GLCD.Height-1 начальная y координата
x2 – значение от 0 до GLCD.Width-1 конечная x координата
y2 — значение от 0 до GLCD.Height-1 конечная y координата
BLACK или WHITE необязательные параметры «цвета» пикселя, по умолчанию BLACK

DrawRect()
Рисует прямоугольник заданной ширины и высоты
x,y это верхняя левая точка
Нижняя правая точка x+width, y+height
!Длина горизонтальной стороны будет width+1пиксель, вертикальной — height+1пиксель

GLCD.DrawRect( x, y,  width,  height);    // рисует прямоугольник заданной ширины и высоты из  x,y
GLCD.DrawRect( x, y,  width,  height, BLACK);  	// то же
GLCD.DrawRect( x, y,  width,  height, WHITE);   // то же но "стирание" прямоугольником

x, y – стартовые координаты
width, height – ширина и высота прямоугольника

FillRect()
Заливает «внутренности» прямоугольника заданной ширины и высоты
левая сторона- x , правая — x + width — 1
верхняя y нижняя y + height — 1.
Получающийся прямоугольник покрывает область высотой height и шириной width начиная с x,y, по умолчанию «цвет» — BLACK

GLCD.FillRect( x, y,  width,  height); 	// заливка
GLCD.FillRect( x, y,  width,  height, BLACK); 	// то же самое
GLCD.FillRect( x, y,  width,  height, WHITE); 	// то же но "стирание" заливкой

x, y – стартовые координаты
width, height – ширина и высота прямоугольника

InvertRect()
Инвертирует рисунок (зажигает погашенные пиксели и тушит включенные) в выбранной прямоугольной области
левая сторона- x , правая — x + width — 1
верхняя y нижняя y + height — 1.

GLCD.InvertRect( x, y,  width,  height); 

То же что и в FillRect, только без «цвета»

DrawRoundRect()
Рисует прямоугольник с закруглёнными краями

GLCD.DrawRoundRect( x, y,  width,  height, radius);  //рисует прямоугольник с краями закруглёнными радиусом  radius.
GLCD.DrawRoundRect( x, y,  width,  height, radius, BLACK);  // то же самое
GLCD.DrawRoundRect( x, y,  width,  height, radius, WHITE);  // то же, но "стирание"

x, y, width, height – то же что и в DrawRect
radius- значение от 1 до половины width или height.

DrawCircle
Рисует окружность с заданным центром и радиусом
окружность будет помещатся в кадратную область с координатами вершин: x-radius,y-radius и x+radius,y+radius
Помните что окружность рисуется из центрального пикселя и будет иметь диаметр 2 * radius +1пиксель.

GLCD.DrawCircle( x, y,  r);  // рисует окружность из  x,y с радиусом r
GLCD.DrawCircle( x, y,  r, BLACK);  // то же
GLCD.DrawCircle( x, y,  r, WHITE);  // то же но "стирание" окружностью

x – значение от 0 до GLCD.Right (GLCD.Width-1)
y — значение от 0 доGLCD.Bottom (GLCD.Height-1)
radius — значение от 1 до половины высоты (ширины) описанного квадрата

FillCircle()
Рисует заливку окружности с заданным центром и радиусом
Синтаксис и параметры см. в DrawCircle

DrawBitmap()
Рисует картинку с верхним левым краем в x,y
Картинка хранится в памяти программ (Flash)
Утилита для конвертации BMP-шек в h-файлы, glcdMakeBimtap, лежит в glcd\bitmaps\utils\Java.

GLCD.DrawBitmap(*bitmap, x, y);
GLCD.DrawBitmap(*bitmap, x, y,  BLACK);  // то же
GLCD.DrawBitmap(*bitmap, x, y,  WHITE);  // то же, но инверсными пикселями

Текстовые функции

SelectFont()
Выбирает шрифта как текущего. Последующие функции вывода текста будут использовать этот шрифт. Шрифты хранится в памяти программ (Flash), можно запихать во флэш несколько шрифтов и переключатся с помощью этой функции.

GLCD.SelectFont( font) ;
GLCD.SelectFont( font, BLACK)  // то же
GLCD.SelectFont( font, WHITE)  // то же но инверсными пикселями

SetFontColor()
Устанавливает «цвет» текущего шрифта

GLCD.SetFontColor( BLACK)   // печатаем "цветом" BLACK
GLCD.SetFontColor( WHITE)  // печатаем "цветом" WHITE

SetTextMode()
Устанавливает режим скроллинга текста

GLCD.SetTextMode(SCROLL_UP)   // нормальное скролирование - строки старого текста, поднимаются
GLCD.SetTextMode(SCROLL_DOWN)  //реверсивный скролинг - строки старого текста опускаются

ClearArea()
Очищает текущую текстовую область используя цвет фона текущего шрифта. курсор устанавливается в верхний левый угол.

GLCD.ClearArea();

EraseTextLine(row)
Стирает весь текст в данной строке текстовой области, перемещает курсор влево.

EraseTextLine()
Стирает текст в текущей строке, по умолчанию — от курсора и до конца строки

GLCD.EraseTextLine();  // стирает от курсора до конца строки
GLCD.EraseTextLine(eraseTO_EOL);  // то же
GLCD.EraseTextLine(eraseFROM_BOL);  // стирает с начала сторки до курсора
GLCD.EraseTextLine(eraseFULL_LINE);  // стирает строку целиком 

CursorTo()
Перемещает курсор в данную строку и столбец.Если используются шрифты разных ширин, столбец вычисляется используя самый широкий символ

GLCD.CursorTo(column, row);

CursorToXY()
Описание: перемещает текстовый курсор в точку с координатами x, y относительно верхнего левого угла.

GLCD.CursorToXY(x,y);

DrawString(str, x, y);
Описание: печатает текущую сроку начиная с данных координат. Координаты — относительно текстовой области, используйте текстовую область на весь экран, если хотите использовать глобальные координаты, как в графических функциях.

DrawString_P(ProgMemString, x, y);
То же что выше, но строка определена в памяти программ (flash)

Функции печати Arduino

Все Ардуиновские функции вывода могут быть использованы в этой библиотеке см:
http://www.arduino.cc/en/Serial/Print
Функции работают с любым выбранным шрифтом
Все эти функции печатают от текущей позиции курсора (см. GotoXY и CursorTo)

GLCD. print(character);  // печатает символ с текущей позиции курсора
GLCD. print(integer);  // печатает десятичное значение целого числа
GLCD. print(integer,DEC); // то же
GLCD. print(integer, HEX);  // печатает шестнацетиричное значение целого числа
GLCD. print(integer, OCT);  //  печатает восьмеричное значение целого числа
GLCD. print(integer, BIN);  //  печатает двоичное значение целого числа
GLCD. print(integer, BYTE); // печатает ASCII символ представленный целым числом
GLCD. print(float);  //печатает вещественное число с двумя знаками после запятой.
GLCD. print(float, digits);  //печатает вещественное число с данным числом знаков после запятой
GLCD. print(string);  // печатает строку

println тоже можно использовать.

GLCD. println(variable); //напечатает значение в ASCII, и перейдён а следующую строку.
Печать строк довольно сильно жрёт оперативную память=\ Можно использовать префикс flashStr - это  заставит компилятор использовать память программ для хранения строк.
GLCD. print("string") ;  // строка хранится в RAM-е - компилятор зарезервирует 7 байт (длинна строки +1)
GLCD. print(flashStr("string") );  //строка хранится во флэше, оперативка не тронута
GLCD. println(flashStr("another string") );  // то же но после печати курсор перейдёт на новую строку

Текстовые области

Все описанные текстовые функции применимы к выбранной прямоугольной области экрана, называемой текстовая область.
Текстовые области работают как виртуальный терминал ограниченный прямоугольником заданным командой DefineArea.
Напимер:

gText  textTop = gText(textAreaTOP); // создаёт текстовую область в верхней половине экрана
gText  myTextArea = gText(GLCD.CenterX-16, GLCD.CenterY -16, GLCD.CenterX +16, GLCD.CenterY+16);
// создаёт текстовую область(32х32пикселя) в центре экрана

Все текстовые функции работают с текстовыми областями, используя их имя вместо «GLCD»
Например:

textTop.SelectFont(System5x7); // выбать шрифт "System5x7" для текстовой области с именем “textTop”
textTop.println(“a line of text”); // вывести строку "a line of text" в эту область

Текстовые области создаются используя один из методов Define Area описанных ниже

DefineArea()
Определяет прямоугольную область для вывода текста.
Область может быть задана используя: предопределённую область, область определённую данным количеством строк и столбцов данного шрифта, задание координат верхней левой и нижней провой точки.

DefineArea( preDefinedArea, scrollDirection);  // создать текстовую область используя одну из предопределённых областей с заданым направлением скролирования.

Предопределённые области могут быть следующими:

textAreaFULL,
textAreaTOP,
textAreaBOTTOM,
textAreaLEFT,
textAreaRIGHT,
textAreaTOPLEFT,
textAreaTOPRIGHT,
textAreaBOTTOMLEFT,
textAreaBOTTOMRIGHT.

Направление скролирования может быть SCROLL_UP или SCROLL_DOWN, если не указывать будет — SCROLL_UP.

DefineArea( x1, y1, columns, rows, font, scrolldirection);

То же что выше, но верхний левый угол определён координатами, а высота и ширина области определена числом символов(столбцов) и строк данного шрифта. Для шрифтов с переменной шириной символов, ширина будет определятся самым широким символом используемого шрифта.

DefineArea( x1, y1, x2, y2, scrolldir);

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

Расширенные функции печати

printFlash()
Выделяет и печатает строку во флеше (памяти программ)

GLCD.printFlash(string);

printFlashln()
То же что и выше но курсор перейдёт на следующую строку

GLCD.printFlashln( string);

Printf ()
Печатает последовательность данных форматированных согласно аргументам.
Использует стандартные printf() форматирующие % теги, только вещественные числа не поддерживаются.

GLCD.Printf( format,  arguments …);

Printf_P ()
Тоже что и Printf выше, но строка хранится во флеше вместо оперативки.

GLCD.Printf_P( format,  arguments …);

CharWidth()
Возвращает ширину (в пикселях) данного символа включая всё, что между символами.

byte width =  GLCD. CharWidth(c);

StringWidth()
Возвращает ширину (в пикселях) данной строки в текущем шрифте

byte width =  GLCD. StringWidth(string);

StringWidth_P()
Возвращает ширину (в пикселях) данной строки хранящейся в памяти программ

Ссылки:
Библиотека — на googlecode, или у нас.
Оригинал, про библиотеку — в конце.
Про подключение графических дисплеев (на базе ks0107/ks0108) здесь.


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

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Arduino Bluetooth CraftDuino DIY Google IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение