요즘 몇 일간 뜸했네요. 몇몇 하고 싶지 않았지만 어쩔 수 없이 해야할 일... 모 드라마의 대사처럼 앞에 있는 독배를 마실 수 밖에 없는 상황 몇몇과 또 바쁜 몇몇 일들로 블로그 관리가 소흘했네요. 이제 더위도 한 걸음 달아난 모양이에요. 적어도 새벽에는 시원하더군요^^

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


http://pinkwink.kr/trackback/572 관련글 쓰기
  • 핑구야 날자 2013/08/28 21:50

    디버깅 도구가 있다면 훨신 코딩하기 편할텐데 말이죠

    • PinkWink 2013/08/29 09:47

      그렇죠.. 그래도 괜찮아요. 무료로 배포되는 아이가 이정도 수준이라면 꽤 만족할만하죠^^

  • 블루오션 2013/08/29 09:53

    잘보고 갑니다 ~
    즐거운 하루되세요 ^^

  • 장발장 2013/09/24 18:20

    엔코더 값을 정확히 읽는 곳이 2, 3번 밖에 없나요?
    UNO 한개로는 엔코더 모터 하나밖에 정확히 구동할 수 없는건가요?

    • PinkWink 2013/09/24 19:28

      http://arduino.cc/en/Main/ArduinoBoardUno
      에서도 나와 있지만
      UNO 보드의 외부 인터럽트는 딱 두개, 2,3번입니다. 엔코더는 둘다 사용해야하니 어쩔 수 없이 엔코더는 하나를 사용할 수 밖에는 없지요.

  • 장발장 2013/10/15 16:41

    방향은 무시하고 엔코더 하나당 하나의 핀만 사용해서 ,, 두개의 엔코더 값을 읽을 수 있다는 얘기를 들은 거 같은데, 어렵네요..ㅎ

    • PinkWink 2013/10/15 19:16

      엔코더의 A상만 연결해서 카운트한 결과를 읽으면 될듯합니다. 방향은 무시하구요.
      그런데 해보진 않았습니다.^^