В этом эксперименте мы создаем игрушку на реакцию: кто быстрее нажмет кнопку по сигналу.
#define BUZZER_PIN 12 // пин с пищалкой#define PLAYER_COUNT 2 // количество игроков-ковбоев// вместо перечисления всех пинов по-одному, мы объявляем пару// списков: один с номерами пинов с кнопками, другой — со// светодиодами. Списки также называют массивами (англ. array)int buttonPins[PLAYER_COUNT] = {3, 13};int ledPins[PLAYER_COUNT] = {9, 11}; void setup(){ pinMode(BUZZER_PIN, OUTPUT); for (int player = 0; player < PLAYER_COUNT; ++player) { // при помощи квадратных скобок получают значение в массиве // под указанным в них номером. Нумерация начинается с нуля pinMode(ledPins[player], OUTPUT); pinMode(buttonPins[player], INPUT_PULLUP); }} void loop(){ // даём сигнал «пли!», выждав случайное время от 2 до 7 сек delay(random(2000, 7000)); 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) из цикла } }}int. int firstArray[6]; // 6 целых чисел с неопределёнными начальными значениямиint pwmPins[] = {3, 5, 6, 9, 10, 11}; // 6 целых чисел, длина вычисляется автоматомboolean buttonState[3] = {false, true, false}; // можно использовать элементы любого типаfirstArray[2] или buttonState[counter], где counter — переменная, такая как счетчик циклаlong можно хранить значения до 2 147 483 647. unsigned int в этом случае нам будет недостаточно, потому что 65 535 миллисекунд пройдут чуть больше чем за минуту!random(min, max) возвращает целое псевдослучайное число в интервале [min, max]. Для драматичности каждая игра начинается с паузы случайной длины.for без условия его завершения, поэтому пока мы явно того не потребуем, цикл будет крутиться до бесконечности.player = (player+1) % PLAYER_COUNT для счётчика цикла, чтобы не только увеличивать его на единицу каждый раз, но и обнулять при достижении последнего игрока.break прекращает работу цикла и выполнение программы продолжается с инструкции после его конца.boolean и int?long?continue и break?