아두이노의 인터럽트
관련링크
본문
아두이노 인터럽트 테스트 위해서 간단하게 버튼과 led 하나로 연결한 모습입니다.
검색해 보면 이런 예제들은 많이 나오는데 이게 샘플 코드 그대로 해보면 뭔가 동작이 이상합니다.
지멋대로 꺼지고 켜지고 하는데... 결론만 말하면 Connect 'Bounce' 때문이라고 하네요.
버튼 접점이 닿고 떨어지는 게 ON/OFF 딱 구분지어지는게 아니라 그 짧은 순간 사이에도
신호가 수차례 출렁거린다는 얘기 같습니다.
https://www.allaboutcircuits.com/textbook/digital/chpt-4/contact-bounce/
https://stackoverflow.com/questions/29756145/arduino-attachinterrupt-seems-to-run-twice
솔루션으로 하나는 캐패시터를 달아 주는 것이고 다른 하나는 millis 함수를 이용해 인터럽트 간에 일정 텀을 두게 하는 것 이라고 합니다.
어떤 글에서는 인터럽트 콜백 내에서 millis 함수 사용을 하지 말라는 글도 있었는데
이 부분에 대한 자세한 내용은 잘 모르겠습니다. 지식이 짧네요. =ㅅ=a
인터럽트 처리 간격을 200ms 정도 줘봤는데 그럭저럭 어색하지 않게 느껴지네요.