Здравствуйте!
В этой статье вы найдете код программы, который использовался в девятой серии сериала «Не спали свою Ардуинку», а так же схему подключения TFT дисплея 1.8 160*128 пикселей, к Arduino Mega 2560.
Суть девятой серии заключается в том, чтобы показать пример, как создать вот такой индикатор для TFT дисплея. Который может пригодиться для индикации состояния датчиков открытия дверей, окон, состояния электронного замка, для оповещения о постановке, или снятия с охраны сигнализации, да для чего угодно.
Ниже код программы. Он содержит две функции, которые позволяют выводить на TFT дисплей индикатор, сообщающий о состоянии датчика открытия дверей, или датчика открытия окон.
//Начало скетча
#include "TFT.h"
#include "SPI.h"
TFT TFTscreen = TFT(53, 49, 50);//CS, DC, RESET
int i = 0;
void lock(int x_pixel, int y_pixel, int state, char*(text_)){
TFTscreen.stroke(255, 255, 255);
TFTscreen.setTextSize(1);
TFTscreen.text(text_, x_pixel+20, y_pixel+4);
if(state == 0){
TFTscreen.stroke(0, 0, 0);
TFTscreen.rect(x_pixel+6, y_pixel+2, 2, 5);
TFTscreen.rect(x_pixel+7, y_pixel+1, 2, 2);
TFTscreen.rect(x_pixel+8, y_pixel, 4, 2);
TFTscreen.rect(x_pixel+11, y_pixel+1, 2, 2);
TFTscreen.rect(x_pixel+12, y_pixel+2, 2, 5);
TFTscreen.stroke(255, 255, 255);
TFTscreen.rect(x_pixel, y_pixel+2, 2, 5);
TFTscreen.rect(x_pixel+1, y_pixel+1, 2, 2);
TFTscreen.rect(x_pixel+2, y_pixel, 4, 2);
TFTscreen.rect(x_pixel+5, y_pixel+1, 2, 2);
TFTscreen.rect(x_pixel+6, y_pixel+2, 2, 5);
TFTscreen.fill(255, 255, 255);
TFTscreen.rect(x_pixel+5, y_pixel+7, 10, 5);
TFTscreen.stroke(255, 0, 0); //В этой стоке надо цвета поменять местами!
TFTscreen.line(x_pixel+4, y_pixel+12, x_pixel+15, y_pixel+1);
TFTscreen.line(x_pixel+4, y_pixel+13, x_pixel+15, y_pixel+2);
}
if(state == 1){
TFTscreen.stroke(0, 0, 0);
TFTscreen.rect(x_pixel, y_pixel+2, 2, 5);
TFTscreen.rect(x_pixel+1, y_pixel+1, 2, 2);
TFTscreen.rect(x_pixel+2, y_pixel, 4, 2);
TFTscreen.rect(x_pixel+5, y_pixel+1, 2, 2);
TFTscreen.rect(x_pixel+6, y_pixel+2, 2, 5);
TFTscreen.stroke(255, 255, 255);
TFTscreen.rect(x_pixel+6, y_pixel+2, 2, 5);
TFTscreen.rect(x_pixel+7, y_pixel+1, 2, 2);
TFTscreen.rect(x_pixel+8, y_pixel, 4, 2);
TFTscreen.rect(x_pixel+11, y_pixel+1, 2, 2);
TFTscreen.rect(x_pixel+12, y_pixel+2, 2, 5);
TFTscreen.fill(255, 255, 255);
TFTscreen.rect(x_pixel+5, y_pixel+7, 10, 5);
TFTscreen.stroke(255, 0, 0); //В этой стоке надо цвета поменять местами!
TFTscreen.line(x_pixel+4, y_pixel+12, x_pixel+15, y_pixel+1);
TFTscreen.line(x_pixel+4, y_pixel+13, x_pixel+15, y_pixel+2);
}
if(state == 2){
TFTscreen.stroke(0, 0, 0);
TFTscreen.line(x_pixel+4, y_pixel+12, x_pixel+15, y_pixel+1);
TFTscreen.line(x_pixel+4, y_pixel+13, x_pixel+15, y_pixel+2);
TFTscreen.rect(x_pixel, y_pixel+2, 2, 5);
TFTscreen.rect(x_pixel+1, y_pixel+1, 2, 2);
TFTscreen.rect(x_pixel+2, y_pixel, 4, 2);
TFTscreen.rect(x_pixel+5, y_pixel+1, 2, 2);
TFTscreen.rect(x_pixel+6, y_pixel+2, 2, 5);
TFTscreen.stroke(0, 255, 0);
TFTscreen.rect(x_pixel+6, y_pixel+2, 2, 5);
TFTscreen.rect(x_pixel+7, y_pixel+1, 2, 2);
TFTscreen.rect(x_pixel+8, y_pixel, 4, 2);
TFTscreen.rect(x_pixel+11, y_pixel+1, 2, 2);
TFTscreen.rect(x_pixel+12, y_pixel+2, 2, 5);
TFTscreen.fill(0, 255, 0);
TFTscreen.rect(x_pixel+5, y_pixel+7, 10, 5);
}
if(state == 3){
TFTscreen.stroke(0, 0, 0);
TFTscreen.line(x_pixel+4, y_pixel+12, x_pixel+15, y_pixel+1);
TFTscreen.line(x_pixel+4, y_pixel+13, x_pixel+15, y_pixel+2);
TFTscreen.rect(x_pixel+6, y_pixel+2, 2, 5);
TFTscreen.rect(x_pixel+7, y_pixel+1, 2, 2);
TFTscreen.rect(x_pixel+8, y_pixel, 4, 2);
TFTscreen.rect(x_pixel+11, y_pixel+1, 2, 2);
TFTscreen.rect(x_pixel+12, y_pixel+2, 2, 5);
TFTscreen.stroke(255, 0, 0); //В этой стоке надо цвета поменять местами!
TFTscreen.rect(x_pixel, y_pixel+2, 2, 5);
TFTscreen.rect(x_pixel+1, y_pixel+1, 2, 2);
TFTscreen.rect(x_pixel+2, y_pixel, 4, 2);
TFTscreen.rect(x_pixel+5, y_pixel+1, 2, 2);
TFTscreen.rect(x_pixel+6, y_pixel+2, 2, 5);
TFTscreen.fill(255, 0, 0); //В этой стоке надо цвета поменять местами!
TFTscreen.rect(x_pixel+5, y_pixel+7, 10, 5);
}
}
void setup()
{
TFTscreen.begin();
TFTscreen.background(0,0,0);
}
void loop() {
lock(2, 20, i, "Line 1");
lock(2, 40, 3, "Line 2");
lock(2, 60, 2, "Line 3");
lock(2, 80, 1, "Line 4");
lock(2, 100, 0, "Line 5");
i++; if(i > 3){ i = 0;}
delay(2000);
}
//Конец скетча
А это схема подключения SPI TFT дисплея 1.8 160*128 пикселей, к Arduino Mega 2560.