페이지

2026년 1월 13일 화요일

4.2.2. I2C LCD 회로 구성하기

안녕하세요! 여러분의 AI-IT 멘토, '파이컴'입니다. 😊

오늘은 아두이노 프로젝트의 꽃이라고 할 수 있는 'I2C LCD' 사용법에 대해 알아보려고 해요. 복잡한 회로 연결 없이 단 4개의 핀만으로 원하는 글자를 화면에 딱! 하고 띄울 수 있어서 정말 매력적인 부품이죠. 센서 값을 확인하거나, 멋진 나만의 메시지를 표시하고 싶을 때 아주 유용하답니다.

이전 시간에 I2C 통신이 무엇인지, 그리고 내 LCD의 고유 주소를 찾는 방법까지 알아봤다면, 이제 모든 준비는 끝났어요. 저와 함께 차근차근 회로를 구성하고 코드를 작성해서 "Hello, World!"를 화면에 띄워볼까요?

Slide 1: 02. I2C LCD 회로 구성하기

자, 드디어 4장 '화면과 움직임으로 표현하기'의 두 번째 주제, I2C LCD를 직접 다뤄볼 시간이에요. 우리는 이미 LCD와 대화하기 위한 모든 준비를 마쳤어요. 통역사 역할을 해줄 라이브러리도 설치했고, LCD의 집 주소인 I2C 주소도 알아냈죠.

이제 아두이노에게 명령을 내려서, 우리가 원하는 멋진 인사말을 LCD 화면에 띄워보는 일만 남았습니다. 정말 기대되지 않나요? 그럼 바로 시작해 볼게요!

Slide 2: I2C LCD 회로 구성하기

가장 먼저 할 일은 아두이노와 I2C LCD를 연결하는 회로 구성이에요. 하지만 걱정 마세요. I2C LCD의 가장 큰 장점은 연결이 정말 정말 간단하다는 점이랍니다!

✅ 준비물

  • 아두이노 우노
  • I2C LCD (1602)

✅ 연결 방법

슬라이드의 회로도처럼 딱 4개의 핀만 연결하면 끝나요. LCD 모듈 뒷면을 보면 각 핀의 이름이 적혀 있으니 그대로 따라 연결해주세요.

  • GND 핀 ↔️ 아두이노 GND
  • VCC 핀 ↔️ 아두이노 5V
  • SDA 핀 ↔️ 아두이노 A4
  • SCL 핀 ↔️ 아두이노 A5

여기서 가장 중요한 포인트는 SDA와 SCL 핀이에요! 이 두 핀은 I2C 통신을 위한 약속된 자리라서 다른 핀에 연결하면 작동하지 않아요. SDA는 아날로그 4번(A4), SCL은 아날로그 5번(A5) 핀에 정확하게 연결하는 것, 잊지 마세요!

Slide 3: "Hello, World!" 텍스트 출력 코드 살펴보기

회로 연결이 끝났다면 이제 코드를 작성할 차례예요. 아래 코드를 아두이노 스케치에 입력하고 업로드하면, LCD 화면에 파란 불이 들어오면서 "Hello, World!"와 "Arduino I2C LCD"라는 글자가 나타날 거예요.

CODE 4.2 | Hello, World! 텍스트 출력
01// 1. 필요한 도구함(라이브러리)을 불러옵니다.
02#include <Wire.h>
03#include <LiquidCrystal_I2C.h>
04 
05// 2. LCD 설정 (주소, 가로칸수, 세로줄수)
06// 만약 스캐너로 찾은 주소가 0x27이라면 0x20 대신 0x27을 적으세요!
07LiquidCrystal_I2C lcd(0x20, 16, 2);
08 
09void setup() {
10  // 3. LCD 깨우기
11  lcd.init();        // LCD야, 일어날 시간이야! (초기화)
12  lcd.backlight();   // 불을 켜줘! (백라이트 켜기)
13}
14 
15void loop() {
16  // 4. 첫 번째 줄에 글자 쓰기
17  lcd.setCursor(0, 0); // 커서를 0번째 칸, 0번째 줄(첫째 줄)로 이동
18  lcd.print("Hello, World!");
19 
20  // 5. 두 번째 줄에 글자 쓰기
21  lcd.setCursor(0, 1); // 커서를 0번째 칸, 1번째 줄(둘째 줄)로 이동
22  lcd.print("Arduino I2C LCD");
23}

✅ 코드 구조 이해하기

코드가 조금 길어 보이지만, 구조는 아주 간단해요. 크게 '라이브러리 및 설정', '초기화', '텍스트 출력' 세 부분으로 나눌 수 있어요.

1. 라이브러리 및 설정 (1~7줄)

  • #include <Wire.h> : I2C 통신을 위한 필수 라이브러리예요.
  • #include <LiquidCrystal_I2C.h> : I2C LCD를 쉽게 제어하게 해주는 라이브러리죠.
  • LiquidCrystal_I2C lcd(0x20, 16, 2); : 우리가 사용할 LCD의 정보를 아두이노에게 알려주는 부분이에요. "주소는 0x20이고, 가로 16칸, 세로 2줄짜리 LCD를 앞으로 lcd라고 부를게!"라고 이름표를 붙여주는 것과 같아요. (만약 여러분의 LCD 주소가 0x27이라면 0x20 대신 0x27을 적어주셔야 해요!)

