Skip to content

Instantly share code, notes, and snippets.

@intepra
Created December 26, 2016 15:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save intepra/d4af98922fd2106e5c32a5fb18c1ec74 to your computer and use it in GitHub Desktop.
Save intepra/d4af98922fd2106e5c32a5fb18c1ec74 to your computer and use it in GitHub Desktop.
Script for Arduino
#define BUZZER_PIN 12 // пин с пищалкой
#define PLAYER_COUNT 2 // количество игроков-ковбоев
// вместо перечисления всех пинов по-одному, мы объявляем пару
// списков: один с номерами пинов с кнопками, другой — со
// светодиодами. Списки также называют массивами (англ. array)
int buttonPins[PLAYER_COUNT] = {3, 13};
int ledPins[PLAYER_COUNT] = {9, 11};
int ledPinsError[PLAYER_COUNT] = {7, 8};
void setup()
{
pinMode(BUZZER_PIN, OUTPUT);
for (int player = 0; player < PLAYER_COUNT; ++player) {
// при помощи квадратных скобок получают значение в массиве
// под указанным в них номером. Нумерация начинается с нуля
pinMode(ledPins[player], OUTPUT);
pinMode(buttonPins[player], INPUT_PULLUP);
pinMode(ledPinsError[player], OUTPUT);
}
}
void loop()
{
for (int i=0;i<random(5000, 7000);i+=1){
delay(1);
if (!digitalRead(buttonPins[0])||!digitalRead(buttonPins[1])) {
digitalWrite(ledPinsError[0], HIGH);
digitalWrite(ledPinsError[1], HIGH);
tone(BUZZER_PIN, 1000, 1000);
delay(1000);
digitalWrite(ledPinsError[0], LOW);
digitalWrite(ledPinsError[1], LOW);
i = 0;
}
}
tone(BUZZER_PIN, 3000, 250); // 3 килогерца, 250 миллисекунд
for (int player = 0; ; player = (player+1) % PLAYER_COUNT) {
// если игрок номер «player» нажал кнопку...
if (!digitalRead(buttonPins[player])) {
// ...включаем его светодиод и сигнал победы на 1 сек
digitalWrite(ledPins[player], HIGH);
tone(BUZZER_PIN, 4000, 1000);
delay(1000);
digitalWrite(ledPins[player], LOW);
break; // Есть победитель! Выходим (англ. break) из цикла
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment