부품설명

자주 사용하는 부품들의 사용법에 대하여 알아봅니다.

LCD-연결, 글자 출력하기

2014-08-07 10:52:37

개요

LCD는 종류, 사이즈가 다양합니다. 연결해야 할 선은 많지만 간단하게
온도, CPU 사용상태, 그림까지 출력 할 수 있기 때문에 활용도가 좋습니다.
연결해서 나만의 게임기, 알람시계등을 만들어 보세요.

 
출처 : forum.arduino.cc / arduinofun.blogspot.com

 

출처 : www.electronics-lab.com / www.adafruit.com


출처 : 21stdigitalhome.blogspot.com

이제 LCD를 연결하는 방법을 알아봅시다. 연결 선이 많이 있기 때문에 주의하면서 연결하세요.

 

미리보기 동영상

 

 

 

 

 

부품목록

본 학습에는 총 5종류의 부품이 필요합니다
 

 

NO 부품명 수량 상세설명
1
아두이노 우노 R3
1
 
2
브레드보드
1
 
3
LCD
1
LCD-00709을 사용했습니다.
다른 LCD를 사용할 경우 연결방법이 다를 수 있습니다.
4
Potentiometer
1
 
5
점퍼케이블
16
 

 

 

부품명 아두이노 우노 R3 브레드보드 LCD Potentiometer 점퍼케이블
파트 x1 x1 x1 x1 x16

 

 

 

 

 

하드웨어 Making

 

회로도

 

 

브레드보드 레이아웃

 

 

 

 

센서 연결

 

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

 

 

/*
 LCD 연결해서 글자 출력하기
 
 이 스케치는 KocoaFab에서 만들었습니다.
 이 스케치는 누구든 무료로 사용할 수 있습니다.
*/

#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개의 데이터 신호 핀을 사용합니다.


 

2. 스케치

#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로 출력합니다.
맨 밑에 빈줄을 출력하는 이유는 전에 쓴 글씨를 지우기 위해서 입니다.
빈 줄을 출력한 후 다시 커서를 재 위치로 지정하면 
재입력시 화면에 새로 입력한 글자만 보이게 됩니다.

 

 

 

 

 

 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

LCD, 아두이노

BlueScorpion 2015-05-22 23:10:26

LCD 는 16 글자 2줄인데 아랫줄은 안나오네요.

백곰쿠마 2018-11-07 11:25:54

lcd.begin(16,2); 이 부분 오타 없는가요?

lcd.setCursor(0, 1); lcd.print("MODE x2 SPD: "); 이렇게 두번째 줄도 쓰셨나요?

kocoafab 2019-01-07 14:27:24

@BlueScorpion

백곰쿠마님이 올려주신대로 lcd.begin(16, 2); 선언부분이 제대로 들어갔는지 확인해주시고,

두번째 줄에 문자를 출력하실려면 lcd.setCursor(0, 1); 를 지정하신 다음 print로 메세지를 출력해주셔야 합니다.

위 코드에선 첫줄만 메세지를 출력하게 되어있어 두번째 줄은 아무런 메세지가 나오지 않습니다.

짜라깜 2019-04-13 23:59:42

입력 받은 데이터가 있을 때 0.2초 대기하는 이유는 무엇인가요? delay(200)을 넣지 않으니까 첫번째로 입력한 문자가 짤리네요..