본문 바로가기

Hardware/Arduino and Friends

아두이노(Arduino)에서 로터리 엔코더 해석하기

요즘 몇 일간 뜸했네요. 몇몇 하고 싶지 않았지만 어쩔 수 없이 해야할 일... 모 드라마의 대사처럼 앞에 있는 독배를 마실 수 밖에 없는 상황 몇몇과 또 바쁜 몇몇 일들로 블로그 관리가 소흘했네요. 이제 더위도 한 걸음 달아난 모양이에요. 적어도 새벽에는 시원하더군요^^ 최근 저는 Python관련된 글을 올리고 있었는데요. Python에 관심을 가지게 될 쯤... 또 관심을 가지게 된 아이가 아두이노(Arduino)랍니다. 아두이노 보드라는 말을 처음 들었을때는 단순히 그냥 학습용 보드겠지... 라고 생각했는데 직접 다뤄보니 그 편리함과, 간편함, 쉬운 접근성 등의 매력에 푹~ 빠져버렸습니다. 

아두이노의 매력은 꽤 많습니다. 보통 단순히 MCU가 필요할때, MCU의 기본부터 학습해 가기 위해서, 컴파일러를 준비해야하고, 또 컴파일러 자체를 익혀야하고, ... 아무튼 엄청 많은 노력이 들어갑니다. 그러나~ 만약 내가 프로토타입 혹은 단순한 테스트 혹은 취미 활동 수준의 단순한 일들을 하고 싶다면, 생각보다는 많은 에너지 낭비이기도 합니다. 그걸 아두이노는 상당히 편하게 접근하게 해 준다는 것을 알았습니다. 제 경우는 아두이노 보드를 구하고, 동봉된 케이블로 PC에 연결하고, 아두이노 소프트웨어를 살짝 다운받아 깔고, 예제를 돌려보고 감탄하는데 딱 10분도 걸리지 않았습니다. 특히 또 대단한 장점은 바로 오픈플랫폼이라는 것입니다. 회로도와 소프트웨어 소스는 이미 다 공개되어 버렸고, 심지어 커머셜 버젼으로도 사용할 수 있도록 저작권이 허용되어 있습니다. 대단하죠~ 여기서 제가 주저리주저리 이야기 하지 않아도, 그냥 검색 사이트에서 아두이노라고만 검색해 봐도 아주 많은 글들이 있습니다.^^ 그 중에서 저는 아두이노로 엔코더를 해석하는 부분을 (절대 소스 깊숙히 들어가지 않고, 그냥 사용하기 수준^^ 제가 항상 그러하듯이 말이죠^^) 오늘은 다뤄볼려고 합니다.

먼저 위 사이트에 가보면 [바로가기] 아두이노에서 엔코더를 해석하는 라이브러리를 배포하고 있습니다. 다운받아 압축을 풀고, 편하게 아두이노IDE 프로그램이 설치된 경로의 libraries 폴더 아래에 다른 라이브러리들과 함께 복사해 넣고, 아두이노 IDE를 재실행해주면 됩니다.

저는 Arduino UNO를 사용했습니다. UNO는 2번 3번이 인터럽트 포트입니다. 여기다 물려줘야 정확한 엔코더값을 읽을 수 있습니다. A,B상을 각 각 연결해주고, 제가 사용한 엔코더는 저전력에 5V를 사용하는 거라 그냥 UNO의 출력을 사용했습니다. 그나저나 Fritzing은 왜 딱 구미에 맞는 엔코더가 없는지..ㅠㅠ

실제 연결된 모습이구요. 모터는 연결하지 않고 그냥 손으로 살짝 돌려보았습니다.

간단한 연결이라 뭐 딱히 할 말이 없습니다. 그리고 Arduino IDE 프로그램에서 예제 읽어오기에서 Ecoder 예제를 하나 불렀습니다.

여기서 수정한건 오른쪽 하단 그림처럼 2, 3번을 왼쪽 코드처럼 지정해 준 것 뿐입니다. 그리고, 시리얼 모니터링 도구를 사용해서 관찰해보면, 저렇게 잘 카운팅되는 것을 확인할 수 있습니다. 고가의 고급형 컴파일러처럼 디버깅 도구를 제공하는 것은 아니지만, 자체적으로 시리얼 모니터링을 제공하고 있으니, 간편히 확인하기 좋더군요. ㅎ 이렇게 전 또 하나의 도구를 가지고 감명받고 있습니다. 왜~~~ 우리는 요런 멋드러진 아이를 만들 아이디어를 내지 못했을까 ... 하다가 그런 골치 아픈 일은 글로벌하게 멋진 분들이 하는 거고, 전 그냥 요런 아이들을 잘 쓰는 걸로 만족해야겠다... 라는 마인드로 바꾸었습니다. ㅎㅎㅎ

반응형