Лучший симулятор Arduino UnoArduSim V2.8.2 Девятая серия. Индикатор состояния датчика открытия дверей.

Здравствуйте!

В этой статье вы найдете код программы, который использовался в девятой серии сериала «Не спали свою Ардуинку», а так же схему подключения TFT дисплея 1.8 160*128 пикселей, к Arduino Mega 2560.

Суть девятой серии заключается в том, чтобы показать пример, как создать вот такой индикатор для TFT дисплея. Который может пригодиться для индикации состояния датчиков открытия дверей, окон, состояния электронного замка, для оповещения о постановке, или снятия с охраны сигнализации, да для чего угодно.

Индикатор датчика открытия дверей или окон, для проектов сигнализаций на Arduino и TFT дисплея 1.8 160*128 пикселей.

Ниже код программы. Он содержит две функции, которые позволяют выводить на 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.

Схема подключения SPI TFT дисплея 1.8 160*128 пикселей, к Arduino Mega 2560





Подробное видео “Лучший симулятор Arduino UnoArduSim V2.8.2 Девятая серия. Индикатор состояния датчика сигнализации.”


Лучший симулятор Arduino UnoArduSim V2.8.2 Девятая серия. Индикатор состояния датчика сигнализации.