반응형

https://youtu.be/rfbAuIAeJuI

 

(로터리엔코더#6) 2004LCD에 아주 복잡한 메뉴트리 구조 설계 및 간단한 제어 해보기!
녹칸다의 로터리엔코더(rotary encoder)와 타이머 인터럽트(timer interrupt)시리즈이다!
세탁기나 각종 전자제품에 많아 달려있는 로터리 엔코더를 아두이노에서 활용해보고자 하는 시리즈이다!
빙글빙글 돌려서 설정값을 바꾸거나 항목을 바꾸는 것이라고 생각하면 될 듯 하다!
가변저항과 유사하지만 가변저항은 돌리다보면 한계지점이 있고 로터리 엔코더는 무한히 회전할 수 있다!
그러다 보니 원수열 형태의 업/다운 카운트가 가능하다!
이번편에는 (#5)예제의 제약조건에서 벗어나서 메뉴의 구성을 양방향 링크드 리스트(linked list)형태로 한다!
가장 표면적으로 들어나는 노드(루트노드)에 메뉴가 3개 있다고 가정할때 각 메뉴마다 서브메뉴의 갯수가 서로 다르다면 어떻게 표현할것인가에 대한 해법이라고 볼 수 있다!
(#5)예제에서 했던대로 2차원 배열로 구성하게 되면 모든 루트노드가 동일한 서브노드의 갯수를 가져야하므로 적절하지 않다!
양방향 링크드 리스트는 삽입과 삭제가 포함되게 되면 꽤나 어려워질지 몰라도 본 예제에서는 생성과 순회만 하면 되므로 녹칸다의 생각에는 충분히 흡수할만한 수준이라 판단한다!
이미 최종결과물의 테스트 버전을 녹칸다가 주말동안 구현을 해두었다!
이번편에서는 녹칸다가 테스트 버전을 어떠한 원리로 만들게 되었는지 설명을 하고 아래와 같은 간단한 예제를 만들도록 한다!
1.양방향 링크드 리스트를 이용한 메뉴트리를 구성하시오!(시리얼 입력/시리얼출력)
2.(1)예제를 2004LCD에 출력하시오!(제어는 시리얼입력으로)
3.(2)예제를 로터리엔코더로 제어가능하도록 하시오!
4.(3)예제에서 LED를 4개 추가하고 LED를 점멸시키는 예제를 구현하시오!
(시간이 남으면 아무거나 더 해보기)

관련라이브러리(LiquidCrystal_I2C/1.1.2)
https://github.com/johnrickman/LiquidCrystal_I2C

 

392-1(가계도를자료구조를이용해서출력해보시오).txt
0.00MB
392-2(메뉴트리를시리얼모니터에그냥출력해라).txt
0.01MB
392-3(리프노드를선택하면뭔가메뉴별로출력되도록해보시오).txt
0.01MB
392-4(로터리엔코더를돌렸을때결과를시리얼모니터에출력).txt
0.01MB
392-5(2004LCD에메뉴가나오도록하시오).txt
0.01MB
392-6(LED를4개연결해서제어하기).txt
0.01MB

반응형
Posted by 덕력킹
,