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

Meça seu tempo de reação

Componentes e suprimentos

botões de pressão
× 3
LED de 5 mm:Vermelho
× 2
Jumper Macho / Macho
× 1
Breadboard (genérico)
× 1
Arduino UNO
× 1
Cabo USB-A para B
× 1
Resistor 100 ohm
× 2
Resistor 10k ohm
× 3

Aplicativos e serviços online

Arduino IDE

Sobre este projeto


Eu estava lendo um artigo onde o escritor estava tentando impressionar sobre o efeito do tempo de reação na vida de atletas, atiradores de elite, jogadores de críquete e jogadores de beisebol. Por fim, ele concluiu com seu efeito na vida de pessoas normais e fiquei surpreso ao ver que o tempo de reação teve muitas implicações em nosso dia a dia.

Por exemplo, um tempo de reação mais lento do que o normal ao dirigir pode ter resultados graves.

Pensei:Como posso medir meu tempo de reação?

A seguir está o resultado.

Etapa 1:coisas de que precisamos

A seguir está a lista de coisas que precisamos para medir nosso tempo de reação.

Hardware:

Programas:
  • Arduino IDE

Os componentes mencionados acima devem estar no chão de um aquarista eletrônico :).

Se tiver dúvidas em relação a algum dos componentes como o que é é só olhar as imagens.

Etapa 2:Qual será o nosso procedimento para medir o tempo de reação (RT)?

Existem muitos tempos de reação envolvidos com nosso corpo humano. temos RT de áudio, RT visual, RT de toque e muitos mais. Neste instrutível, veremos como medir

Tempo de reação visual.

Procedimento de medição do tempo de reação visual:
  • Exibir uma mensagem no monitor serial do Arduino "pressione o botão pronto quando estiver pronto"
  • Quando a pessoa sob teste pressiona o botão pronto, após algum intervalo de tempo aleatório, um dos dois LEDs deve acender muito aleatoriamente.
  • A pessoa sob teste deve pressionar o botão correspondente o mais rápido possível.
  • O Arduino tomará nota da diferença de tempo entre a iluminação do LED e a pessoa pressionando o botão correspondente.
  • Coloque a mensagem do tempo de reação medido no monitor serial Arduino.

Deixe-me esclarecer que da lista de componentes de hardware que mencionei, de 3 botões, um botão funcionará como botão pronto e os dois botões restantes irão

correspondem a dois LEDs, ou seja, LED1 -> BUTTON1, LED2 -> BUTTON2. o que significa que se o LED1 acender, a pessoa em teste deve pressionar o BOTÃO1, semelhante é o caso para

LED2.

Etapa 3:juntando as coisas

Na imagem acima você pode ver a construção do circuito. deixe-me colocar alguns pontos aqui.
  • conecte 5V e GND da placa arduino à sua placa de ensaio.
  • conecte o cátodo de ambos os LEDs por meio de resistores limitadores de corrente de 100 Ohm.
  • conecte o ânodo do LED1 e do LED2 ao pino número 8 e 12, respectivamente.
  • botões de ação do plugin conforme mostrado na imagem. (no caso de botões quando o botão está aberto, os cabos nas laterais estão em curto, quando o botão é pressionado os cabos diagonais
  • entra em curto)
  • conecte o resistor de 10K Ohm conforme mostrado na imagem, ele atua como um resistor pull down.
  • conecte outro cabo ao trilho de 5 V na placa de ensaio.
  • e, finalmente, conecte os botões aos pinos 2, 4 e 7 da placa Arduino.

Observação: Os números de identificação que mencionei acima podem variar de acordo com sua escolha, acabei de mencionar minha preferência.




Etapa 4:vamos codificar

Anexei o código do Arduino para o instrutível, que você pode baixar e começar a jogar, mas sugiro que você escreva o seu próprio. A seguir estão alguns pontos que você precisa ter em mente ao escrever seu código.
  • Cuide da denúncia de botões de pressão.
  • Tenha cuidado para que o código forneça uma boa resolução para medir o tempo de reação.
  • Use monitor serial para depuração, bem como interface humana.

Se você tiver dúvidas em alguma das etapas acima, basta seguir o vídeo em anexo.

Etapa 5:Tempo de teste

Tudo pronto, chame seus amigos e vamos ver quem é o mais rápido. Prepare a média do gráfico (é melhor fazer o arduino fazer isso) e declare o vencedor. Anexei meu vídeo de demonstração, fique à vontade para dar uma olhada. O tempo médio de reação visual para nós é de cerca de 250 ms.

PS:se for mais do que isso depois das bebidas, por favor, não dirija.



Código

  • Código Arduino para medir seu tempo de reação.
