====== Ibounce() ====== ''Ibounce()''는 입력 상태가 지정한 시간 동안 상태가 변하지 않고 유지된 값을 반환하는 함수입니다. 입력이 짧게 흔들리거나 기계식 스위치에서 채터링이 발생해도 안정된 상태만 반환합니다. 이 함수는 ''delay()''처럼 프로그램을 멈추지 않으므로 ''loop()''에서 계속 호출할 수 있습니다. {{:commands:ibounce_timing.svg?900|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:reference:idigitalread|IdigitalRead() 상세 설명 보기]] * [[commands:reference:ibounceon|IbounceOn() 상세 설명 보기]] * [[commands:reference:ibounceoff|IbounceOff() 상세 설명 보기]] [[commands:builtin|← 내장 명령어 리스트]]