아두이노에 입력된 데이터 값을 표시하는 도구는 많지만 이번 글에서는 아두이노 LCD 연결을 해보려고 한다. LCD는 다른 녀석들에 비해서 연결하는 게 조금 복잡하지만 그만큼 다양한 출력을 할 수 있는 장점이 있는데 그 원리를 이해하면서 하나씩 연결하려니 꽤 시간이 걸리기는 하더라. (나중에 또 연결할 때 참고하기 위해서 그 과정을 정리해 놓으려고 한다.)
내가 갖고 있던 LCD는 아래 사진처럼 핀이 연결되어 있지 않은 녀석이라서 지금까지 활용을 못해보고 있다가 오늘 난생처음으로 납땜을 해봤다.
우연히 서랍에서 핀을 발견하고 납땜을 해서 붙여보기로 한다.
총 16개의 핀을 붙여야 하는데 한두 개 하다 보니 나름대로 익숙해져서 오래 걸리지 않고 LCD와 핀을 붙였다.
조금 엉성하긴 하지만 짱짱하게 붙였고 제 역할을 다하니 만족스럽다.
그동안 이 녀석을 어떻게 사용해야 할지 막막했는데 어찌 됐든 이제 사용할 준비는 됐고.... 이번 글에서는 아두이노와 이 LCD를 연결하는 과정을 정리해보려고 한다. 그리고 가변저항을 하나 달아서 LCD의 밝기를 조절하는 과정까지 알아보도록 하고 다음 글에서는 각종 센서의 값을 받아와서 출력하는 예제를 만들어보기로 한다.
뭐..대충 영상 정도의 예제를 만들어보려고 하는데 현재 LCD에 출력되고 있는 값은 조도센서를 하나 달아서 값을 출력하고 있는 모습이다. 여하튼 센서의 값을 출력하는 예제는 다음 글에서 해보기로 하고 아두이노와 LCD를 연결해보자.
현재 내가 갖고 있는 LCD의 각 핀은 사진처럼 VSS(-), VDD(+), V0, RS, RW, E, D0~D7, A, K로 표시가 되어 있는데 이게 제품마다 약간씩 차이가 있는 것 같더라. 여하튼 나는 이런 글을 작성하는 이유가 나중에 참고하기 위함이니 이걸 기준으로 정리를 한다.
일단 VSS와 VDD는 각각 음극과 양극이고 A, K는 LCD의 밝기를 조절할 수 있는 (+)와 (-)인데... 나는 여기에 가변저항을 달아서 K로 연결을 해서 그 밝기를 조절을 했다. 그리고 V0은 글자의 밝기를 조절하는 역할을 하는데 저항의 크기를 줄이면 글자의 밝기 역시 변하게 된다.
RS는 전송된 데이터를 표시하거나 지우는 역할을 하는 핀으로 디지털 12번에 연결을 했으며 RW는 읽기와 쓰기 모드를 바꾸는 역할을 하는데 (-) 연결을 했다. 또 E는 모듈의 활성화를 위한 핀이고 디지털 11핀에 연결을 한 상태이다. 오늘 이 녀석을 처음 가지고 노는 거라서 RS와 RW의 개념은 아직 잘 모르겠다.ㅎ
그리고 나머지 D0~D7까지는 데이터를 모듈에 공급하는 역할을 하는 녀석들인데 나는 아두이노의 디지털 핀 2번부터 5번까지를 D4부터 D7에 순서대로 연결을 했다.
나만 알아볼 수 있는 조금은 복잡한 구조이지만 한두 번 연결해보니 안 보고도 하겠더라. 이제 아두이노 스케치에서 코딩을 해서 업로드 시켜보자.
코딩은 생각보다 간단하다. 먼저 LCD 관련 라이브러리를 추가하기 위해서 #include <LiquidCrystal.h>파일을 불러왔으며 각각의 핀 번호를 인자로 전달하는 lcd라는 객체를 만들고 있는 모습이다. setup() 구간에서는 LCD의 글자를 표시할 수 있는 열과 행을 설정을 하고 print() 함수를 이용해서 hello world!를 출력하고 있다.
그리고 반복 구간에서는 데이터를 출력한 커서의 위치(0, 1)를 지정한 후 그 위치 즉, 아래 줄의 첫 번째 칸부터 아날로그 값으로 받아온 조도센서의 값을 표시하도록 하고 있는 모습이다. 이 소스 코드를 아두이노에 업로드하고 실행하면 앞에서 봤던 영상처럼 LCD의 첫 줄에는 hello world가 출력되고 두 번째 줄에서는 밝기에 따라서 0부터 1023 사이의 아날로그 값이 출력이 된다.
이렇게 해서 아두이노와 LCD를 연결하는 과정을 정리해봤는데 다음 글에서는 각종 센서를 연결해서 그 값을 LCD에 출력하는 예제를 만들어 보면서 이 녀석을 활용해보기로 하자.