// Подключаем библиотеку для работы с дисплеем
#include <QuadDisplay.h>
// номер цифрового пина потенциометра
#define POT_PIN A0
// номер цифрового пина кнопки 1
#define BUTTON_1_PIN 2
// номер цифрового пина кнопки 2
#define BUTTON_2_PIN 3
// номер цифрового пина пищалки
#define BUZZER_PIN 10
// номер цифрового пина дисплея
#define DISPLAY_PIN 11
float scorePlayerOne = 0;
float scorePlayerTwo = 0;
// была ли кнопка отпущена?
bool buttonWasUp1 = true;
bool buttonWasUp2 = true;
void setup()
{
Serial.begin(9600);
tone(BUZZER_PIN, 2000, 200);
delay(300);
tone(BUZZER_PIN, 3000, 200);
delay(300);
tone(BUZZER_PIN, 4000, 200);
displayFloat(DISPLAY_PIN, 0, 2, true);
}
void loop()
{
if (button1Press()) {
scorePlayerOne++;
printScoreLcd();
}
if (button2Press()) {
scorePlayerTwo++;
printScoreLcd();
}
if(scorePlayerOne == 10 || scorePlayerTwo == 10) {
tone(BUZZER_PIN, 4000, 500);
while(1);
}
}
void printScoreLcd() {
float score = scorePlayerOne + scorePlayerTwo / 100;
displayFloat(DISPLAY_PIN, score, 2, true);
}
bool button1Press()
{
bool state;
// отпущена ли кнопка прямо сейчас
boolean buttonIsUp = digitalRead(BUTTON_1_PIN);
// если «кнопка была отпущена и не отпущена сейчас»
if (buttonWasUp1 && !buttonIsUp) {
// может это «клик», а может и ложный сигнал (дребезг),
// возникающий в момент замыкания/размыкания пластин кнопки,
// поэтому даём кнопке полностью «успокоиться»...
delay(10);
// и считываем сигнал снова
buttonIsUp = digitalRead(BUTTON_1_PIN);
if (!buttonIsUp) {
// если она всё ещё нажата — это клик
state = true;
}
} else {
state = false;
}
// запоминаем последнее состояние кнопки для новой итерации
buttonWasUp1 = buttonIsUp;
return state;
}
bool button2Press()
{
bool state;
// отпущена ли кнопка прямо сейчас
boolean buttonIsUp = digitalRead(BUTTON_2_PIN);
// если «кнопка была отпущена и не отпущена сейчас»
if (buttonWasUp2 && !buttonIsUp) {
// может это «клик», а может и ложный сигнал (дребезг),
// возникающий в момент замыкания/размыкания пластин кнопки,
// поэтому даём кнопке полностью «успокоиться»...
delay(10);
// и считываем сигнал снова
buttonIsUp = digitalRead(BUTTON_2_PIN);
if (!buttonIsUp) {
// если она всё ещё нажата — это клик
state = true;
}
} else {
state = false;
}
// запоминаем последнее состояние кнопки для новой итерации
buttonWasUp2 = buttonIsUp;
return state;
}