#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
//#include "FontsRus/FreeSerif8.h"
#include <EEPROM.h>
#include "RTClib.h"
RTC_DS1307 rtc;
#define button_r 34
#define button_y 35
#define buzzer 32
#define TFT_DC 2
#define TFT_CS 15
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
int8_t regim = 0; // режим настроек
int8_t g = 0;
int8_t g1 = 0;
int8_t buz;
int8_t buz_m = 0; // минут для подтверждения захвата
int8_t buz_s = 0;
boolean flag_buz;
long secMillis = 0; // время последнего состояния таймера
long interval = 1000; // интервал таймера
int8_t c_r_m = 0;
int8_t c_r_s = 0;
int8_t c_m_r = 0; // минут до захвата красных
int8_t c_s_r = 0;
int8_t c_y_m = 0;
int8_t c_y_s = 0;
int8_t c_m_y = 0;
int8_t c_s_y = 0;
int8_t red_point = 0;
int8_t yelow_point = 0;
int8_t game = 0;
struct Data {
int8_t c_m_r = 0;
int8_t c_m_y = 0;
int8_t red_point = 0;
int8_t yelow_point = 0;
};
Data data;
void setup() {
Serial.begin(9600);
rtc.begin();
tft.begin();
tft.setRotation(1);
tft.fillScreen(ILI9341_BLACK); // задний фон
pinMode(button_r, INPUT_PULLUP);
pinMode(button_y, INPUT_PULLUP);
pinMode(buzzer, OUTPUT);
digitalWrite(button_r, HIGH);
digitalWrite(button_y, HIGH);
/*
// установка курсора (горизонт, вертикаль)
tft.setCursor(0, 0);
tft.setTextColor(ILI9341_WHITE); // цвет шрифта
tft.setTextSize(1); // высота 7 пикселей
tft.println("Hello World!");
*/
// разворот экрана 0 - прямо, 1 - на 90 по часовой, 2 - на 180 по часовой, 3 - по часовой
tft.setRotation(1);
//tft.setFont(&FreeSerif8pt8b); // выбор шрифта
tft.setCursor(0, 0);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(2); // высота 21 пиксель
tft.println("SELECT");
tft.setCursor(300, 0);
tft.setTextSize(2); // высота 21 пиксель
tft.println(" ");
tft.setCursor(50, 65);
tft.setTextColor(ILI9341_GREEN);
tft.setTextSize(4); // высота 21 пиксель
tft.println("OBJECT 51");
tft.setRotation(1);
//tft.setFont(&FreeSerif8pt8b); // выбор шрифта
tft.setCursor(5, 130);
tft.setTextColor(ILI9341_PURPLE);
tft.setTextSize(4); // высота 21 пиксель
tft.println("AIRSOFT-CHESS");
//void fillRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t color);
boolean vwbor;
do {
vwbor = false;
if (digitalRead(button_r) == LOW && g == 0 && regim < 5) {
regim++;
g = 1;
if (regim > 3) //ограничим количество режимов установка или запуск
{
regim = 1;
}
}
if (digitalRead(button_r) == HIGH && g == 1 && regim < 4)
{
g = 0;
}
if (regim == 1) {
if (g == 1) {
tft.fillScreen(ILI9341_BLACK); // задний фон
}
Serial.println("1");
tft.setRotation(1);
//tft.setFont(&FreeSerif8pt8b); // выбор шрифта
tft.setTextColor(ILI9341_WHITE);
tft.setCursor(10, 10);
tft.setTextSize(2); // высота 21 пиксель
tft.println("SELECT");
tft.setCursor(210, 10);
tft.setTextSize(2); // высота 21 пиксель
tft.println("+5 MINUTE");
tft.setCursor(65, 55);
tft.setTextColor(ILI9341_RED);
tft.setTextSize(3); // высота 21 пиксель
tft.println("CAPTURE");
tft.setCursor(205, 55);
tft.setTextColor(ILI9341_RED);
tft.setTextSize(3); // высота 21 пиксель
tft.println("RED");
if (digitalRead(button_y) == LOW && g == 0 && regim == 1) //если кнопка нажата и перемення g1 равна 0 , то ...
{
c_m_r = c_m_r + 5;
g = 1;
if (c_m_r > 60) //ограничим количество режимов
{
c_m_r = 0;
}
tft.fillScreen(ILI9341_BLACK); // задний фон
}
if (digitalRead(button_y) == HIGH && g == 1) //если кнопка НЕ нажата
//и переменная g1 равна - 1 ,то ...
{
g = 0; //обнуляем переменную "knopka"
}
if (7 > c_m_r > 0) {
tft.setCursor(140, 100);
tft.setTextColor(ILI9341_RED);
tft.setTextSize(10); // высота 21 пиксель
tft.println(c_m_r);
}
if (c_m_r >= 7) {
tft.setCursor(110, 100);
tft.setTextColor(ILI9341_RED);
tft.setTextSize(10); // высота 21 пиксель
tft.println(c_m_r);
}
}
if (regim == 2) {
if (g == 1) {
tft.fillScreen(ILI9341_BLACK); // задний фон
}
Serial.println("2");
tft.setRotation(1);
//tft.setFont(&FreeSerif8pt8b); // выбор шрифта
tft.setTextColor(ILI9341_WHITE);
tft.setCursor(10, 10);
tft.setTextSize(2); // высота 21 пиксель
tft.println("SELECT");
tft.setCursor(210, 10);
tft.setTextSize(2); // высота 21 пиксель
tft.println("+5 MINUTE");
tft.setCursor(40, 55);
tft.setTextColor(ILI9341_YELLOW);
tft.setTextSize(3); // высота 21 пиксель
tft.println("CAPTURE");
tft.setCursor(180, 55);
tft.setTextColor(ILI9341_YELLOW);
tft.setTextSize(3); // высота 21 пиксель
tft.println("YELLOW");
if (digitalRead(button_y) == LOW && g == 0 && regim == 2) //если кнопка нажата и перемення g1 равна 0 , то ...
{
Serial.println("jvbfh");
c_m_y = c_m_y + 5;
g = 1;
if (c_m_y > 60) //ограничим количество режимов
{
c_m_y = 0;
}
tft.fillScreen(ILI9341_BLACK); // задний фон
}
if (digitalRead(button_y) == HIGH && g == 1) //если кнопка НЕ нажата
//и переменная g1 равна - 1 ,то ...
{
g = 0; //обнуляем переменную "knopka"
}
if (7 > c_m_y > 0) {
tft.setCursor(140, 100);
tft.setTextColor(ILI9341_YELLOW);
tft.setTextSize(10); // высота 21 пиксель
tft.println(c_m_y);
}
if (c_m_y > 7) {
tft.setCursor(110, 100);
tft.setTextColor(ILI9341_YELLOW);
tft.setTextSize(10); // высота 21 пиксель
tft.println(c_m_y);
}
}
if (regim == 3) {
if (g == 1) {
tft.fillScreen(ILI9341_BLACK); // задний фон
}
Serial.println("3");
tft.setRotation(1);
//tft.setFont(&FreeSerif8pt8b); // выбор шрифта
tft.setTextColor(ILI9341_WHITE);
tft.setCursor(0, 10);
tft.setTextSize(2); // высота 21 пиксель
tft.println("SELECT");
tft.setCursor(260, 10);
tft.setTextSize(2); // высота 21 пиксель
tft.println("START");
tft.setTextColor(ILI9341_RED);
tft.setCursor(30, 45);
tft.setTextSize(4); // высота 21 пиксель
tft.println("RED");
tft.setCursor(40, 100);
tft.setTextSize(10); // высота 21 пиксель
tft.println(red_point);
tft.setCursor(57, 190);
tft.setTextSize(4);
tft.println(":");
tft.setCursor(80, 190);
tft.setTextSize(4); // высота 21 пиксель
tft.println("00");
if (10 > c_m_r) {
tft.setCursor(8, 190);
tft.setTextSize(4); // высота 21 пиксель
tft.println("0");
tft.setCursor(32, 190);
tft.setTextSize(4); // высота 21 пиксель
tft.println(c_m_r);
}
if (c_m_r >= 10) {
tft.setCursor(8, 190);
tft.setTextSize(4); // высота 21 пиксель
tft.println(c_m_r);
}
tft.setTextColor(ILI9341_YELLOW);
tft.setCursor(170, 190);
tft.setTextSize(4);
tft.println("YELLOW");
tft.setCursor(220, 100);
tft.setTextSize(10);
tft.println(yelow_point);
tft.setCursor(233, 45);
tft.setTextSize(4);
tft.println(":");
tft.setCursor(257, 45);
tft.setTextSize(4);
tft.println("00");
if (10 > c_m_y) {
tft.setCursor(185, 45);
tft.setTextSize(4);
tft.println("0");
tft.setCursor(209, 45);
tft.setTextSize(4);
tft.println(c_m_y);
}
if (c_m_y >= 10) {
tft.setCursor(165, 45);
tft.setTextSize(4);
tft.println(c_m_y);
}
if (digitalRead(button_y) == LOW && g1 == 0 && regim == 3) {
regim = 4;
g1 = 1;
}
}
if (digitalRead(button_y) == HIGH && g1 == 1) //если кнопка НЕ нажата
//и переменная g1 равна - 1 ,то ...
{
g1 = 0; //обнуляем переменную "knopka"tft.setTextColor(ILI9341_RED);
tft.fillRect(0, 0, 320, 180, 1); // задний фон
tft.setTextColor(ILI9341_RED);
tft.setCursor(30, 25);
tft.setTextSize(4); // высота 21 пиксель
tft.println("RED");
tft.setTextColor(ILI9341_YELLOW);
tft.setCursor(233, 25);
tft.setTextSize(4);
tft.println(":");
tft.setCursor(257, 25);
tft.setTextSize(4);
tft.println("00");
if (10 > c_m_y) {
tft.setCursor(185, 25);
tft.setTextSize(4);
tft.println("0");
tft.setCursor(209, 25);
tft.setTextSize(4);
tft.println(c_m_y);
}
if (c_m_y >= 10) {
tft.setCursor(165, 25);
tft.setTextSize(4);
tft.println(c_m_y);
}
tft.setTextColor(ILI9341_WHITE);
tft.setCursor(50, 95);
tft.setTextSize(7); // высота 21 пиксель
tft.println("START");
buz = buz_m;
vwbor = true;
}
datatime();
} while (vwbor == false);
}
void loop() {
if (digitalRead(button_r) == LOW && g == 0 && regim == 4) {
start_point();
game = 1;
g = 1;
c_s_r = 0;
c_r_m = c_m_r;
c_s_y = 0;
c_y_m = c_m_y;
}
if (game == 1) {
timer_r_ches();
}
if (digitalRead(button_y) == LOW && g == 0 && regim == 4) {
start_point();
game = 2;
g = 1;
c_s_r = 0;
c_r_m = c_m_r;
c_s_y = 0;
c_y_m = c_m_y;
}
if (game == 2) {
timer_y_ches();
}
}
void start_point() {
tft.fillRect(0, 55, 320, 130, 1); // стереть прямоугольник
tft.setTextColor(ILI9341_RED);
tft.setCursor(40, 90);
tft.setTextSize(10); // высота 21 пиксель
tft.println(red_point);
tft.setTextColor(ILI9341_YELLOW);
tft.setCursor(220, 90);
tft.setTextSize(10);
tft.println(yelow_point);
}