본문 바로가기

공대생 주석마루/아두이노 UNO

(18)LCD 모듈

Youtube주석마루


LCD(Liquid Crystal Display) 모듈이란

LCD 패널을 사용한 소형 모듈로 아두이노와 같은 낮은 전압에도 사용할 수 있도록 만들어진 모듈이다.

사용은 <LiquidCrystal_l2C.h> 라는 헤더파일을 아두이노 라이브러리에 추가해 사용한다.

(예제로 넣은 문구)


구성품

아두이노 우노, LCD 모듈, 연결선


코드

 #include <LiquidCrystal_I2C.h>


LiquidCrystal_I2C lcd(0x27, 16, 2); // LCD의 고유 코드(0x27) /핀개수(16)/층의 수(2)


byte question1[8]=    // 0과 1 을 이용해 0은 꺼지는 데이터로 1은 켜지는 데이터로 두고 배열해 아이콘을 생성

{

  0b01110,                   // 16진수이므로 0b로 시작, 8개의 배열로 그림을 그리므로 [8]로 지정한다.

  0b11111,

  0b11011,

  0b11000,

  0b01110,

  0b00110,

  0b00000,

  0b00110

  };

  byte question2[8]=

{

  0b00000,

  0b01110,

  0b11111,

  0b11011,

  0b11000,

  0b01110,

  0b00110,

  0b00110

  };

  byte question3[8]=

{

  0b01110,

  0b11111,

  0b11011,

  0b00011,

  0b01110,

  0b01100,

  0b00000,

  0b01100

  };

   byte question4[8]=

{

  0b00000,

  0b01110,

  0b11111,

  0b11011,

  0b00011,

  0b01110,

  0b01100,

  0b01100

  };

  


void setup() {

lcd.init();  // 초기화

lcd.backlight(); // 뒷배경 라이트를 켬

lcd.createChar(1,question1); // (순서,배열을 저장한 변수) : 배열로 이루어진 아이콘을 하나의 아이콘처럼 사용할 수 있게 해줌

lcd.createChar(2,question2);

lcd.createChar(3,question3);

lcd.createChar(4,question4);

}


void loop(){

for(int first=0;first<16;first++)

{

  if(first == 0)

  {

  lcd.setCursor(0, 0); // (첫줄 위치,둘째줄 위치) : 0이면 첫줄 맨 왼쪽에 문자 배치

  lcd.write(byte(1)); //저장된 아이콘 출력

  lcd.setCursor(1,0); // 첫줄 왼쪽에서 두번째 위치에 문자 배치

  lcd.print("Ready! Set!"); //문구 출력

  lcd.setCursor(0, 1); //둘째줄 왼쪽에서 두번째 위치에 문자 배치

  lcd.print(" 3,2,1...Launch!");

  }

  else

  {

    for(int blank=0;blank<first;blank++)

    {

      lcd.setCursor(blank,0);

      lcd.print(" ");

    }

  }

  int shape=first;

  lcd.setCursor(shape++,0);

  if(shape % 2 == 1)

  {

    lcd.write(byte(1));

  }

  else

  {

    lcd.write(byte(2));

  }

  delay(600);

}

for(int second=0;second<16;second++)

{

  lcd.setCursor(15,0);

  lcd.print(" ");

    lcd.setCursor(0, 1);

  lcd.print(" 3,2,1...Launch!!");

  if(second ==0)

  {

    lcd.setCursor(0,1);

    lcd.write(byte(3));

  }

  else

  {

    for(int blank=0;blank<second;blank++)

    {

      lcd.setCursor(blank,1);

      lcd.print(" ");

    }

  }

  int shape=second;

  lcd.setCursor(shape++,1);

  

  if(shape % 2 == 1)

  {

    lcd.write(byte(3));

  }

  else

  {

    lcd.write(byte(4));

  }

  delay(600);

}

}

전체적인 구성은 저장된 아이콘을 출력해 아이콘이 움직이며 

모양을 바꾸고 동시에 왼쪽으로 이동하며 지나간 자리에 blank를 출력하는 형태이다, 이는 두번쨰 줄에서도 같은 메커니즘으로 구성


회로도

 

파란색 상자 안의 십자가를 나사 드라이버로 돌려 밝기 조절을 할 수 있다( 이 부분이 가장 시행착오를 겪을 수 있는 부분이므로 주의)

핀연결은 위에서 차례대로 GND, VCC, SDA, SCL 이며 

아두이노 우노의 경우에는 각각 붙어있는 핀이름에 맞는 핀에 연결하면 쉽게 연결된다.