본문 바로가기
교육연구/HW 마이크로비트 아두이노 로봇

[부품] I2C LCD 모듈 스펙과 기본 코드 익히기

by 팡귄 2024. 6. 11.
반응형

I2C LCD 모듈 라이브러리 및 기본 구조 알기

오늘은 상세페이지에서 만나는 lcd모듈 스펙을 하나씩 읽어보고, 아주 기본적인 출력 코드와 I2C통신을 위한 라이브러리 설치까지 가볍게 살펴보자.

 

* 이전 포스팅의 드라이버를 준비하여 lCD모듈의 가변저항(글자 선명도 조절)을 조절하고 시작합시다!!

https://pangguinland.tistory.com/324

 

[부품] LCD 2004 모듈 글씨가 안 뜨는 이유 , 해결 방법

문제상황 : LCD 2004 모듈에 글씨가 안 뜹니다.  이 문제를 무려 40분 정도를 고생했으나 웃음이 나올 정도로 허무하게 해결되고 말았다. 참고로 지원되지 않는 언어라고 해도 깨져서라도 뜬다. 나

pangguinland.tistory.com

 

<오늘의 흐름>

1. 아두이노 I2C 1602 LCD 모 이 긴 이름은 무엇인가요?

2. Display 네 자리 숫자의 의미 : 1602 2004 / lcd.seCursor(0,0) 코드

3. Backlight 백라이트 / Contrast 대비 

4. 전원 5V 

5. I2C 인터페이스가 편한 이유, 그리고 라이브러리 설피하기

 

 

1. 아두이노 I2C 1602 LCD 모 이 긴 이름은 무엇인가요?

LCD 모듈인 것은 알겠는데, I2C는 무슨 말일까? LCD 모듈을 구입할 때, '아두이노 I2C 1602 LCD 모듈'와 같은 긴 제품명을 만난다. 왠만한 구입처에서 상세 페이지에 가면 많은 정보를 접할 수 있다. 오늘 하나씩 살펴보자.

디바이스 몰에서 구입을 했다면, 아래와 같은 페이지를 만난다.

출처 : https://www.devicemart.co.kr/goods/view?no=1327456

 

 

2. Display 네 자리 숫자의 의미 : 1602 2004 , lcd.seCursor(0,0) 코드

  제품명 뒤에 붙는 4자리 수들은 출력 가능한 문자 수, 배열을 보여준다. 1602는 화면이 16글자씩*2줄 사이즈. 2004는 20*4 글씨가 좀 더 길게 여러 줄 출력될 것이다. 

 좌표는 역시 0,0에서 시작이다. 살짝 헷갈리는게, (열,행) 순서다.

lcd.seCursor(5,1) 이면, 두번째 줄의 6번째 위치에 커서가 셋팅되어 그 자리부터 출력된다.

출처 : https://www.programmingelectronics.com/liquidcrystal-library-functions-tour-part-1/

글자 출력마다, 출력 위치를 지정해야하나? 아니다. 

커서는 자동 조정되어 출력 글자 다음 자리에서 이어 출력된다. 가령 아래처럼, 두개의 단어를 출력시키면?

void loop(){

  lcd.setCursor( 5 , 1);

  lcd.print(“MAMA”);

  lcd.print(“JAMA”);

}// close loop 
// 출처 : https://www.programmingelectronics.com/

출처 : https://www.programmingelectronics.com/liquidcrystal-library-functions-tour-part-1/

 

 

3. Backlight 백라이트 / Contrast 대비 

상세 설명의 백라이트 설명을 보면, 파란색 화면에 흰색 글자가 뜨는 것을 알려준다. 가독성이 꽤 좋다. 물론 요즘 터치되고, 해상도도 높은 다양한 rgb lcd가 나와있다. 그러나 가격면으로는 이만한게 없다.

Contrast 대비 조절은 뒤의 포텐셔미터( Potentiometer , 가변저항)로 조절한다. 이걸 안해서 글씨가 출력되는 데도 모르는 경우가 있다.

 

4. 전원 5V

 LCD 2004 모듈과 작은 수중모터펌프를 아두이노의 5v핀에 연결해서 돌렸는데, 큰 문제는 없었다. 작은 프로젝트라면 외부 전원까지 연결할 필요는 없었다.

 

5. I2C 인터페이스가 편한 이유, 그리고 라이브러리 

I2C (Inter-Integrated Circuit) 는 통신 방법을 말한다. LCD에  데이터를 전송하기 위한 방법 중 하나인데, 보통 LCD를 사면 뒷면에 I2C 어댑터가 달려있다. LCD를 좀 더 편한 I2C 통신으로 사용할 수 있도록 도와주는 어댑터이다.

왜 편하냐? 만약 이 어댑터가 없는 LCD를 구입했어도 사용할 수 있고, 인터넷에 예제도 많다.

출처 : oddwires

그러나 상단의 12개나 되는 배선을 이용해 통신해야하며, 우리가 앞서 살펴본 대비(글자 선명도)조절을 위한 가변저항도 스스로 달아야하는 수고로움이 생긴다. 

https://www.addicore.com/products/1602-16x2-character-lcd-with-i2c-backpack

그런데, 이렇게 뒤에 어댑터가 달린 경우는 보다시피 납땝으로 잘 연결되어있는 부분이 어댑터를 거치며 I2C통신이 가능해진다. 그 결과 2개의 통신 배선과 2개의 전원 배선을 연결해 사용할 수 있는 것이다. 2개의 선만으로 통신하므로 TWI (two wire interface)라고도 한다.

출처 : https://www.electronicwings.com/arduino/arduino-i2c

1) 회로 : SCA, SDL은 아날로그 핀에 연결한다. 아두이노 우노에는 연결하는 곳이 2군데 있다. 

2) 라이브러리 설치 : 스케치 내 라이브러리 관리에서LiquidCrystal_I2C 로 검색해 설치하자.

3) 코드 : #include <LiquidCrystal_I2C.h>

 

다음 포스팅에서는 기본으로 알아둘 LCD 관련 코드들을 모아보자.

반응형