8장. 스위치 눌림 시간 알아보기
Language | English |
---|
목표채터링을 피하여 버튼을 사용하는 방법에 대해 알아 볼것입니다. 시간지연을 이용하도록 하겠습니다. 그러나 이 해결책은 단점도 가지고 있습니다. 시간지연을 사용함으로 버튼을 누르는 사람 모두 다 다른 시간이 나타납니다. 이 장에서는 버튼이 눌린 시간을 얻는 방법에 대해서 알아보도록 하겠으며 펄스 시간 계산을 사용했습니다. 또한, 시리얼 포트를 통해 데이터를 모니터링하는 방법에 대해 알아보겠습니다. 부품
펄스마이크로두이노에서 펄스는 High와 Low를 번갈아가며 변하는 디지털 신호입니다. 펄스 타이밍은 종종 광인코더에서 사용됩니다. 이것을 가지고 속도를 계산할 수도 있습니다.
회로도내부 풀업저항을 사용했으며 외부에 100nF 캐패시터를 사용했습니다. 프로그램int pin = 2; // 입력포트핀 D2 설정
float time1,time2; // 타임 변수
void setup()
{
Serial.begin(115200); // 시리얼 포트 보드레이트 설정
pinMode(pin, INPUT_PULLUP); // 입력포트를 입력으로 설정하고 내부 풀업을 사용하도록 설정
}
void loop()
{
//입력포트에서 Low 펄스를 읽고 최대 펄스폭은 60초, 'time1' 변수에 결과 값을 저장하도록 할당
time1= pulseIn(pin, LOW,60000000)/1000; // 시간을 ms로 변환
Serial.print(time1); // 시리얼 포트로 'time1' 변수값을 출력
Serial.print("ms ");
time2= pulseIn(pin, LOW,60000000)/1000.0; // 시간을 ms로 변환
Serial.print(time2); // 시리얼 포트로 'time2' 변수값을 출력
Serial.println("ms"); // 'ms' 단위를 표시하고 println()함수는 값을 출력하고 새로운 줄로 변경하는 함수
}
}
시리얼 모니터링시리얼 모니터 열기
PulseIn()함수
펄스타임의 리턴 값은 'us' 단위를 가지며 타이머의 범위는 10us ~ 3 분입니다.(1s = 100ms = 1000000us)
결과100nF 커패시터를 입력포트에 병렬로 추가하면 더 양호한 결과를 얻을 수 있습니다. 비디오 |