// education

디스플레이 활용 (Char LCD 및 OLED)

아두이노 시스템의 모니터 역할을 수행하는 디스플레이 모듈(Display Module) 제어 기법을 학습합니다.


1. 디스플레이 주요 용어 사전 (Glossary)


2. I2C Character LCD (16x2) 실전 사용법

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// I2C 주소 0x27 (모듈에 따라 0x3F일 수 있음), 16열 2행 설정
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  lcd.init();      // LCD 초기화
  lcd.backlight(); // 백라이트 LED ON
  
  lcd.setCursor(0, 0); // (열, 행) 커서 위치 0, 0 지정
  lcd.print("DAVHAVE EDU HUB");
  
  lcd.setCursor(0, 1);
  lcd.print("Arduino Ch06 OK!");
}

void loop() {
  // 1초마다 업타임(초) 업데이트
  lcd.setCursor(12, 1);
  lcd.print(millis() / 1000);
}

3. 0.96인치 I2C OLED (SSD1306) 그래픽 렌더링

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

Adafruit_SSD1306 display(128, 64, &Wire, -1);

void setup() {
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    for(;;); // OLED 시작 실패 시 무한 루프
  }
  
  display.clearDisplay(); // 프레임 버퍼 비우기
  
  // 도형 그리기
  display.drawRect(0, 0, 128, 64, WHITE);     // 테두리 사각형
  display.fillCircle(30, 32, 15, WHITE);       // 채워진 원
  
  // 글자 출력
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(60, 25);
  display.println("DAVHAVE");
  
  display.display(); // 실제 OLED 화면으로 렌더링 갱신!
}
void loop() {}

4. 자주 묻는 질문 (Q&A)

Q. OLED 라이브러리를 쓰니까 "Not enough memory" 컴파일 경고가 떠요. A. SSD1306 OLED 라이브러리는 $128 \times 64$ 비트맵 프레임 버퍼를 위해 아두이노 SRAM 메모리의 약 1KB(전체 2KB의 50%)를 차지합니다. 다른 변수 사용을 줄이거나 Serial.println(F("문자열")) 처럼 F() 매크로를 사용하여 문자열을 플래시 메모리에 배치하세요.

← 이전아두이노 시리얼 통신 (UART 및 데이터 모니터링) 다음 →다양한 센서 활용하기 (CDS, 초음파, 온습도, PIR)