Advertisement
Al_Ninyo

Brain-ring

Aug 30th, 2016
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.32 KB | None | 0 0
  1. /************************
  2.  * Author:
  3.  * Kolpakov Vladimir aka Al'Ninyo
  4.  * http://alninyo.ru
  5.  * 25.08.2016
  6.  ************************/
  7.  
  8. #include <Wire.h>
  9. #include <LiquidCrystal_I2C.h>
  10.  
  11. LiquidCrystal_I2C lcd(0x3F,16,2);
  12.  
  13. #define judgeButton A2 // пин подключения судейской кнопки
  14. #define buzPin 9 // пин подключения пищалки
  15. const int buttonPin[] = {2,3,4,5,6,7}; // пины кнопок команд
  16. const int ledPin[] = {8,10,11,12,14,15}; // пины светодиодов у кнопок
  17. int push =-1;
  18. float startTime = 0;
  19. float t = 0;
  20. boolean butState[] = {0,0,0,0,0,0}; // начальное состояние кнопок
  21.  
  22. // функция вывода номера команды и времени нажатия кнопки
  23. void printTeam(int i, float t, int push) {
  24.   digitalWrite(ledPin[i], HIGH);
  25.   tone(buzPin, 440, 1000);
  26.   lcd.setCursor(0,push);
  27.   lcd.print("Team #");
  28.   lcd.print(i+1);
  29.   lcd.print(" ");
  30.   lcd.print(t);
  31.   lcd.print("   ");
  32.   delay(500);
  33.   noTone(buzPin);
  34. }
  35.  
  36. void setup() {
  37.   lcd.init();
  38.   lcd.backlight();
  39.   lcd.setCursor(0,0);
  40.   lcd.print("   Brain-ring   ");
  41.   delay(3000);
  42.   lcd.clear();
  43.   lcd.print("     Ready!     ");
  44.   for (int i = 0; i < 6; i++) {
  45.     pinMode(buttonPin[i], INPUT);
  46.   }
  47.   for (int i = 0; i < 6; i++) {
  48.     pinMode(ledPin[i], OUTPUT);
  49.     digitalWrite(ledPin[i], LOW);
  50.   }
  51.   pinMode(judgeButton, INPUT);
  52.   pinMode(buzPin, OUTPUT);
  53. }
  54.  
  55. void loop() {
  56.   if (digitalRead(judgeButton) == HIGH) {
  57.     delay(20);
  58.     for (int i = 0; i < 6; i++) {
  59.       digitalWrite(ledPin[i], HIGH);
  60.       tone(buzPin, 350, 1000);
  61.     }
  62.   delay(500);
  63.   for (int i = 0; i < 6; i++) {
  64.       digitalWrite(ledPin[i], LOW);
  65.       butState[i] = 0;
  66.       noTone(buzPin);
  67.     }
  68.     push = 0;
  69.     startTime = millis();
  70.     lcd.clear();
  71.   }
  72.   if (push == 0) {
  73.     lcd.setCursor(5,0);
  74.     lcd.print("Time:");
  75.     lcd.setCursor(5,1);
  76.     lcd.print((millis()-startTime)/1000);
  77.   }
  78.   else if (push == 1) {
  79.     lcd.setCursor(5,1);
  80.     lcd.print((millis()-startTime)/1000);
  81.   }
  82.   for (int i = 0; i < 6; i++) {
  83.     if (digitalRead(buttonPin[i]) == HIGH && butState[i] == 0 && push >= 0 && push < 2){
  84.       t = (millis()-startTime)/1000;
  85.       printTeam(i, t, push);
  86.       push++;
  87.       butState[i] = 1;
  88.     }
  89.   }
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement