제조공정
| × | 3 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 3 |
|
나는 작가가 반응 시간이 운동 선수, 저격수, 크리켓 선수 및 야구 선수의 삶에 미치는 영향에 대해 깊은 인상을 주려는 기사를 읽고 있었습니다. 마침내 그는 일반 사람들의 삶에 미치는 영향에 대해 결론을 내렸고 저는 반응 시간이 우리의 일상 생활에 많은 영향을 미친다는 사실에 놀랐습니다.
예를 들어, 운전 중 정상적인 반응 시간보다 느린 반응은 심각한 결과를 초래할 수 있습니다.
내 반응 시간을 어떻게 측정할 수 있을까?
다음은 결과입니다.
1단계:필요한 것
다음은 반응 시간을 측정하는 데 필요한 목록입니다.
하드웨어:
그림> 그림> 그림> 그림> 그림> 그림>소프트웨어:
<울>위에서 언급한 구성 요소는 전자 애호가의 바닥에 누워 있어야 합니다 :).
구성 요소에 대해 의심이 가는 부분이 있으면 이미지를 참조하세요.
2단계:반응 시간(RT)을 측정하는 절차는 무엇입니까?
우리 인체에는 많은 반응 시간이 있습니다. 오디오 RT, 비주얼 RT, 터치 RT 등이 있습니다. 이 지침에서 우리는 측정을 살펴볼 것입니다.
시각적 반응 시간.
시각적 반응 시간 측정 절차:
<울>내가 언급한 하드웨어 구성 요소 목록에서 3개의 버튼 중 1개의 버튼은 준비 버튼 역할을 하고 나머지 2개의 버튼은
LED1-->BUTTON1, LED2-->BUTTON2와 같은 두 개의 LED에 해당합니다. 이는 LED1이 켜지면 테스트 중인 사람이 BUTTON1을 눌러야 한다는 것을 의미합니다.
LED2.
3단계:정리하기
위의 이미지에서 당신은 회로의 구성을 볼 수 있습니다. 여기에 몇 가지 요점을 제시하겠습니다.
<울>참고: 위에서 언급한 핀 번호는 귀하의 선택에 따라 다를 수 있습니다. 저는 방금 제 선호도를 언급했습니다.
4단계:코드 작성
나는 당신이 다운로드하여 플레이를 시작할 수 있도록 지시할 수 있는 Arduino 코드를 첨부했지만 나는 당신이 직접 작성하는 것이 좋습니다. 다음은 코드를 작성할 때 염두에 두어야 할 몇 가지 사항입니다.
<울>위의 단계 중 하나라도 의심이 가는 경우 첨부된 동영상을 확인하세요.
5단계:테스트 시간
모든 설정이 완료되었습니다. 친구에게 전화를 걸어 누가 가장 빠른지 확인하세요. 차트를 준비하고 평균을 취하고(arduino가 그렇게 하는 것이 더 좋습니다) 승자를 선언합니다. 내 데모 동영상을 첨부했습니다. 부담 없이 보세요. 평균 시각적 반응 시간은 약 250ms입니다.
추신:음주 후 이 이상이면 운전하지 마세요.
// 핀 번호를 설정합니다. 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;}섹션>
제조공정
구성품 및 소모품 Arduino Nano R3 × 1 연산 증폭기 IC TL061 × 1 저항 10k 옴 × 2 저항 1M 옴 × 1 세라믹 디스크 커패시터, 39pF × 1 소형 1-2W 트래픽의 2차 코일 × 1 필요한 도구 및 기계 납땜 인두(일반) 앱 및 온라인 서비스 Arduino IDE 이 프로젝트 정보 지진계는 지진을 감지하고 강도
구성품 및 소모품 Arduino UNO × 1 Adafruit Standard LCD - 파란색 바탕에 16x2 흰색 × 1 SparkFun 푸시버튼 스위치 12mm × 4 저항 10k 옴 × 4 저항 221옴 음, 220옴... × 2 단일 회전 전위차계 - 100,000옴 × 1 부저 × 1 브레드보드(일반) × 1 점퍼 와이어(일반) × 1