공부중

[Arduino] LCD 본문

프로그래밍/Arduino

[Arduino] LCD

복습 2025. 1. 26. 05:13
728x90

 

1. 이론 

 

ESP32에서 I2C 통신을 위해 LCD 모듈의 SDA (Serial Data Line)와 SCL (Serial Clock Line)을 연결하려면 기본적으로 다음의 GPIO 핀을 사용합니다:

  • SDA: GPIO 21
  • SCL: GPIO 22

이는 ESP32의 기본 I2C 핀 설정입니다. 다음과 같이 연결하시면 됩니다:

  • LCD SDA -> ESP32 GPIO 21
  • LCD SCL -> ESP32 GPIO 22

 

글자 흐린 경우 드라이버 돌려서 저항 값 변경 

https://bplab.kr/coding_FAQ/?bmode=view&idx=5342668

 

LCD 화면에 글자가 보이지 않아요. : 코딩교육키트 자주묻는질문

I2C LCD 모듈LCD 앞면LCD 뒷면① LCD 화면에 불빛(전력)이 안들어와요.아두이노 보드와 LCD모듈의 전선 연결이 잘못되어있을 확률이 높습니다. 아래에 사진에 맞게 점퍼선(F/M)을 이용해서 LCD의 GND는

bplab.kr

 

 

 

2. 라이브러리 다운 

 

툴 -> 라이브러리 관리 

 

 

liquid crystal I2C 검색

 

 

 

3. 잘 안나오고 네모로 나오는 문제 해결 

 

주소값을 0x27에서 0x3F로 변경하니까 해결되었다. 

 

주소값 확인하는 코드. 

#include <Wire.h>

void setup() {
  Wire.begin(); // I2C 버스 초기화

  Serial.begin(9600);
  while (!Serial); // 시리얼 포트가 준비될 때까지 대기

  Serial.println("\nI2C Scanner");
}

void loop() {
  byte error, address;
  int nDevices;

  Serial.println("Scanning...");

  nDevices = 0;
  for (address = 1; address < 127; address++ ) {
    // I2C 주소로 스캔 시도
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    // 오류 코드가 없으면 디바이스를 찾은 것임
    if (error == 0) {
      Serial.print("I2C device found at address 0x");
      if (address < 16) 
        Serial.print("0");
      Serial.print(address, HEX);
      Serial.println("  !");

      nDevices++;
    }
    else if (error == 4) {
      Serial.print("Unknown error at address 0x");
      if (address < 16)
        Serial.print("0");
      Serial.println(address, HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");

  delay(5000); // 5 초 후 다시 스캔
}

 

 

 

4. 출력 예제 

#include <Wire.h>                  // I2C 통신을 위한 라이브러리
#include <LiquidCrystal_I2C.h>     // I2C LCD를 제어하기 위한 라이브러리

// LCD 객체 생성, I2C 주소는 0x27, 20열 2행으로 설정
//LiquidCrystal_I2C lcd(0x27, 20, 2);
LiquidCrystal_I2C lcd(0x3F, 20, 2);

void setup() {
  lcd.init();                      // LCD 초기화
  lcd.backlight();                 // LCD 백라이트 켜기
  lcd.setCursor(0, 0);             // 첫 번째 행, 첫 번째 열로 커서 이동
  lcd.print("Hello, world!");      // "Hello, world!" 출력
  lcd.setCursor(1, 1);             // 두 번째 행, 두 번째 열로 커서 이동
  lcd.print("1 2 3 4 5 .");        // "Kim Changho" 출력
}

void loop() {
  // 이 예제에서 loop 함수는 비워둘 수 있습니다.
}

 

 

 

4. 경고. 

[Arduino] 경고: 라이브러리 LiquidCrystal_I2C가 avr 아키텍처에서 실행되며 esp32아키텍처에서 실행되는 현재보드에서는 호환되지 않을 수 있습니다.

이런 오류가 나와서 이게 문제 인가 했는데 문제 원인은 아니었나보다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90

'프로그래밍 > Arduino' 카테고리의 다른 글

[Arduino] 7 segment  (0) 2025.01.26
[Arduino] multi task  (0) 2025.01.25
[Arduino] ESP32 드라이버 설치 및 연결  (0) 2025.01.25
[Arduino] 모터  (0) 2025.01.25
버스 공공데이터 활용  (0) 2025.01.25