Инструменты пользователя

Инструменты сайта


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