사용자 도구

사이트 도구


commands:ibounce

Ibounce()

Ibounce()는 입력 상태가 지정한 시간 동안 상태가 변하지 않고 유지된 값을 반환하는 함수입니다. 입력이 짧게 흔들리거나 기계식 스위치에서 채터링이 발생해도 안정된 상태만 반환합니다.

이 함수는 delay()처럼 프로그램을 멈추지 않으므로 loop()에서 계속 호출할 수 있습니다.

Ibounce 입력 필터 동작

명령어

bool Ibounce(uint8_t pin, uint32_t debounceTime)

명령어 인수 반환값 동작
Ibounce(pin, debounceTime) pin: 디지털 입력 핀 또는 논리 입력 번호
debounceTime: 상태 유지 시간(ms)
bool 입력 상태가 지정한 시간 동안 변하지 않으면 유지된 값을 반환합니다.

예제

다음 예제는 MPAINO의 첫 번째 디지털 입력 0을 50ms 동안 필터링하여 첫 번째 디지털 출력 64로 전달하고, 안정 상태가 바뀔 때만 시리얼 모니터에 기록합니다.

const uint8_t INPUT_CHANNEL = 0;
const uint8_t OUTPUT_CHANNEL = 64;
 
void setup() {
  Serial.begin(115200);
}
 
void loop() {
  const bool inputState = Ibounce(INPUT_CHANNEL, 50);  // 입력 상태가 50ms 동안 유지되면 안정된 ON·OFF 값을 반환합니다.
  digitalWrite(OUTPUT_CHANNEL, inputState ? HIGH : LOW);
 
  static bool previousState = false;
  if (inputState != previousState) {
    previousState = inputState;
    Serial.println(inputState ? F("input ON") : F("input OFF"));
  }
}

주의사항

  • Ibounce()는 ON과 OFF 양방향에 같은 안정 시간을 적용합니다.
  • loop()에서 짧은 주기로 계속 호출해야 합니다. 호출 간격이 길면 입력 상태 반영도 늦어집니다.
  • debounceTime을 길게 설정하면 노이즈에는 강해지지만 정상 입력의 응답도 그만큼 느려집니다.
  • pin은 사용하는 제품의 입력 번호 기준을 따라야 합니다. MPINO는 제품별 Arduino 디지털 입력 핀 번호를 사용하고, 지원되는 MPAINO는 0부터 시작하는 논리 입력 번호를 사용합니다.
  • 유효하지 않은 핀 번호를 지정하면 false를 반환합니다.

같은 카테고리의 내장 명령어

commands/ibounce.txt · 마지막으로 수정됨: 저자 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki