Скорость реакции достаточно важная штука. Например, при управлении автомобилем она играет далеко не последнюю роль. Есть масса факторов влияющих на скорость реакции. Сильная усталость и некоторые лекарства вызывают снижение скорости реакции. Вот я и решил сделать устройство, которое позволило бы измерить скорость реакции.
Для начала отвечу на главный вопрос. Зачем делать устройство для измерения скорости реакции? Действительно, скорость реакции можно измерить на некоторых сайтах в интернете. Ещё можно написать программу для компьютера, которая будет решать ту же задачу. Не смотря на сказанное, в изготовлении специального устройства есть смысл. Во-первых, устройство на ардуино может работать без интернета. Во-вторых, сложно оценить погрешность решений реализованных на компьютере. Микроконтроллер в этом случае является более предсказуемым и простым вариантом. В-третьих, реализация такого устройства не требует много времени и ресурсов.
Итак. Железо.
Ардуино нано.
Кнопка.
Светодиод.
Соединение модулей.
arduino --- button
VCC --- VCC
GND --- GND
A0 --- OUT
arduino --- led
VCC --- V
D8 --- R
Схема того, что должно получится.
Скетч.
//////////////////////// // // Arduino // //////////////////////// // // Sketch: // const unsigned char LED = 8; // Digital Pin 8 const unsigned char BUTTON = 14; // Analog Pin 0 unsigned long int time1 = 0; unsigned long int time2 = 0; void setup() { // Led initialization pinMode(LED, OUTPUT); // Button initialization pinMode(BUTTON, INPUT); // UART initialization Serial.begin(9600); // Pseudo-random number generator initialization digitalWrite(LED, LOW); while ( digitalRead(BUTTON) == HIGH ) ; randomSeed(micros()); digitalWrite(LED, HIGH); } void loop() { digitalWrite(LED, HIGH); delay(random(2000, 5000)); digitalWrite(LED, LOW); time1 = micros(); while ( digitalRead(BUTTON) == HIGH ) ; time2 = micros(); Serial.println(((time2-time1)/1000000.0), 6); } // // End // ////////////////////////
Работает устройство следующим образом. После подачи питания загорается светодиод. Своего рода индикация готовности устройства к работе. При нажатии на кнопку светодиод гаснет. В этот момент происходит инициализация генератора псевдослучайных чисел. После задержки, длительность которой определяется генератором псевдослучайных чисел, светодиод загорается снова. Теперь нужно как можно быстрее нажать кнопку. Время прошедшее от включения светодиода и до нажатия кнопки является временем реакции. Результат можно увидеть в мониторе порта ардуино.
Генератор псевдослучайных чисел весьма необходимая в данном проекте вещь. Без него удается довольно неплохо натренироваться нажимать кнопочку в нужное время.
В заключении скажу несколько слов о том, что можно изменить, улучшить. Во-первых, можно повысить точность. Для этого нужно отказаться от использования стандартных библиотек ардуино. Только я немного сомневаюсь в целесообразности всего этого. Лично моя реакция не настолько быстра. Правда и сложностей в модификации программы не много. Если будет большой интерес к устройству - сделаю.
Во-вторых, можно сделать устройство более компактным и мобильным. Ардуино нано легко меняется на ардуино про мини. Вместо вывода данных через UART можно выводить результаты на какой нибудь экранчик. Получится небольшое и самодостаточное устройство.
Комментариев нет:
Отправить комментарий