Платформа Arduino очень популярна для создания хобби-проектов и игр. Arduino часто используют для создания игр типа змейка, пинг-понг, космической гонки и т. д. Сегодня мы создадим еще одну популярную простую игру «опасные провода», суть которой состоит в том, чтобы провести один провод около другого, не давая им соприкоснуться.

Для этого проекта мы будем использовать Arduino Uno, зуммер и два алюминиевых провода. Также для отображения статуса игры будем использовать LCD дисплей. Оба конца провода «лабиринта» будут подключены к цифровым выводам 2 и 3 Arduino, а ведомый провод подключен к выводу заземления Arduino. Цифровые контакты определены как контакты INPUT_PULLUP, поэтому, когда ведомый провод касается провода лабиринта, он меняет состояние цифровых выводов на низкое, и зуммер издает звук.
На конце проводного лабиринта также подключен диод, поэтому, когда вы проведете провод через этот диод и коснетесь провода лабиринта ведомым проводом, только один контакт (контакт 3) перейдет в низкое логическое состояние. В этом случае на ЖК-дисплее отобразится текст поздравления с успешным прохождением игры.
Принципиальная схема подключения представлена на следующем изображении.

Контакты SCL и SDA модуля I2C подключены к контактам A5 и A4 Arduino, а контакты VCC и GND модуля I2C подключены к 5V и контакту GND Arduino. Положительная шина зуммера подключена к цифровому выводу 4 Arduino, а отрицательная шина – к GND. Разрежьте алюминиевую проволоку и согните ее в форме зигзага. Припаяйте диод на одном конце провода. Затем перережьте другой провод, чтобы сделать ведомую ручку и согните один конец в петлю. Подключите выводы D2 и D3 Arduino к обоим концам зигзагообразного провода и подключите провод рукоятки к выводу GND Arduino.

Код программы этой игры на Arduino следующий.
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int startPin = 2;
const int endPin = 3;
const int buzzer = 4;
int start, end_;
void setup(void)
{
Serial.begin(9600);
lcd.begin();
lcd.clear();
pinMode(buzzer, OUTPUT);
pinMode(startPin, INPUT_PULLUP);
pinMode(startPin, INPUT_PULLUP);
}
void loop(void)
{
start = digitalRead(startPin);
end_ = digitalRead(endPin);
Serial.print(start);
Serial.print("\n");
Serial.print(end_);
if (start == LOW && end_== LOW ){
digitalWrite(buzzer, HIGH);
delay(1000);
digitalWrite(buzzer, LOW);
lcd.setCursor(0,0);
lcd.print("Try Again");
Serial.print("Try Again");
}
else if (start == HIGH && end_== LOW){
lcd.setCursor(0,0);
lcd.print("Well Done");
Serial.print("Well Done");
}
delay(500);
}
После подключения оборудования и загрузки указанного кода вы можете начать играть в игру. Держите провод с петлей в руке и постарайтесь, чтобы он прошел весь путь до диода, припаянного к зигзагообразному проводу, не позволяя ведомому проводу с петлей соприкоснуться где-либо. Если вы дотронетесь до провода лабиринта, то зазвучит зуммер, и на ЖК-дисплее появится сообщение, призывающее попробовать еще раз. И если вы закончите игру, не касаясь провода, то выдастся сообщение о победе.

© digitrode.ru