본문 바로가기
소프트웨어

[아두이노를 배워봅시다!] 시리얼 통신을 이용해서 LCD에 글자를 써봅시다.

by 블루덕 2023. 4. 3.

아두이노는 시리얼 통신을 지원합니다. 시리얼 통신을 사용해서 LCD에 글자를 한번 써보도록 합시다.

 

* LCD를 사용하기 전에 LiquidCrystal 라이브러리를 반드시 아두이노 IDE에 추가 하여야 합니다. 

 

시리얼 통신을 사용할것이기 때문에 setup 안에 Serial.begin(9600); 코드가 반드시 들어가야 합니다. 

그아래에 있는 Serial.setTimeout(5); 의 의미는 시리얼통신이 오고나면 타임아웃이 걸리는데 까지 보통 1000msec 가 걸리는데 우리는 응답을 좀 빠르게 하기 위해서 이 값을 5msec로 변경해 주겠습니다. 

 

이 코드에서 중요한 내용은 특정 명령어를 아두이노에게 전송하고 그 특정 명령어를 수신하면 LCD창에 미리 입력해둔 묵구가 표시되도록 하는 기능입니다.

 

LCD ON 이라는 문구를 출력하기 위해서 미리 명령어를 지정하겠습니다. 

0x02 0x10 0x03 이라는 명령어가 전송되면 LCD ON 이라는 글자를 LCD 창에 띄웁니다. 

0x02 0x00 0x03 이라는 명령어가 전송되면 LCD OFF라는 글자를 LCD에 표시하고 1초뒤에 LCD 창을 지웁니다. 

 

여기서 0x02는 무엇을 의미하냐면 0x는 헥사 코드를 의미합니다. 즉 16진수 라는 이야기 입니다. 우리는 10진수에 매우 익숙하죠, 컴퓨터는 2진수를 처리합니다. 그런데 프로그래밍에서는 16진법을 사용하는 경우가 편리할때가 있습니다. 그래서 이번 코드에는 16진수를 사용하도록 하겠습니다. 

 

0x02는 명령을 전송하기 위한 첫 신호이고

0x03은 명령의 마지막 신호 입니다. 

0x01은 실제 명령어 이고요.

 

이렇게 하는 이유는 어떤신호부터가 명령어이고 어떤 신호가 오면 명령어의 끝인지를 쉽게 구분하기 위해서 사용하는 방법입니다. 

 

더 쉽게 이야기하면 기차를 생각하면 쉽습니다.

0x02는 기차의 맨앞, 즉 기관차라고 생각하시면 됩니다. 기관차가 기차를 끌고가죠? 그래서 항상 맨 앞에 있습니다. 

그리고 0x03은 기차의 맨 끝칸이라고 생각하시면 됩니다. 

 

아두이노 입장에서 기관차를 인식하고 맨끝칸을 인식하면, 아.. 명령어가 들어왔구나 이렇게 생각할수 있도록 하기 위함입니다. 

 

0x01은 명령어라고 했죠? 기차의 예를 들면 1번째 칸에 들어 있는 승객이 명령어 이다. 라고 생각하면 좀 쉽게 이해가 될것 같습니다. 

 

그래서 0x01은 LCD ON을 LCD창에 표기하는 것이고, 0x00은 글자를 지우는 명령어 입니다. 

 

그럼이제 아래 코드를 아두이노 IDE에 붙여넣고 실행을 시켜 봅시다. 

 

I2CLCD_232.ino
0.00MB

 

 

오늘도 즐공 하시고, 건강하세요. 

 

감사합니다.