본문 바로가기
아두이노_프로세싱/아두이노

LCD모듈과 Serial LCD 사용

by 돌돌쌤 2012. 6. 26.

프로그램 버전 : Arduino - 1.0

Serial LCD는 일반 LCD모듈 보다 편리하다. 
사실 아무것도 모르고 LCD모듈을 구입한다는 것이 Serial LCD를 구입했고
이것을 사용하기 위해 많은 시간을 소비해야 했다.

사진을 보면 두개중 아래 것이 Serial LCD이다.
앞면


















뒷면


화살표에 (둘중하나)전원과 RX핀 하나만 연결하면 된다.

일반 LCD 모듈을 사용하기 위해서는
아두이노의 LCD라이브러리를 활용하여
소스스케치를 작성하고
아두이노와 LCD모듈을 연결하기 위해서는 
전원을 포함하여 8개이상의 전선을 연결해야한다.

연결그림은 아래와 같다.

회로도와 그림에서

LCD의 E핀과 아두이노의 digital pin 11 연결이 누락됨.

또 LCD모듈이 백라이트를 켠다면 LED+, LED- 핀을 5V와 GND에 추가 연결해야함.






제법 연결할 선이 많다.

LCD화면에 "*"를 이동시키는 스케치다.

#include <LiquidCrystal.h>    //라이브러리 활용

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
/* LCD RS pin to digital pin 12
    LCD Enable pin to digital pin 11
    LCD D4 pin to digital pin 5
    LCD D5 pin to digital pin 4
    LCD D6 pin to digital pin 3
    LCD D7 pin to digital pin 2  */

int i=0;

void setup() {
   lcd.begin(16, 2); // LCD창의 크기 선언 16행 2줄
}
void loop() {
   for(i = 0 ; i < 16 ; i++){
      lcd.print("hello, world!");
      lcd.setCursor(i,1);   //커서의 위치 지정
      lcd.print("*");     //LCD에 *표현
      delay(500);
      lcd.clear();    // LCD 깨끗이
   }
}

라이브러리에 등록된 명령으로 LCD를 표현한다.


Serial LCD사용은 매우 간단하다.
다른 Serial 통신기기를 사용하는 것과 같다.
아두이노와 선의 연결도 간단하다.
전원을 넣기 위한 VCC와 GND 그리고 data를 보내기 위한 RX
3개의 선을 연결하면 끝이다.
일반 LCD모듈을 사용하기 위해서는
LiquidCrystal 라이브러리를 이용하지만
SerialLCD는 다른 Serial 통신 장치의 사용처럼
SoftwareSerial 라이브러리를 이용하여 스케치하고
RX선을 이용하 data를 날리면 된다.
SerialLCD의 화면을 지우거나 커서의 위치를 바꾸거나 밝기를 변동하는 등의
제어를 위해서는 이 모듈의 datasheet
언급된 명령을 활용하면된다. 

소스스케치
----------------------------------------------------------------------------------------
/*다음 스케치는 A0에 센서를 연결하여 센서에 읽힌 값을 SerialLCD에 표시*/

#include <SoftwareSerial.h>  //0번과 1번은 usb로 pc와 통신하므로
                                         //0번과 1번포트 이외의 포트를 사용하기 위함.
SoftwareSerial myserial (2, 3);    //2번과 3번을 시리얼통신 TX,RX로 사용하는 myserial라 정의
int sensorPin = A0;
int sensorval = 0;
void setup()  
{
  myserial.begin(9600);    //기계적으로 사용하고자 하는 장치의 bps를 써 넣는다.
//  myserial.write(124);    //SerLCD에 기계적 제어명령을 내림을 알림
//  myserial.write(146);    //SerLCD를 밝기를 조절 128~157 -> 0~100%
/* 밝기 제어는 잘 안됌 SerLCD를 재부탱해야함. 따라서 밝기를 깜박이도록 하기는 힘듬*/
}
void loop()
{
  sensorval = analogRead(sensorPin);
  
  myserial.write(254);     //SerLCD에 제어명령을 내림을 알림
  myserial.write(128);     //SerLCD 16x2화면에 첫줄 첫번째 위치에 커서
                                  //128+(0~15) 값은 첫줄의 1~16번째 항
                                  //128+(64~9) 값은 두번째줄의 1~16번째 항
  myserial.print(sensorval);  //SerLCD에 A0에서 센싱되는 값 표시
  delay(300);
  myserial.write(254);     //SerLCD에 제어명령을 내림을 알림
  myserial.write(1);       //clear display
 
  delay(300);
}
---------------------------------------------------------------------------------------