Проект 6. Быстрокликер

Мы изучим новый элемент - сервомотор, и сделаем с помощью него небольшую игру. В ней будет два игрока, и задача каждого как можно быстрее кликать на кнопку. Сервомотор будет наклонять флажок в сторону более быстрого игрока, и как только флажок достигнет края, победителю засчитывается выигрыш!

Оборудование:

TrafficLight
Keypad

(new) сервопривод SG-90

Программирование:

Библиотека 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);
}

---