Проект 6. Быстрокликер
Мы изучим новый элемент - сервомотор, и сделаем с помощью него небольшую игру. В ней будет два игрока, и задача каждого как можно быстрее кликать на кнопку. Сервомотор будет наклонять флажок в сторону более быстрого игрока, и как только флажок достигнет края, победителю засчитывается выигрыш!
Программирование:
Библиотека Servo.h
Практика
Реализуйте игру “Быстрокликер”.
Играют два игрока, изначальное положение сервопривода равно 90 градусов, на светофоре горит красный сигнал. При нажатии кнопки D0 сервопривод смещается на 1 градус влево, а при нажатии D2 на 1 градус вправо.
Если угол примет значение меньше 5 градусов - победил левый игрок, если больше 175 градусов - победил правый игрок.
При победе какого-либо игрока загорается зелёный светодиод, и идёт задержка 5сек до следующего раунда.
Дополнительное задание
Сделайте так, чтобы при приближении к критической границе (например от 5 до 35 градусов для 1 игрока и от 145 до 175 градусов второго игрока) загорался жёлтый светодиод.
Решение
Мы рекомендуем сначала освоить материал и попробовать сделать программу самостоятельно! А потом проверить себя, посмотрев наш вариант решения:
Основная программа
#include <Servo.h>
#include <Eryoma.h>
Eryoma robot;
Servo myservo;
int angle = 90;
void setup() {
robot.setupConnector(ePort4, Keypad);
myservo.attach(9);
}
void loop() {
if (robot.read(ePort4, 0) == 0) {
angle -= 1;
delay(10);
}
if (robot.read(ePort4, 2) == 0) {
angle += 1;
delay(10);
}
if (angle > 180 || angle < 0) {
delay(5000);
angle = 90;
}
myservo.write(angle);
}
Дополнительное задание
---