페이지

2026년 1월 12일 월요일

4.2.1. I2C LCD 알아보기

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

지난 시간까지 우리는 LED를 깜빡이며 아두이노와 간단한 신호를 주고받았죠. 하지만 반짝이는 불빛만으로는 아두이노가 하고 싶은 말을 모두 표현하기엔 조금 답답했을 거예요. 오늘은 아두이노에게 '입'을 달아주는 아주 특별한 부품, I2C LCD에 대해 완벽하게 알아보는 시간을 갖겠습니다. 이제 아두이노가 우리에게 글자와 숫자로 말을 거는 놀라운 경험을 하게 될 거예요!


Slide 1: 4장 2절. I2C LCD 알아보기

이번 시간에는 '화면과 움직임으로 표현하기'라는 큰 주제 아래, 두 번째 파트인 'I2C LCD'에 대해 집중적으로 배워볼 거예요. 아두이노 프로젝트의 결과물을 훨씬 더 다채롭고 직관적으로 만들어 줄 핵심 부품이니, 눈을 크게 뜨고 따라와 주세요!

Slide 2: I2C LCD의 개념

지금까지 우리는 아두이노와 대화할 때 주로 LED를 사용했어요.
하지만 LED는 "깜빡!" 하고 켜지는 것밖에 못 해서, 구체적인 말을 전달하기가 어려웠죠.

슬라이드 2번은 바로 이 답답함에서 시작해요. LED는 켜고 끄는 것만 가능해서 '작동 중'이라는 신호는 줄 수 있지만, "온도가 25.5도 입니다"나 "Hello World!" 같은 구체적인 정보를 보여줄 순 없었어요.

이럴 때 필요한 것이 바로 LCD(Liquid Crystal Display)입니다!

  • LCD의 필요성: 단순히 깜빡이는 것을 넘어, 문장과 숫자로 구체적인 정보를 표시하고 싶을 때 사용해요.
  • 실생활 사례: 사실 LCD는 우리 주변에 늘 함께하고 있답니다. 전자계산기의 숫자판, 전자시계의 시간 표시, 전자레인지의 남은 시간 창 등이 모두 LCD예요.
  • 아두이노의 게시판: 이처럼 LCD는 아두이노가 하고 싶은 말을 글과 숫자로 시원하게 보여주는 '게시판' 또는 '스케치북' 같은 역할을 해준답니다.

이제 우리도 아두이노로 "GOOD!", "MY LOVE" 같은 멋진 메시지를 띄워볼 수 있겠죠?

Slide 3: I2C의 장점

"와! 저도 글씨 쓸래요!" 하고 신나게 LCD를 샀는데, 포장을 뜯자마자 당황하는 분들이 많아요. 왜일까요?

  • 기본 LCD의 문제점: 원래 기본형 LCD(1602 Standard)는 아두이노와 연결해야 할 핀이 무려 16개나 돼요. 슬라이드 속 사진처럼 16가닥의 선을 브레드보드에 꽂다 보면 선들이 라면 면발처럼 엉켜서 다른 부품을 연결할 공간조차 남지 않게 되죠. 초보자에게는 그야말로 '16가닥의 악몽'이랍니다.

하지만 걱정 마세요! 똑똑한 공학자들이 우리를 위해 구세주를 만들어냈어요.

  • I2C 변환 모듈의 등장: 바로 'I2C 변환 모듈'이라는 친구입니다. 슬라이드 아래쪽 사진처럼 LCD 뒷면에 책가방처럼 딱 붙어있는 검은색 기판이 보이시나요? 이 기특한 친구가 16개의 복잡한 선을 단 4개로 획기적으로 줄여준답니다.
  • 4개 핀 구성: 우리는 이제 딱 4개의 핀만 연결하면 LCD를 사용할 수 있어요.
    • GND (Ground)
    • VCC (Power)
    • SDA (Data)
    • SCL (Clock)

16가닥의 악몽이 4가닥의 기적으로 바뀌는 순간이죠!

Slide 4: I2C의 회로 구성 핀

자, 그럼 이 기적의 4개 핀을 아두이노 어디에 연결해야 할까요? 슬라이드 그림이 아주 친절하게 알려주고 있네요. I2C LCD 핀에는 이름이 다 적혀 있어서 짝을 찾아주기만 하면 돼요.

  • 전원 연결 (밥 주기)
    • GND 핀은 아두이노의 GND (바닥) 핀에 연결해요.
    • VCC 핀은 아두이노의 5V (에너지) 핀에 연결해요.
  • 통신 연결 (대화하기)
    • SDA (Data) 핀은 데이터가 다니는 길이에요. 아두이노 A4 핀에 꽂아주세요.
    • SCL (Clock) 핀은 통신 박자를 맞추는 길이에요. 아두이노 A5 핀에 꽂아주세요.
⚠️ 아주 중요해요!
아두이노 우노(UNO) 보드의 A4, A5 핀은 I2C 통신을 위해 특별히 지정된 자리랍니다. 다른 곳에 꽂으면 LCD가 작동하지 않으니 꼭! A4는 SDA, A5는 SCL에 연결하는 걸 잊지 마세요!

Slide 5: 1602 LCD 규격

우리가 사용하는 LCD는 보통 '1602 LCD' 라고 불러요. 이 숫자 안에 화면 크기에 대한 비밀이 숨어있답니다.

  • 화면 크기
    • 16: 가로(한 줄)에 글자를 16개까지 쓸 수 있다는 뜻이에요.
    • 02: 세로로 총 2줄을 표시할 수 있다는 뜻이에요.
    • 즉, 16칸씩 2줄이니까 화면을 꽉 채우면 총 32개의 글자를 보여줄 수 있는 셈이죠.
  • 표시 원리
    • 그럼 글자는 어떻게 나타나는 걸까요? 슬라이드 그림처럼 글자가 들어가는 네모난 칸 하나를 아주 자세히 들여다보면, 작은 점(픽셀)들이 가로 5개, 세로 8개, 즉 5x8 배열로 모여 있어요.
    • 아두이노는 이 작은 점들을 껐다 켰다 조합해서 'A', 'B', '3' 같은 글자 모양을 그려내는 것이랍니다. 정말 신기하죠?

