[아두이노#387] (로터리엔코더#1) 로터리엔코더(rotary encoder)와 타이머 인터럽트(timer interrupt) 시리즈의 튜토리얼!(녹칸다/포로리야공대가자)
(로터리엔코더#1) 로터리엔코더(rotary encoder)와 타이머 인터럽트(timer interrupt) 시리즈의 튜토리얼!
녹칸다의 로터리엔코더(rotary encoder)와 타이머 인터럽트(timer interrupt)시리즈이다!
세탁기나 각종 전자제품에 많아 달려있는 로터리 엔코더를 아두이노에서 활용해보고자 하는 시리즈이다!
빙글빙글 돌려서 설정값을 바꾸거나 항목을 바꾸는 것이라고 생각하면 될 듯 하다!
가변저항과 유사하지만 가변저항은 돌리다보면 한계지점이 있고 로터리 엔코더는 무한히 회전할 수 있다!
그러다 보니 원수열 형태의 업/다운 카운트가 가능하다!
이번편에서는 로터리엔코더의 기본적인 원리에 대해서 알아보고 어떻게 하면 아두이노에서 활용할 수 있을 것인지 알아보는 튜토리얼 편이다!
튜토리얼편에서는 타이머 인터럽트없이 메인 루프에서 로터리엔코더의 회전방향을 인식해보도록 한다!
로터리 엔코더의 회전을 인식하는 기본코드를 구현한다음 아래와 같은 쉬운 예제를 다루어보도록 하자!
(전반부 대부분 예제는 시리얼 모니터에 결과를 출력해본다!)
1.아두이노에 LED를 2개 연결하고 회전방향에 따라 서로다른 LED가 켜지도록 하시오!
2.아두이노에 LED가 4개 연결되어있을때 로터리 엔코더로 LED를 순차적으로 점멸시켜보자!
3.아두이노에 FND모듈(TM1637)을 연결하고 로터리 엔코더로 업/다운 카운트를 구현해보자!(버튼누르면 초기화)
4.아두이노에 1602LCD를 연결하고 로터리엔코더로 업/다운 카운트를 구현해보자!(버튼누르면 초기화)
5.가상의 세탁기가 있다고 가정하고 6가지 메뉴가 있다고할때 로터리 엔코더로 메뉴를 변경하기 위해서 어떻게 하면 좋을지 고민해보자!
관련라이브러리(TM1637/1.2.0)
https://github.com/avishorp/TM1637
관련라이브러리(LiquidCrystal_I2C/1.1.2)
https://github.com/johnrickman/LiquidCrystal_I2C