====== Игра «Убей крота» на дисплее 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); } } После успешной прошивки модуля, можете наслаждаться игрой.