Залежался у меня тут перевод описания библиотеки 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) здесь.