Скорость реакции достаточно важная штука. Например, при управлении автомобилем она играет далеко не последнюю роль. Есть масса факторов влияющих на скорость реакции. Сильная усталость и некоторые лекарства вызывают снижение скорости реакции. Вот я и решил сделать устройство, которое позволило бы измерить скорость реакции.
Для начала отвечу на главный вопрос. Зачем делать устройство для измерения скорости реакции? Действительно, скорость реакции можно измерить на некоторых сайтах в интернете. Ещё можно написать программу для компьютера, которая будет решать ту же задачу. Не смотря на сказанное, в изготовлении специального устройства есть смысл. Во-первых, устройство на ардуино может работать без интернета. Во-вторых, сложно оценить погрешность решений реализованных на компьютере. Микроконтроллер в этом случае является более предсказуемым и простым вариантом. В-третьих, реализация такого устройства не требует много времени и ресурсов.
Итак. Железо.
Ардуино нано.
Кнопка.
Светодиод.
Соединение модулей.
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 можно выводить результаты на какой нибудь экранчик. Получится небольшое и самодостаточное устройство.





Комментариев нет:
Отправить комментарий