Интернет-магазин «Неглупый Дом»
Зуммер подаёт сигнал в случайный момент — чем быстрее нажата кнопка, тем меньше миллисекунд на TM1637.
Случайная задержка перед сигналом (2-6 секунд) не даёт "выучить ритм" и нажимать по памяти — нужно реально реагировать на сигнал. Момент включения зуммера запоминается через `millis()` (мс с момента включения платы), после чего скетч "зависает" в пустом цикле `while (digitalRead(buttonPin) == LOW)` — блокирующем ожидании нажатия. Как только кнопка нажата, разница между двумя замерами `millis()` — это и есть время реакции.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.
#include <TM1637Display.h>
const int buttonPin = 2; // пин кнопки KY-004
const int buzzerPin = 8; // пин зуммера
TM1637Display display(3, 4); // CLK → D3, DIO → D4
void setup() {
pinMode(buttonPin, INPUT);
pinMode(buzzerPin, OUTPUT);
randomSeed(analogRead(A0)); // "зерно" случайности
}
void loop() {
int waitMs = random(2000, 6000); // случайная пауза 2-6 секунд
delay(waitMs);
digitalWrite(buzzerPin, HIGH); // подаём сигнал
unsigned long signalTime = millis(); // момент сигнала
while (digitalRead(buttonPin) == LOW) {
// ждём нажатия
}
unsigned long reactionMs = millis() - signalTime; // время реакции
digitalWrite(buzzerPin, LOW);
display.showNumberDec(reactionMs); // вывод результата в мс
delay(3000); // пауза перед следующим раундом
}
Случайная задержка от 2 до 6 секунд не даёт заранее угадать момент сигнала.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу: 121 ₽ 109 ₽ (экономия 12 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.