Това е графичен LCD екран със запоен модул за управление чрез серийна комуникация. Освен да изписва текст по екрана, модулът може да изчертава линии, правоъгълници и кръгове, да изчиства определена част от екрана, да контролира осветеността му и да я инвертира.
Характеристики
По дейташит модулът се захранва с напражение 6 - 7V на пин Vin, но са му достатъчни и 5V от Arduino. Модулът може да се захрани и с 9V напрежение, но осветеността трябва да се намали, за да се предотврати претоварване на вградения регулатор.
Серийната комуникация се осъществява чрез пин Rx и има следните характеристики: 115,200bps , 8 data bits, 1 stop bit, no parity. Скоростта може да се променя на 4800, 9600, 19200, 38400 и 57400 чрез специална команда Пин Tx не се използва от потребители.
Комуникация
Комуникацията с Arduino е лесна, тъй като са налични готови функции. Наличните в Arduino софтуера функции са следните:
Serial.begin(115200); // Започва серийна комуникация // със скорост 115200 Serial.print("Hello world."); // Изпраща стринг от символи Serial.print(data); // Изпраща стойността на променливата // като ASCII символ Serial.write(val); // Изпраща стойността на променливата // като двоичен код Serial.write(buf, len); // Изпраща байт по байт елементите // на масива buf, с размер len
Специални команди
Модулът поддържа специални команди, които се изпращат като последователни байтове. Стойността им за всяка команда е дадена в таблицата.
Clear Screen | 0x7C 0x00 | Изчиства екрана |
Demo code | 0x7C 0x04 | Демонстрационен текст |
Reverse Mode | 0x7C 0x12 | Обръща осветеността |
Duty Cycle | 0x7C 0x02 0x32 | Задава осветеност 0x32 |
Set X Coordinates | 0x7C 0x18 0x50 | Задава позиция 0x50 хоризонтално |
Set Y Coordinates | 0x7C 0x19 0x10 | Задава позиция 0x10 вертикално |
Draw Line | 0x7C 0x0C 0x00 0x0A 0x32 0x3C 0x01 | Чертае линия между точките с координати (0x00,0x0A) и (0x32,0x3C) |
Draw Circle | 0x7C 0x03 0x50 0x40 0x0A 0x01 | Чертае окръжност с център (0x50,0x40) и радиус 0x0A |
Draw Box | 0x7C 0x0F 0x00 0x0A 0x32 0x3C 0x01 | Чертае правоъгълник с диагонал между точките (0x00,0x0A) и (0x32,0x3C) |
Erase Block | 0x7C 0x05 0x00 0x0A 0x32 0x3C | изтрива полето с диагонал от точките (0x00,0x0A) и (0x32,0x3C) |
Свързване
Дисплеят се свързва към Arduino по следният начин:
Vin -> 5V GND -> GND RX -> pin1 (TX)
Пример
Дисплея се свързва към Arduino по описания начин и от Serial Monitor се изпращат символи. Символите се изписват на указаната за това позиция от екрана.
/* Описание: * комуникира с графичен LCD дисплей по серийна комуникация * изчиства екрана, задава осветеност, чертае линия и задава позиция за писане * получава символи от Serial Monitor и ги извежда на LCD екрана Свързване: * VIN -> 5V * GND -> GND * RX -> pin1 (TX) * Tihomir Trifonov (09-2011) * email:tisho@inbox.com * с подкрепата на Robotev.com */ byte clr[2] = {0x7C,0x00}; // команда за изчистване на екрана byte duty[3] = {0x7C, 0x02,0x64}; // осветеност на 100% byte line[7] = {0x7C, 0x0C,0x00,0x2D,0x7E,0x2D,0x01}; // линия byte x[3] = {0x7C, 0x18, 0x01}; // координати по x byte y[3] = {0x7C, 0x19, 0x29}; // координати по у char data = 0; // входни данни void setup() { // начални инициализации Serial.begin(115200); // стартира серийна комуникация Serial.write(clr,2); // изчиства екрана Serial.write(duty,3); // променя осветеността Serial.write("Write sth in Serial Monitor & press 'Send'"); // извежда изречението на екрана Serial.write(line,7); // чертае линия Serial.write(x,3); // задава x координата Serial.write(y,3); // задава y координата } void loop() { // програмен цикъл if (Serial.available() > 0) { // проверява за изпратен символ data = Serial.read(); // получава символа Serial.print(data); // извежда го на екрана } } |