엠블럭 기초프로그래밍 #2의 4_2.Tact_Switch를 질문드립니다.
코드를 보면 당연히, 버튼을 누를 때와 놓을 때, '스위치 눌러볼래?'와 '오! 눌렀네?! 좋아!'가 나올 것 같은데
버튼을 누르지 않은 상태에서 '스위치 눌러볼래?'와 '오! 눌렀네?! 좋아!'가 번갈아 나옵니다.
아두이노 보드도 바꿔보고, 스위치, 보드 다 교환해서 해봐도 결과가 마찬가지 입니다.
어떤 문제가 있을까요?
더불어서 4_3.Switch_LED에서는 불이 켜진 상태에서 스위치를 누르면 더 밝아지고, 놓으면 원래 발기로 켜집니다.
아무것도 아닌 예제라 생각했는데, 하드웨어 특성을 잘 이해하고 있지 못한 것인지...제시된 결과가 나오지 않아 좀 답답합니다.
설명 부탁드립니다.
아두이노 IDE에서는 input을 설정할 때 pull_up인지 pull_down인지 코드적으로 설정할 수가 있습니다
하지만 엠블럭의 경우 블럭을 공용으로 사용하기 때문에 이러한 부분을 세세하게 설정하기 어려워요
따라서 0과 1이 반복적으로 출력되어서 0과 1이 아닌 애매한 값(0.5 같은 값)이 연속적으로 출력되는 것처럼 보이는 것입니다.
이 때문에 led도 미세하게 빛이 켜지고 버튼을 누르면 강하게 켜지는 거죠(0과 1이 빠르게 반복 되면서 0.5의 밝기로 켜지는 것이라고 이해하시면 됩니다)
해당 증상은 채터링이라고 하는 건데요
이를 해결하기 위해서는 저항을 연결하는 등 추가적인 회로 구성 소요가 있습니다
5V전원을 저항을 통해서 5번핀과 스위치 다리A가 연결되어 있는 곳에 물리고, 나머지 스위치 다리B엔 gnd를 물리는 거죠
(기존 회로에서 차이는 5V핀을 스위치와 D5번 핀이 물려있는 곳에 추가적으로 연결해준다는 겁니다. 저항은 과전류를 방지합니다.)