====== Игра «Убей крота» на дисплее Nextion ======
Соберите новую версию игры «Убей крота».
{{ :продукты:nextion:mini-game.jpg |}}
===== Как собрать =====
- {{:продукты:nextion:mini-game.zip|Скачайте, распакуйте и откройте}} проект «мини-игра» для «Nextion Editor».
- [[:articles:display-nextion#прошивка_дисплейных_модулей|Откомпилируйте проект и прошейте дисплейный модуль.]]
- Подключите дисплей через четырёхпроводной шлейф к Arduino. Чтобы избавиться от лишних проводов можно воспользоваться [[amp>product/arduino-troyka-shield?utm_source=man&utm_campaign=nextion&utm_medium=wiki|Troyka Shield]] .
- Питание дисплея ''+5V'' — к питанию Arduino
- Земля дисплея ''GND'' — к земле Arduino
- ''TX'' дисплея — к ''8'' пину Arduino
- ''RX'' дисплея — к ''9'' пину Arduino{{ :продукты:nextion:nextion-display_scheme_mini_game.png |}}
- Скачайте и прошейте вашу Arduino скетчем для мини-игры.В данном примере воспользуемся библиотекой эмуляции Serial порта — [[https://www.arduino.cc/en/Reference/SoftwareSerial|SoftwareSerial]].
===== Исходный код =====
// библиотека для эмуляции Serial порта
#include
// создаём объект 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);
}
}
После успешной прошивки модуля, можете наслаждаться игрой.