산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

반응 시간 측정

구성품 및 소모품

푸시 버튼
× 3
5mm LED:빨간색
× 2
남성/남성 점퍼 와이어
× 1
브레드보드(일반)
× 1
Arduino UNO
× 1
USB-A-B 케이블
× 1
저항 100옴
× 2
저항 10k 옴
× 3

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

나는 작가가 반응 시간이 운동 선수, 저격수, 크리켓 선수 및 야구 선수의 삶에 미치는 영향에 대해 깊은 인상을 주려는 기사를 읽고 있었습니다. 마침내 그는 일반 사람들의 삶에 미치는 영향에 대해 결론을 내렸고 저는 반응 시간이 우리의 일상 생활에 많은 영향을 미친다는 사실에 놀랐습니다.

예를 들어, 운전 중 정상적인 반응 시간보다 느린 반응은 심각한 결과를 초래할 수 있습니다.

내 반응 시간을 어떻게 측정할 수 있을까?

다음은 결과입니다.

1단계:필요한 것

다음은 반응 시간을 측정하는 데 필요한 목록입니다.

하드웨어:

소프트웨어:

<울>
  • 아두이노 IDE
  • 위에서 언급한 구성 요소는 전자 애호가의 바닥에 누워 있어야 합니다 :).

    구성 요소에 대해 의심이 가는 부분이 있으면 이미지를 참조하세요.

    2단계:반응 시간(RT)을 측정하는 절차는 무엇입니까?

    우리 인체에는 많은 반응 시간이 있습니다. 오디오 RT, 비주얼 RT, 터치 RT 등이 있습니다. 이 지침에서 우리는 측정을 살펴볼 것입니다.

    시각적 반응 시간.

    시각적 반응 시간 측정 절차:

    <울>
  • Arduino의 직렬 모니터에 "준비되면 준비 버튼을 누르십시오"라는 메시지를 표시합니다.
  • 테스트 중인 사람이 준비 버튼을 누르면 임의의 시간 간격이 지나면 두 개의 LED 중 하나가 너무 무작위로 켜져야 합니다.
  • 검사 대상자는 가능한 한 빨리 해당 버튼을 눌러야 합니다.
  • Arduino는 LED가 켜지는 시간과 해당 버튼을 누르는 사람의 시간 차이를 기록합니다.
  • 측정한 반응 시간의 메시지를 아두이노 시리얼 모니터에 올려보세요.
  • 내가 언급한 하드웨어 구성 요소 목록에서 3개의 버튼 중 1개의 버튼은 준비 버튼 역할을 하고 나머지 2개의 버튼은

    LED1-->BUTTON1, LED2-->BUTTON2와 같은 두 개의 LED에 해당합니다. 이는 LED1이 켜지면 테스트 중인 사람이 BUTTON1을 눌러야 한다는 것을 의미합니다.

    LED2.

    3단계:정리하기

    위의 이미지에서 당신은 회로의 구성을 볼 수 있습니다. 여기에 몇 가지 요점을 제시하겠습니다.

    <울>
  • arduino 보드의 5V 및 GND를 브레드보드에 연결합니다.
  • 전류 제한 100옴 저항을 통해 두 LED의 음극을 연결합니다.
  • LED1과 LED2의 양극을 각각 핀 번호 8과 12에 연결합니다.
  • 이미지와 같이 플러그인 푸시 버튼. (버튼이 열린 상태에서 푸시 버튼의 경우 측면 리드가 단락되고 버튼이 눌려지면 대각선 리드
  • 단락됨)
  • 그림과 같이 10K Ohm 저항을 연결하면 풀다운 저항 역할을 합니다.
  • 다른 리드를 브레드보드의 5V 레일에 연결합니다.
  • 마지막으로 버튼을 Arduino 보드의 핀 2, 4, 7에 연결합니다.
  • 참고: 위에서 언급한 핀 번호는 귀하의 선택에 따라 다를 수 있습니다. 저는 방금 제 선호도를 언급했습니다.


    4단계:코드 작성

    나는 당신이 다운로드하여 플레이를 시작할 수 있도록 지시할 수 있는 Arduino 코드를 첨부했지만 나는 당신이 직접 작성하는 것이 좋습니다. 다음은 코드를 작성할 때 염두에 두어야 할 몇 가지 사항입니다.

    <울>
  • 푸시 버튼의 비난에 주의하십시오.
  • 코드가 반응 시간을 측정할 때 좋은 해상도를 제공해야 합니다.
  • 디버깅과 휴먼 인터페이스를 위해 직렬 모니터를 사용합니다.
  • 위의 단계 중 하나라도 의심이 가는 경우 첨부된 동영상을 확인하세요.

    5단계:테스트 시간

    모든 설정이 완료되었습니다. 친구에게 전화를 걸어 누가 가장 빠른지 확인하세요. 차트를 준비하고 평균을 취하고(arduino가 그렇게 하는 것이 더 좋습니다) 승자를 선언합니다. 내 데모 동영상을 첨부했습니다. 부담 없이 보세요. 평균 시각적 반응 시간은 약 250ms입니다.

    추신:음주 후 이 이상이면 운전하지 마세요.


    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • 반응 시간을 측정하기 위한 Arduino 코드
  • 반응 시간을 측정하기 위한 Arduino 코드.Arduino
    코드를 실행하고 직렬 모니터를 엽니다.
    // 핀 번호를 설정합니다. const int buttonPin1 =4; // pushbutton1의 번호 pinconst int buttonPin2 =2; // pushbutton2의 번호 pinconst int buttonPin3 =7; // pushbutton3의 번호 pinconst int ledPin1 =8; // LED1 양극(+)의 수 pinconst int ledPin2 =12; // LED2 anode(+) 핀의 수// 변수가 변경됩니다. int ledState1 =LOW; // LED1int의 현재 상태 ledState2 =LOW; // LED2int의 현재 상태 buttonState1; // 입력 pin1int buttonState2의 현재 판독값; // 입력 pin2int에서 현재 판독값 buttonState3; // 입력 pin3int에서 현재 판독값 lastButtonState1 =LOW; // 입력 pin1int에서 이전 읽기 lastButtonState2 =LOW; // 입력 pin2int에서 이전 판독값 lastButtonState3 =LOW; // 입력 pin3의 이전 판독값// 마이크로초로 측정된 시간이// int.unsigned에 저장할 수 있는 것보다 빠르게 더 큰 숫자가 되기 때문에 다음 변수는 깁니다. long lastDebounceTime =0; // 마지막으로 출력 핀이 토글된 시간long debounceDelay =20000; // 마이크로 초 단위의 디바운스 시간 unsigned long randNumber; // 생성된 난수unsigned long minRandomNumber =2000; // 난수의 범위를 지정하는 데 사용되는 최소 숫자unsigned long maxRandomNumber =5000; // 난수의 범위를 지정하는 데 사용되는 최대 수 unsigned long time1,time2;int button3Pressed =LOW;int printcount =0;int takeReading =LOW;//읽기 버튼에 대한 변수 도움말 pinint reading1;int reading2;int reading3;/ /다음 변수 도움말은 특정 LED에 해당하는 읽기 버튼, 즉 LED1 --> BUTTON1 및 LED2 --> BUTTON2int 홀수 번호;int evenNumber;void setup(){ pinMode(buttonPin1, INPUT); 핀모드(버튼핀2, 입력); 핀모드(버튼핀3, 입력); 핀모드(LED핀1, 출력); 핀모드(LED핀2, 출력); //시리얼 통신 활성화 Serial.begin(115200); // 초기 LED 상태 설정 digitalWrite(ledPin1, ledState1); 디지털 쓰기(ledPin2, ledState2); // 아날로그 입력 핀 0이 연결되어 있지 않으면 무작위 아날로그 // 노이즈로 인해 randomSeed() 호출이 // 스케치가 실행될 때마다 다른 시드 번호를 생성합니다. // randomSeed()는 random 함수를 섞습니다. randomSeed(analogRead(0));} 무효 루프() { if( printcount ==0) { Serial.println("준비가 되면 3번 버튼을 누르세요"); 인쇄 횟수 =1; 읽기 =낮음; // 1번과 2번 버튼을 읽지 않는다. oddNumber =LOW; 짝수 =낮음; } if( button3Pressed ==HIGH) { digitalWrite(ledPin1, LOW); 디지털 쓰기(ledPin2, LOW); randNumber =무작위(minRandomNumber, maxRandomNumber); // 우리 코드에서는 그것들을 2000에서 5000으로 유지했습니다. delay(randNumber); if ( randNumber &1 ==1) { digitalWrite(ledPin1, HIGH); 디지털 쓰기(ledPin2, LOW); time1 =마이크로(); //Serial.println("ODD"); 홀수 =높음; } else { digitalWrite(ledPin1, LOW); 디지털 쓰기(ledPin2, HIGH); time1 =마이크로(); //Serial.println("짝수"); 짝수 =높음; } 버튼3누름 =낮음; } 읽기3 =디지털 읽기(버튼핀3); //버튼3 읽기 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; // 새 버튼 상태가 HIGH인 경우에만 LED를 토글합니다. if (buttonState1 ==HIGH) { Serial.print("당신의 반응 시간은:"); Serial.print(lastDebounceTime - time1); Serial.println("우리"); 직렬.println(); 인쇄 횟수 =0; } } if (reading2 !=buttonState2) { buttonState2 =Reading2; // 새 버튼 상태가 HIGH인 경우에만 LED를 토글 if (buttonState2 ==HIGH) { Serial.print("귀하의 반응 시간:"); Serial.print(lastDebounceTime - time1); Serial.println("우리"); 직렬.println(); 인쇄 횟수 =0; } } if (reading3 !=buttonState3) { buttonState3 =Reading3; // 새 버튼 상태가 HIGH인 경우에만 LED를 토글 if (buttonState3 ==HIGH) { Serial.println("READY TO GO"); button3눌림 =높음; takeReading =높음; } } } // 판독값을 저장합니다. 다음에 루프를 돌면 // lastButtonState가 됩니다. lastButtonState1 =reading1; lastButtonState2 =읽기2; lastButtonState3 =읽기3;}

    회로도


    제조공정

    1. 지게차 포크를 교체할 때가 되었습니까?
    2. 갈증 경보 식물 알람
    3. 이탈리아어 단어 시계
    4. 4x3 키패드용 핀 3개
    5. Sigfox kWh 미터
    6. 블루투스 온도 모니터
    7. 제스처 제어 잠금
    8. 컴패니언 IC
    9. Arduino용 절연 아날로그 입력
    10. 컴프레서를 업그레이드할 때가 되었습니까?