Игра «Убей крота» на дисплее Nextion

Соберите новую версию игры «Убей крота».

Как собрать

  1. Скачайте, распакуйте и откройте проект «мини-игра» для «Nextion Editor».
  2. Подключите дисплей через четырёхпроводной шлейф к Arduino. Чтобы избавиться от лишних проводов можно воспользоваться Troyka Shield .
    1. Питание дисплея +5V — к питанию Arduino
    2. Земля дисплея GND — к земле Arduino
    3. TX дисплея — к 8 пину Arduino
    4. RX дисплея — к 9 пину Arduino
  3. Скачайте и прошейте вашу Arduino скетчем для мини-игры.

    В данном примере воспользуемся библиотекой эмуляции Serial порта — SoftwareSerial.

Исходный код

mini-game.ino
// библиотека для эмуляции Serial порта
#include <SoftwareSerial.h>
// создаём объект mySerial и передаём номера управляющих пинов RX и TX
// RX - цифровой вывод 8, необходимо соединить с выводом TX дисплея
// TX - цифровой вывод 9, необходимо соединить с выводом RX дисплея
SoftwareSerial mySerial(8, 9);
 
// переменная для хранения посылки данных
String data;
 
void setup() 
{
  // открываем последовательный порт
  mySerial.begin(9600);
}
 
void loop()
{
  // ждём данные от дисплея
  while (mySerial.available() > 0) {
    data += char(mySerial.read());
    delay(2);
  }
  // если пришёл символ 'g'
  if (data == "g") {
    int c = 99;
    // обнуляем счётчик попаданий
    mySerial.print("n0.val=0");
    // дописываем в посылку служебные символы конца команды
    comandEnd();
    // цикл счётчика таймера
    for (int i = 0; i < 100; i++) {
      for (int j = 0; j < 15; j++) {
        mySerial.print("tsw p");
        mySerial.print(j);
        mySerial.print(",0");
        comandEnd();
        mySerial.print("p");
        mySerial.print(j);
        // все слоты дисплея закрашиваем матрёшками
        mySerial.print(".pic=5");
        comandEnd();
      }
      // функция для генерации случайных чисел
      randomSeed(analogRead(A0));
      // генерируем случайное число
      // одна из 15 области экрана на дисплее
      int b = random(0, 15);
      mySerial.print("tsw p");
      mySerial.print(b);
      mySerial.print(",1");
      comandEnd();
      mySerial.print("p");
      mySerial.print(b);
      // появление картинки, на которую надо быстро нажать
      mySerial.print(".pic=3");
      comandEnd();
      // уменьшаем таймер на единицу и отправляем в дисплей
      c--;
      mySerial.print("j0.val=");
      mySerial.print(c);
      comandEnd();
      data = "";
      delay(500);
    }
    data = "";
    mySerial.print("t0.txt=\"reset\"");
    comandEnd();
    mySerial.print("tsw t0,1");
    comandEnd();
    mySerial.print("tsw m0,1");
    comandEnd();
    delay(2);
  }
  data = "";
}
 
// функция отправки конца команды
// команда поступающая в дисплей должна кончаться символами «0xFF0xFF0xFF»
void comandEnd() {
  for (int i = 0; i < 3; i++) {
    mySerial.write(0xff);
  }
}

После успешной прошивки модуля, можете наслаждаться игрой.