2. 초기화 (9~13줄, setup() 함수)

  • lcd.init(); : LCD의 기능을 본격적으로 사용하기 위해 깨워주는(초기화하는) 명령어예요.
  • lcd.backlight(); : LCD 화면 뒤쪽의 조명(백라이트)을 켜주는 명령어예요. 이게 없으면 글씨가 표시되어도 너무 어두워서 보이지 않는답니다.

3. 텍스트 출력 (15~23줄, loop() 함수)

  • lcd.setCursor(0, 0); : 글자를 어디에 쓸지 위치(커서)를 정해주는 아주 중요한 명령어예요. (0, 0)은 '0번째 줄(첫째 줄)의 0번째 칸(맨 왼쪽)'을 의미해요.
  • lcd.print("Hello, World!"); : 정해진 위치에 "Hello, World!"라는 글자를 출력해요.
  • lcd.setCursor(0, 1); : 이번엔 커서를 '1번째 줄(둘째 줄)의 0번째 칸(맨 왼쪽)'으로 옮겨요.
  • lcd.print("Arduino I2C LCD"); : 그 위치에 "Arduino I2C LCD"를 출력하죠.

Slide 4: LCD 제어 핵심 함수 4가지

방금 살펴본 코드에 나왔던 핵심 함수들을 다시 한번 정리해 볼게요. 이 4가지만 알면 LCD를 자유자재로 다룰 수 있답니다!

1. lcd.init() : "일어날 시간이야!" (초기화)

LCD를 사용하기 위해 가장 먼저 실행해야 하는 함수예요. 아두이노와 LCD가 서로 통신할 준비를 마치는 과정이라고 생각하면 쉬워요. setup() 함수 안에서 딱 한 번만 실행해주면 됩니다.

2. lcd.backlight() : "조명을 켜줘!"

LCD는 스스로 빛을 내지 못해요. 그래서 뒤에서 조명을 비춰줘야 글씨가 선명하게 보이죠. 이 함수는 그 조명을 켜주는 역할을 해요. lcd.init()과 함께 setup()에서 실행해주는 것이 일반적이에요.

3. lcd.setCursor(가로, 세로) : "여기부터 쓸게요!" (가장 중요!)

LCD 문법 중 가장 헷갈리면서도 가장 중요한 함수예요. 글자를 쓰기 시작할 커서의 위치를 정해줍니다. 마치 극장에서 내 좌석을 찾는 것과 같아요.

  • lcd.setCursor(0, 0); → 첫 번째 줄, 맨 왼쪽 칸
  • lcd.setCursor(5, 1); → 두 번째 줄, 여섯 번째 칸
⚠️ 여기서 잠깐! 아주 중요한 주의사항!
컴퓨터는 숫자를 0부터 세기 시작해요.
  • 첫 번째 줄0번, 두 번째 줄1번이에요.
  • 첫 번째 칸0번, 열여섯 번째 칸15번이랍니다. 꼭 기억해주세요!

4. lcd.print() : "글자를 보여줘!"

setCursor()로 위치를 잡았다면, print() 함수로 원하는 글자나 숫자를 화면에 출력할 수 있어요.

  • 문자 출력: lcd.print("Hello");
    따옴표 안의 내용을 그대로 출력해요. (아쉽게도 한글은 깨져서 나와요 😥)
  • 숫자(변수) 출력: lcd.print(sensorValue);
    센서 값이나 계산 결과가 저장된 변수의 값을 출력해요.
  • 소수점 자리수 제어: lcd.print(3.141592, 2);3.14 출력
    숫자 뒤에 콤마(,)와 함께 원하는 자릿수를 적어주면 소수점을 깔끔하게 잘라서 보여주는 아주 유용한 기능도 있답니다!

어떠셨나요? 생각보다 정말 간단하죠? 이제 여러분은 I2C LCD에 원하는 어떤 메시지든 자유롭게 띄울 수 있게 되었어요! 오늘 배운 내용을 바탕으로 온도 센서의 값을 출력해보거나, 초시계를 만들어보는 등 다양하게 응용해보세요. 상상하는 모든 것을 이 작은 화면에 표현할 수 있답니다.

앞으로 진행될 프로젝트에서도 LCD는 계속해서 사용될 예정이니, 오늘 배운 핵심 함수 4가지는 꼭 기억해주세요! 궁금한 점이 있다면 언제든지 댓글로 질문 남겨주시고요.

그럼 다음 시간에 더 재미있는 주제로 다시 만나요! 👋

이 포스팅의 내용은 교재 [주니어 공학교실 아두이노의 기초]에 수록된 내용입니다.

댓글 없음:

댓글 쓰기