Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Teste de Tempo de Reação Preciso com Arduino UNO

Componentes e Materiais

Botões push-button3
LED 5mm Vermelho2
Jumpers macho-macho1 conjunto
Breadboard1
Arduino UNO1
Cabo USB-A para B1
Resistor 100 Ω2
Resistor 10k Ω3

Aplicativos e Serviços Online

Sobre o Projeto

Li artigo sobre impacto do tempo de reação em atletas, snipers, jogadores de críquete e beisebol. Concluía que afeta até a vida cotidiana — ex: reação lenta ao dirigir pode ser fatal. Perguntei: como medir meu tempo de reação? Resultado abaixo.

Passo 1: O Que Precisamos

Teste de Tempo de Reação Preciso com Arduino UNO
Teste de Tempo de Reação Preciso com Arduino UNO
Teste de Tempo de Reação Preciso com Arduino UNO
Teste de Tempo de Reação Preciso com Arduino UNO
Teste de Tempo de Reação Preciso com Arduino UNO
Teste de Tempo de Reação Preciso com Arduino UNO
Teste de Tempo de Reação Preciso com Arduino UNO

Componentes comuns para hobistas eletrônicos. Dúvidas? Veja as imagens.

Passo 2: Procedimento para Medir Tempo de Reação Visual

Existem vários tipos: auditivo, visual, tátil. Aqui medimos tempo de reação visual.

  1. Mensagem no Serial Monitor: "pressione botão pronto quando estiver pronto"
  2. Ao pressionar botão pronto, após intervalo aleatório, um dos 2 LEDs acende aleatoriamente
  3. Pessoa testada deve pressionar botão correspondente o mais rápido possível
  4. Arduino mede diferença entre LED acender e botão pressionado
  5. Exibe tempo de reação medido no Serial Monitor

Dos 3 botões: 1 = botão pronto, 2 botões correspondem aos LEDs (LED1→Botão1, LED2→Botão2).

Teste de Tempo de Reação Preciso com Arduino UNO

Passo 3: Montando o Circuito

Teste de Tempo de Reação Preciso com Arduino UNO

Nota: pinos podem variar conforme sua preferência.

Passo 4: Vamos Codificar

Código anexado para download, mas sugiro escrever o seu. Pontos-chave:

Dúvidas? Veja vídeo demonstrativo anexo.

Passo 5: Hora do Teste

Chame amigos, veja quem é mais rápido. Faça tabela, calcule média (melhor: faça o Arduino calcular) e declare vencedor. Meu vídeo demo anexo. Tempo médio de reação visual ~250 ms.

PS: se for mais que isso após bebidas, não dirija.

Código

Código Arduino para medir seu tempo de reação
// definir pinos:
const int buttonPin1 = 4; // botão 1
const int buttonPin2 = 2; // botão 2
const int buttonPin3 = 7; // botão pronto
const int ledPin1 = 8;    // LED 1 anode (+)
const int ledPin2 = 12;   // LED 2 anode (+)

// Variáveis:
int ledState1 = LOW, ledState2 = LOW;
int buttonState1, buttonState2, buttonState3;
int lastButtonState1 = LOW, lastButtonState2 = LOW, lastButtonState3 = LOW;
unsigned long lastDebounceTime = 0;
long debounceDelay = 20000; // microssegundos
unsigned long randNumber;
unsigned long minRandomNumber = 2000;
unsigned long maxRandomNumber = 5000;
unsigned long time1, time2;
int button3Pressed = LOW;
int printcount = 0;
int takeReading = LOW;
int reading1, reading2, reading3;
int oddNumber, evenNumber;

void setup() {
  pinMode(buttonPin1, INPUT);
  pinMode(buttonPin2, INPUT);
  pinMode(buttonPin3, INPUT);
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  Serial.begin(115200);
  digitalWrite(ledPin1, ledState1);
  digitalWrite(ledPin2, ledState2);
  randomSeed(analogRead(0)); // seed aleatório ruído analógico pino 0
}

void loop() {
  if (printcount == 0) {
    Serial.println("pressione botao 3 quando estiver pronto");
    printcount = 1;
    takeReading = LOW;
    oddNumber = LOW;
    evenNumber = LOW;
  }
  if (button3Pressed == HIGH) {
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
    randNumber = random(minRandomNumber, maxRandomNumber);
    delay(randNumber);
    if (randNumber & 1 == 1) {
      digitalWrite(ledPin1, HIGH);
      digitalWrite(ledPin2, LOW);
      time1 = micros();
      oddNumber = HIGH;
    } else {
      digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, HIGH);
      time1 = micros();
      evenNumber = HIGH;
    }
    button3Pressed = LOW;
  }
  reading3 = digitalRead(buttonPin3);
  if (takeReading == HIGH) {
    if (oddNumber == HIGH) reading1 = digitalRead(buttonPin1);
    if (evenNumber == HIGH) reading2 = digitalRead(buttonPin2);
  }
  if (reading1 != lastButtonState1 || reading2 != lastButtonState2 || reading3 != lastButtonState3) {
    lastDebounceTime = micros();
  }
  if ((micros() - lastDebounceTime) > debounceDelay) {
    if (reading1 != buttonState1) {
      buttonState1 = reading1;
      if (buttonState1 == HIGH) {
        Serial.print("Seu tempo de reacao: ");
        Serial.print(lastDebounceTime - time1);
        Serial.println("us");
        Serial.println();
        printcount = 0;
      }
    }
    if (reading2 != buttonState2) {
      buttonState2 = reading2;
      if (buttonState2 == HIGH) {
        Serial.print("Seu tempo de reacao: ");
        Serial.print(lastDebounceTime - time1);
        Serial.println("us");
        Serial.println();
        printcount = 0;
      }
    }
    if (reading3 != buttonState3) {
      buttonState3 = reading3;
      if (buttonState3 == HIGH) {
        Serial.println("PRONTO PARA COMECAR");
        button3Pressed = HIGH;
        takeReading = HIGH;
      }
    }
  }
  lastButtonState1 = reading1;
  lastButtonState2 = reading2;
  lastButtonState3 = reading3;
}

Esquemático

Teste de Tempo de Reação Preciso com Arduino UNO

Processo de manufatura

  1. Quando Substituir os Garfos da Empilhadeira: Guia Prático
  2. Alerta Inteligente de Sede para Plantas – Sensor DIY para Hidratação Ideal
  3. Relógio de Palavras em Italiano com Arduino Nano, NeoPixel, LCD e RTC
  4. Economize Pinos do Arduino: Conecte Teclado 4x3 com Apenas Três Conexões
  5. Medidor kWh Confiável com Sigfox e Arduino MKR Fox 1200
  6. Monitor de Temperatura com Bluetooth usando Arduino Nano
  7. Fechadura por Gestos Sem Toque: Acesso Seguro com APDS-9960 e Arduino
  8. Companion IC: Relógio, Ohmímetro, Capacímetro e Testador de Diodos com Arduino Nano
  9. Circuito de Entrada Analógica Isolada para Arduino
  10. Hora de Atualizar seu Compressor? Identifique os Sinais Precocemente