Slide 6: 라이브러리 설치

하드웨어 연결을 마쳤다면, 이제 아두이노가 LCD와 대화할 수 있도록 소프트웨어적인 준비를 해야 해요. 바로 '마법의 통역사'를 모셔오는 일이죠.

"선생님, 라이브러리(Library)가 도서관인가요?"

아니에요! 아두이노 세상에서 라이브러리는 '고수들이 미리 만들어 놓은 코드 종합 선물 세트'를 뜻해요. 요리에 비유하면 '밀키트(Meal Kit)'와 같답니다. 우리가 떡볶이를 먹기 위해 쌀농사부터 짓지 않아도 되는 것처럼, 라이브러리가 있으면 복잡한 원리를 몰라도 코드 한 줄로 쉽게 LCD를 제어할 수 있어요.
  • 필요한 라이브러리 (밀키트)
    • Wire.h: I2C 통신 규칙을 관리하는 매니저예요. (아두이노에 기본 내장)
    • LiquidCrystal_I2C.h: 실질적으로 LCD 화면을 제어하는 화가 역할이에요. (설치가 필요해요!)
  • 설치 방법
    1. 아두이노 IDE 왼쪽 메뉴에서 책 아이콘(라이브러리 매니저)을 클릭하세요.
    2. 검색창에 LiquidCrystal I2C 라고 정확히 입력해서 검색해요.
    3. 수많은 결과 중 'Frank de Brabander' 라는 아저씨가 만든 버전을 찾아 [설치] 버튼을 누르면 끝!

이제 우리는 코드 한 줄로 "글자 써!", "화면 지워!" 같은 명령을 내릴 수 있게 됐어요.

Slide 7: I2C 주소 확인

친구에게 편지를 보내려면 집 주소를 알아야 하듯, 아두이노가 LCD와 통신하려면 LCD의 고유한 '주소'를 알아야 해요. 공장에서 나올 때부터 저마다 주소를 가지고 나오는데, 보통 0x27 아니면 0x20 이지만 겉으로 봐서는 알 수가 없죠. 탐정처럼 주소를 찾아내 봅시다!

  • 찾는 방법: 'I2C Scanner'라는 프로그램을 이용할 거예요.
    1. 인터넷에서 'I2C Scanner Arduino' 코드를 검색해서 복사해요.
    2. 아두이노에 코드를 업로드합니다.
    3. 오른쪽 위 돋보기 아이콘(시리얼 모니터)을 켜면, 아두이노가 연결된 장치를 스캔하고 주소를 알려줘요.
    4. Found address: 0x27 이라고 나오면, 우리 LCD의 주소는 0x27 이랍니다!
  • 코드 적용: 나중에 코드를 짤 때, 이렇게 찾은 주소를 넣어줘야 해요.
    • LiquidCrystal_I2C lcd(0x27, 16, 2);
    • 괄호 안에는 (주소, 가로 칸수, 세로 줄수)를 순서대로 적어주는 거예요.

Slide 8: 작동 문제 해결

분명히 시키는 대로 다 했는데 LCD가 먹통일 때가 있죠? 당황하지 마세요! 실물 LCD를 쓸 때와 가상 시뮬레이터인 틴커캐드를 쓸 때 확인해야 할 포인트가 조금 달라요. 내 상황에 맞는 처방전을 확인해 보세요.

📌 실물 LCD 사용 시

  • 명암 조절: LCD 뒷면의 파란색 네모(가변 저항)를 십자드라이버로 살살 돌려보세요. 글씨가 너무 흐리거나 진해서 안 보이는 경우가 많아요.
  • 배선 확인: SDA는 A4, SCL은 A5에 잘 꽂혀 있는지 다시 한번 확인!
  • 초기화 코드: void setup() 안에 lcd.init();lcd.backlight(); 명령어가 꼭 들어있는지 확인하세요. 이 두 줄이 없으면 LCD가 잠에서 깨어나질 않아요.

📌 틴커캐드 사용 시

  • 유형 변경: 틴커캐드에서 LCD 부품을 클릭하면 설정창이 떠요. '유형'을 기본값(MCP23008)이 아닌 'PCF8574 기반'으로 바꿔주세요.
  • 주소 변환: 틴커캐드는 주소를 10진수(예: 32)로 보여줘요. 이걸 코드에 쓸 때는 16진수로 바꿔줘야 합니다.
    • 주소가 32로 표시되면 → 코드에는 0x20 이라고 입력
    • 주소가 39로 표시되면 → 코드에는 0x27 이라고 입력

오늘은 아두이노의 표현력을 한 단계 업그레이드해 줄 I2C LCD에 대해 A부터 Z까지 알아봤어요. 16개의 복잡한 선을 4개로 줄여주는 I2C의 편리함부터, 화면의 규격, 라이브러리 설치, 그리고 가장 중요한 주소 찾기까지! 이제 여러분은 아두이노 프로젝트에 멋진 '게시판'을 달아줄 모든 준비를 마쳤습니다.

다음 시간에는 오늘 배운 내용을 바탕으로 직접 코드를 작성해서 LCD에 원하는 글씨를 띄워보는 실습을 진행할 거예요. 기대 많이 해주세요! 수고하셨습니다. 👍

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

댓글 없음:

댓글 쓰기