Arduino Playground is read-only starting December 31st, 2018. For more info please look at this Forum Post

Arduino и графичен LCD екран

Това е графичен 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);   // извежда го на екрана
	}
}