Meça seu tempo de reação
Componentes e suprimentos
| × | 3 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 3 |
Aplicativos e serviços online
|
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
- É hora de substituir seus garfos de empilhadeira?
- Alarme de planta de alerta de sede
- Word Clock italiano
- Apenas três pinos para um teclado 4x3
- Medidor Sigfox kWh
- Monitor de temperatura Bluetooth
- Bloqueio controlado por gestos
- O Companion IC
- Uma entrada analógica isolada para Arduino
- É hora de atualizar seu compressor?