Измеряем скорость реакции с помощью Arduino

Сегодня мы решили создать приспособление, которое сможет измерить время (скорость) реакции и для этого нам понадобится Arduino и некоторые компоненты.

Шаг 1: Компоненты

Необходимые детали показаны на картинке и перечислены в списке ниже.

  • Arduino UNO
  • USB-кабель
  • 10k и 220-омные резисторы
  • СВЕТОДИОД
  • кнопка
  • макетная плата
  • ЖК-дисплей 16x2
  • перемычки

Шаг 2: Подключение светодиода

Каждый светодиод имеет два провода - более короткий и длинный. Более короткий (катод) должен быть подключен к GND (земля) Arduino с использованием 220-омного резистора. Анод (5V) каждого светодиода должен соединить соответствующий цифровой вывод Arduino (мы выбрали 8-й).

Важно! Не беспокойтесь о номере цифрового выхода, вы сможете изменить контакты позже в коде.

Шаг 3: Подключение кнопки

Выберите одну из сторон кнопки. Вы увидите 2 контакта. Тот, который слева, соединяется с землей Arduino с резистором 10k. Подключите другой провод к цифровому контакту 4 Arduino. Штифт в правой части кнопки подключается к 5V.

Шаг 4: Подключение ЖК-дисплея

Здесь необходимо 4 соединения. Они следующие (ЖК-дисплей → Arduino):

GND → GND
VCC → 5V
SDA → A4
SCL → A5

Шаг 5: Код

Ниже приводим код, который нужно загрузить в вашу Arduino.

#include <Wire.h>  
#include <LiquidCrystal_I2C.h>
 
#define ledPin 8
#define btnPin 4
 
double number;
long sTime;
 
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
 
void setup() {
  Serial.begin(9600);
  lcd.begin(16,2);  
  lcd.setCursor(0,0);
  pinMode(btnPin, INPUT);
  pinMode(ledPin, OUTPUT);
}
 
void loop() {
    number = random(500, 5000);
    lcd.print("Wait for the LED");
    delay(number);
 
    lcd.clear();
    lcd.print("     PRESS!");
    digitalWrite(ledPin, HIGH);
    sTime = millis();
 
    while (digitalRead(btnPin) == LOW);
 
    lcd.clear();
    lcd.print(" Reaction time: ");
    lcd.setCursor(0,1);
    lcd.print("      ");
    lcd.print((millis() - sTime) / 1000.0);
    lcd.print(" s");
   
    delay(2000);
 
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("  Another test");
    lcd.setCursor(0, 1);
    lcd.print("  in 5 seconds");
    delay(5000);
    lcd.clear();
    digitalWrite(8, LOW);
}

Не стесняйтесь изменять что-либо в коде, например, номера контактов, задержки, текст и т.п.

Шаг 6: Итоговое видео

Если у вас есть вопросы, не стесняйтесь спрашивать их в комментариях в нашей группе! Ниже - итоговое видео нашего урока!

Отличных вам проектов.

Ардуино+