Código Arduino para medir seu tempo de reação. Arduino
apenas execute o código e abra o monitor serial.
 // definir os números dos pinos:const int buttonPin1 =4; // o número do pinconst do pushbutton1 int buttonPin2 =2; // o número do botão 2 pinconst int buttonPin3 =7; // o número do botão 3 pinconst int ledPin1 =8; // o número do ânodo LED1 (+) pinconst int ledPin2 =12; // o número do pino do ânodo LED2 (+) // As variáveis ​​serão alteradas:int ledState1 =LOW; // o estado atual do LED1int ledState2 =LOW; // o estado atual do LED2int buttonState1; // a leitura atual da entrada pin1int buttonState2; // a leitura atual da entrada pin2int buttonState3; // a leitura atual da entrada pin3int lastButtonState1 =LOW; // a leitura anterior da entrada pin1int lastButtonState2 =LOW; // a leitura anterior da entrada pin2int lastButtonState3 =LOW; // a leitura anterior do pino 3 de entrada // as seguintes variáveis ​​são longas porque o tempo, medido em microssegundos, // se tornará rapidamente um número maior do que pode ser armazenado em um int.unsigned long lastDebounceTime =0; // a última vez que o pino de saída foi alternado debounceDelay =20000; // o tempo de debounce em micro segundo sem sinal long randNumber; // Número aleatório gerado.unsigned long minRandomNumber =2000; // número mínimo usado para especificar o intervalo de numberunsigned long maxRandomNumber =5000; // número máximo usado para especificar o intervalo de número aleatóriounsigned long time1, time2; int button3Pressed =LOW; int printcount =0; int takeReading =LOW; // variável seguinte ajuda na leitura de botões pinsint reading1; int reading2; int reading3; / / seguinte variável ajuda na leitura do botão correspondente ao led perticular, ou seja, LED1 -> BUTTON1 e LED2 -> BUTTON2int número ímpar; int número par; configuração vazia () {pinMode (botãoPin1, ENTRADA); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (ledPin1, OUTPUT); pinMode (ledPin2, OUTPUT); // habilitando a comunicação serial Serial.begin (115200); // define o estado inicial do LED digitalWrite (ledPin1, ledState1); digitalWrite (ledPin2, ledState2); // se o pino 0 da entrada analógica estiver desconectado, o ruído // analógico aleatório fará com que a chamada para randomSeed () gere // números de semente diferentes cada vez que o esboço for executado. // randomSeed () embaralhará a função aleatória. randomSeed (analogRead (0));} void loop () {if (printcount ==0) {Serial.println ("pressione o botão 3 quando estiver pronto"); printcount =1; takeReading =LOW; // não ler o botão número 1 e 2 oddNumber =LOW; número par =BAIXO; } if (button3Pressed ==HIGH) {digitalWrite (ledPin1, LOW); digitalWrite (ledPin2, LOW); randNumber =random (minRandomNumber, maxRandomNumber); // em nosso código, nós os mantivemos com atraso de 2.000 a 5.000 (randNumber); if (randNumber &1 ==1) {digitalWrite (ledPin1, HIGH); digitalWrite (ledPin2, LOW); tempo1 =micros (); //Serial.println("ODD "); número ímpar =ALTO; } else {digitalWrite (ledPin1, LOW); digitalWrite (ledPin2, HIGH); tempo1 =micros (); //Serial.println("EVEN "); número par =ALTO; } button3Pressed =LOW; } leitura3 =digitalRead (buttonPin3); // ler button3 if (takeReading ==HIGH) {if (oddNumber ==HIGH) reading1 =digitalRead (buttonPin1); if (evenNumber ==HIGH) reading2 =digitalRead (buttonPin2); } // Se a chave mudou, devido a ruído ou ao pressionar:if (reading1! =LastButtonState1 || reading2! =LastButtonState2 || reading3! =LastButtonState3) {// zera o temporizador de debouncing lastDebounceTime =micros (); } if ((micros () - lastDebounceTime)> debounceDelay) {// seja qual for a leitura, ela está lá por mais tempo // do que o atraso de debounce, então tome-o como o estado atual atual:// se o estado do botão foi alterado:if (reading1! =buttonState1) {buttonState1 =reading1; // somente alternar o LED se o novo estado do botão for HIGH if (buttonState1 ==HIGH) {Serial.print ("Seu tempo de reação é:"); Serial.print (lastDebounceTime - time1); Serial.println ("nós"); Serial.println (); printcount =0; }} if (reading2! =buttonState2) {buttonState2 =reading2; // somente alternar o LED se o novo estado do botão for HIGH if (buttonState2 ==HIGH) {Serial.print ("Seu tempo de reação é:"); Serial.print (lastDebounceTime - time1); Serial.println ("nós"); Serial.println (); printcount =0; }} if (reading3! =buttonState3) {buttonState3 =reading3; // somente alternar o LED se o novo estado do botão for HIGH if (buttonState3 ==HIGH) {Serial.println ("READY TO GO"); button3Pressed =HIGH; takeReading =HIGH; }}} // salve a leitura. Da próxima vez no loop, // será o lastButtonState:lastButtonState1 =reading1; lastButtonState2 =leitura2; lastButtonState3 =reading3;} 

Esquemas


Processo de manufatura

  1. É hora de substituir seus garfos de empilhadeira?
  2. Alarme de planta de alerta de sede
  3. Word Clock italiano
  4. Apenas três pinos para um teclado 4x3
  5. Medidor Sigfox kWh
  6. Monitor de temperatura Bluetooth
  7. Bloqueio controlado por gestos
  8. O Companion IC
  9. Uma entrada analógica isolada para Arduino
  10. É hora de atualizar seu compressor?