Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /************************
- * Author:
- * Kolpakov Vladimir aka Al'Ninyo
- * http://alninyo.ru
- * 25.08.2016
- ************************/
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- LiquidCrystal_I2C lcd(0x3F,16,2);
- #define judgeButton A2 // пин подключения судейской кнопки
- #define buzPin 9 // пин подключения пищалки
- const int buttonPin[] = {2,3,4,5,6,7}; // пины кнопок команд
- const int ledPin[] = {8,10,11,12,14,15}; // пины светодиодов у кнопок
- int push =-1;
- float startTime = 0;
- float t = 0;
- boolean butState[] = {0,0,0,0,0,0}; // начальное состояние кнопок
- // функция вывода номера команды и времени нажатия кнопки
- void printTeam(int i, float t, int push) {
- digitalWrite(ledPin[i], HIGH);
- tone(buzPin, 440, 1000);
- lcd.setCursor(0,push);
- lcd.print("Team #");
- lcd.print(i+1);
- lcd.print(" ");
- lcd.print(t);
- lcd.print(" ");
- delay(500);
- noTone(buzPin);
- }
- void setup() {
- lcd.init();
- lcd.backlight();
- lcd.setCursor(0,0);
- lcd.print(" Brain-ring ");
- delay(3000);
- lcd.clear();
- lcd.print(" Ready! ");
- for (int i = 0; i < 6; i++) {
- pinMode(buttonPin[i], INPUT);
- }
- for (int i = 0; i < 6; i++) {
- pinMode(ledPin[i], OUTPUT);
- digitalWrite(ledPin[i], LOW);
- }
- pinMode(judgeButton, INPUT);
- pinMode(buzPin, OUTPUT);
- }
- void loop() {
- if (digitalRead(judgeButton) == HIGH) {
- delay(20);
- for (int i = 0; i < 6; i++) {
- digitalWrite(ledPin[i], HIGH);
- tone(buzPin, 350, 1000);
- }
- delay(500);
- for (int i = 0; i < 6; i++) {
- digitalWrite(ledPin[i], LOW);
- butState[i] = 0;
- noTone(buzPin);
- }
- push = 0;
- startTime = millis();
- lcd.clear();
- }
- if (push == 0) {
- lcd.setCursor(5,0);
- lcd.print("Time:");
- lcd.setCursor(5,1);
- lcd.print((millis()-startTime)/1000);
- }
- else if (push == 1) {
- lcd.setCursor(5,1);
- lcd.print((millis()-startTime)/1000);
- }
- for (int i = 0; i < 6; i++) {
- if (digitalRead(buttonPin[i]) == HIGH && butState[i] == 0 && push >= 0 && push < 2){
- t = (millis()-startTime)/1000;
- printTeam(i, t, push);
- push++;
- butState[i] = 1;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement