LCD

LCD Liquid Crystal Display의 약자 "액정표시장치"

즉, 원하는 문자나 그림을 액정에 표시할 수 있음.

LCD 사용법

LCD핀맵

16개의 문자를 2줄로, 총 32개 문자를 표현할 수 있는 LCD를 사용함.

1 VSS GND
2 VCC 5V전원
3 VEE LCD 밝기 조절 핀
4 RS 레지스터 선택핀
5 R/W 읽기쓰기 모드 선택 핀
6 E 레지스터에 쓰기 위한 핀
7 DB0 데이터 입출력핀(8bit)
8 DB1 데이터 입출력핀(8bit)
9 DB2 데이터 입출력핀(8bit)
10 DB3 데이터 입출력핀(8bit)
11 DB4 데이터 입출력핀(8bit)
12 DB5 데이터 입출력핀(8bit)
13 DB6 데이터 입출력핀(8bit)
14 DB7 데이터 입출력핀(8bit)
15 LED+ 데이터 입출력핀(8bit)
16 LED- LED GND핀
부품명 수량
아두이노 우노 R3 1
브레드보드 1
LCD 1
Potentiometer 1
점퍼케이블 16

회로도

브레드보드 레이아웃

센서연결

LCD핀번호 연결
1 GND
2 5V
3 Potentiometer의 가운데 핀
4 아두이노 12번핀
5 GND
6 아두이노 11번핀
7 연결안함
8 연결안함
9 연결안함
10 연결안함
11 아두이노 5번 핀
12 아두이노 4번 핀
13 아두이노 3번 핀
14 아두이노 2번 핀
15 5V
16 GND

coding

#include <LiquidCrystal.h>

LiquidCrystal lcd(12,11,5,4,3,2);        //RS 핀, E핀, 데이터 핀 4개
String lcdString = "";                   //객체 선언 : 출력 할 글자 저장

void setup() {                   
  lcd.begin(16,2);                       //LCD 크기 지정, 2줄 16칸
  lcd.clear();                           //화면 초기화
  Serial.begin(9600);                    //시리얼 통신 초기화
}

void loop() {
  lcd.setCursor(0,0);                    //커서를 0,0에 지정

  if(Serial.available()) {               //입력받은 데이터가 있으면
    delay(200);                          //0.2초 대기

    while(Serial.available() > 0) {      //문자 수 만큼 반복
      char lcdChar = (char)Serial.read();//문자 하나씩 읽고
      lcdString += lcdChar;              //읽은 문자를 하나씩 더해 문자열을 만듬
    }

    lcd.print(lcdString);                //문자열 LCD에 출력
    Serial.println(lcdString);           //시리얼 모니터에 입력한 값 출력
    lcdString = "";                      //문자열 초기화
    lcd.print("               ");        //전 글씨 삭제
  }
}
  1. 하드웨어 연결

LCD는 16핀을 가지고 있는 데 그 중에서 3개의 제어 신호 핀과 8개의 데이터 신호 핀이 포함되있습니다. 우노는 핀의 수가 적이 때문에 주로 4개의 데이터 신호 핀을 사용합니다.

  1. 스케치 설명
#include <LiquidCrystal.h>

LiquidCrystal이라는 라이브러리를 사용합니다.

void setup() {                   
  lcd.begin(16,2);                       //LCD 크기 지정, 2줄 16칸
  lcd.clear();                           //화면 초기화
  Serial.begin(9600);                    //시리얼 통신 초기화
}

LCD에 관한 설정을 setup함수에 먼저합니다. lcd.begin함수는 lcd의 크기를 지정하는 함수입니다.

lcd.print(lcdString);                //문자열 LCD에 출력
    Serial.println(lcdString);           //시리얼 모니터에 입력한 값 출력
    lcdString = "";                      //문자열 초기화
    lcd.print("               ");        //전 글씨 삭제

lcdPrint함수를 통해 LCD로 출력합니다. 맨 밑에 빈줄을 출력하는 이유는 전에 쓴 글씨를 지우기 위해서 입니다.

빈 줄을 출력한 후 다시 커서를 재 위치로 지정하면 재입력시 화면에 새로 입력한 글자만 보이게 됩니다.