// Подключаем библиотеку для работы с дисплеем #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; }