CraftDuino v2.0
  • - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!

Библиотека 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) здесь.

Комментарии (0)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.