Светодиодный индикатор "Ударь крота"
Компоненты и расходные материалы
| × | 1 | ||||
| × | 7 | ||||
| × | 7 | ||||
| × | 1 | ||||
| × | 8 | ||||
| × | 4 |
Об этом проекте
Это был мой первый проект Arduino, я построил его на основе того, что я узнал из первых руководств по светодиодам и основным элементам управления.
В этой игре «Ударь крота» используются 7 светодиодов и джойстик. На моей доске есть 4 «родинки», представленные 2-м, 3-м, 4-м и 5-м огнями слева. Один из четырех индикаторов загорится случайным образом и даст заданное количество времени, чтобы поразить джойстик в соответствующем направлении. Я расположил свои источники света так, чтобы на джойстике можно было выбирать слева направо:влево, вверх, вниз, вправо. Это просто соглашение, которое я выбрал, так что творчески и пробуйте другие!
Два индикатора слева красного и зеленого цвета указывают на неправильный или правильный выбор. Желтый свет в крайнем правом углу мигает счетчиком текущего рекорда и показывает счет каждый раз, когда пробежка заканчивается (всякий раз, когда делается неправильный выбор). Естественно, новый рекорд заменяет старый.
Пожалуй, самая сложная часть этого проекта - аналоговый джойстик. Для обоих направлений джойстика есть максимальные значения 0 и 1024 (для меня мне пришлось использовать 1023, поэтому, если вы не получаете правильный выбор, вы можете попробовать это). Я считаю, что эти значения также можно измерить с помощью последовательного окна. Я упростил эти входные значения, используя операторы switch для входов x и y. Я не уверен, что это лучший способ сделать это, но поскольку мне нужны были только максимальные значения каждого направления (т.е. только 4 варианта, 4 светодиода), я присвоил целые значения каждой возможности:1, 2, 3, 4 соответствует левому, правому, верхнему, нижнему.
Уровни сложности, которые я записал в свой код как константы, - это время в миллисекундах, в течение которого человек должен сделать выбор. Вы можете повозиться с этим временем, чтобы изменить сложность по своему усмотрению. Я думал об интеграции выбора с помощью кнопок или, может быть, джойстика в начале поворота, но на самом деле это не стоило работы, поскольку я считаю, что это будет довольно сложно и не очень удобно для пользователя.
Обязательно дайте мне знать, какие модификации и улучшения можно сделать! :)
Код
- АВАРИЙНЫЙ
ПОБЕДИТЕЛЬНЫЙ Arduino
// Ударь по светодиоду // Переменные джойстика int sX =A0; // ось x джойстика, аналоговый ввод int sY =A1; // ось Y джойстика, аналоговый inputint sSX; // состояние x, чтение из sXint sSY; // состояние y, чтение из sYint sS; // преобразованное состояние (может быть не самым эффективным) // Игровые переменные int rNum; // random int выбирает случайный свет для включения int wins =0; // подсчет последовательных выигрышей int highScore =0; // сохранение наивысшего количества последовательных побед // Константы сложности, время на реакцию const int easy =1000; const int medium =500; const int hard =325; const int stupid =250; int ledPins [] ={5,2, 4,3,6,7,8}; // инициализация led'sint pinCount =7; // количество выводов светодиодовvoid setup () {Serial.begin (9600); pinMode (sX, INPUT); pinMode (sY, INPUT); for (int thisPin =0; thisPinhighScore) {// если последовательные победы больше предыдущего рекорда, устанавливается новый рекорд. highScore =выигрыши; выигрышей =0; } for (int i =0; i <=3; i ++) {// мигающий красный свет, указывающий на неправильный выбор digitalWrite (ledPins [5], HIGH); задержка (50); digitalWrite (ledPins [5], LOW); задержка (50); } for (int w =0; w
Схема
Все должно соответствовать реальной картине проекта, кроме джойстика. У моего джойстика 5 контактов, 4 или которые я использовал:названные сверху вниз «GND», «+ 5V», «VRx» и «VRy». «GND» и «+ 5V» подключены к GND, а 5V на Arduino, «VRx» и «VRy» подключены к A0 и A1. Все должно соответствовать реальной картинке проекта, кроме джойстика. У моего джойстика 5 контактов, 4 или которые я использовал:названные сверху вниз «GND», «+ 5V», «VRx» и «VRy». «GND» и «+ 5V» подключены к GND и 5V на Arduino, «VRx» и «VRy» подключены к A0 и A1. я> whack_a_mole_schematic_CBciL9GiCP.fzzПроизводственный процесс