Помогите пожалуйста со скетчем.Мне надо подключить еще одну тактовую кнопку на любой пин так чтобы она служила стартом , т.е. чтобы при её нажатии был задействован зуммер как в начале скетча и чтобы были открыты пины игроков.Все это для того чтобы не было фальстарта. Код (C++): #define BUZZER_PIN 12 #define PLAYER_COUNT 2 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() { delay(random(2000, 7000)); tone(BUZZER_PIN, 3000, 250); for (int player = 0; ; player = (player+1) % PLAYER_COUNT) { if (!digitalRead(buttonPins[player])) { digitalWrite(ledPins[player], HIGH); tone(BUZZER_PIN, 4000, 1000); delay(1000); digitalWrite(ledPins[player], LOW); break; } } }
Код (C++): #define BUZZER_PIN 12 #define PLAYER_COUNT 2 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() { delay(random(2000, 7000)); tone(BUZZER_PIN, 3000, 250); for (int player = 0; ; player = (player+1) % PLAYER_COUNT) { if (!digitalRead(buttonPins[player])) { digitalWrite(ledPins[player], HIGH); tone(BUZZER_PIN, 4000, 1000); delay(1000); digitalWrite(ledPins[player], LOW); break; } } }
Функция программного резета: Код (C++): void(* resetFunc) (void) = 0; Вызывается так: Код (C++): resetFunc(); Посадите ее на кнопку и все будет перезапускаться от ее нажатия.
Мне надо не как кнопка сброса так как он сам сбрасывается через определенное время , а кнопка старта при нажатии которой должен заработать скетч
А если совсем просто? Добавить третью кнопку для старта и в loop перед первым delay() зациклить скетч, пока кнопка не нажмется (например, как иногда пишут: while (!Serial) { } ).
Вообще-то это задание для самостоятельной работы. Примерно так. while (!digitalRead(кнопка старта)) { }; В логических выражениях принято считать, что ноль это ложь (false), все, что не ноль - истина (true). Соответственно от типа кнопки старта (подтянутой или стянутой) и будет зависеть условие этого цикла.