반응형


아두이노에 연결한 버튼을 누르면 시리얼 통신을 이용해서 피시에 눌렀음을 표시해주는 예제 입니다. 

아두이노와 피시를 USB선으로 연결해서 프로그램 짠 것을 컴파일하여 아두이노상의 플래시에 집어넣을 수만 있는 줄은 알았는데 시리얼 통신도 되는 군요. 우선 아두이노 IDE를 실행시켜서 메뉴를 살펴보니 진짜로 시리얼 포트가 잡혀 있네요.. 시리얼 모니터라는 메뉴 항목도 보이구요.

 

메뉴에서 시리얼 모니터를 클릭해보니 아래와 같은 창도 보입니다. 이번 예제에서는 이 창에 출력만 하는 거지만 상단에 Send버튼이 달려있는 것으로 봐서는 간단한 키워드를 입력해서 아두이노 보드에 명령을 내려 볼 수도 있겠네요.

 

우선 이번에 사용할 회로도로 공식 홈페이지에 있는 것입니다. 스위치에 전선 두 가닥만 연결할 것이라는 제 예상과 달리 세 가닥을 연결하고 있습니다.

 

제가 가진 아두이노 Uno와 빵판을 홈페이지에 있던 아래 그림 따라 연결해봅니다.

평소엔 해당 디지털핀 2번이 저항10k옴을 거쳐 그라운드와 연결되어 있다가 버튼을 누르면 5V와 연결되게 됩니다. 이 저항을 풀다운 저항이라고 부른다는 군요. 

버튼을 누르기 전에  디지털 2번핀에 연결되는 선에 흐르는 전압을 재보면 0V가 측정됩니다. 이때 버튼을 눌러보면 디지털 2번핀으로 5V전압이 흐르게 되어 테스터기로 측정해보면 5V값을 얻을 수 있습니다. 왜 풀다운 저항을 다는 지는 이 글 맨 아래에 설명해놓았습니다.

위 이미지에서 사용한 버튼인데 다리가 4개가 달려있고 넓은쪽 면으로 봤을 때 보이는 두 다리가 서로 연결되어 있습니다. 다리가 두 개씩 서로 연결되어 있는 셈이죠.

이때 버튼을 누르면 서로 연결되어 있는 않은 다리쌍끼리 서로 연결이 되게 됩니다.

 

 

이제 프로그래밍적으로 버튼 누르기 전에는 0V, 버튼 누르면 5V가 디지털 2번 핀에 흐른 다는 것을 체크해서 USB케이블을 거쳐 피시에 띄워둔 시리얼 모니터에 값을 출력해 주면 됩니다.

 

처음 초기 상태는 디지털2번핀이 그라운드에 연결된 상태이므로 0V를 의미하는 0값이 출력됩니다.

 

이 때 버튼을 누르게 되면 디지털 2번핀에 5V전압이 흐르게 되어 5V를 의미하는 1을 출력하게 됩니다.

 

다시 버튼을 떼면 디지털2번핀은 그라운드에 연결되어 있는 상태이므로 0이 출력됩니다.

 

위 회로에서 디지털 2번핀에 풀다운저항을 연결해두지 않으면 버튼을 누르지 않은 상태에서 아래처럼 불규칙적으로 1과 0 값들이 출력되는데 플로팅 상태라고 합니다. 입력이 들어오지 않는 한 디지털 2번핀에서는 어떤 값이 입력되었는지 알 수 없기 때문입니다. 그렇기 때문에 풀다운 저항이 필요합니다.


모든 디지털 입력 핀들은 값이 입력되지 않았을 디폴트 상태를 설정하기 위하여 풀업 또는 풀다운 저항을 사용합니다.

0V 또는 5V 어느 전압도 공급되지 않고 있는 입력핀이  플로팅 상태가 되는 것을 방지하기 위해서인데 주변 핀들의 전압변화 같은 전자적 노이즈 같은 것에 의해서 원치않는 결과를 야기할 있기 때문입니다.

 

풀다운 저항을 달은 상태에서 버튼이 눌러지지 않았다면  풀다운 저항을 거쳐 그라운드와 연결되어 있기 때문에 입력핀은 0V값을 유지할 있게 됩니다. 



참고

http://arduino.cc/en/Tutorial/DigitalReadSerial 

반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts