카테고리 없음

Arduino - LCD I2C

기하 2021. 8. 16. 13:10

이 Arduino LCD I2C 튜토리얼에서는

LCD I2C(Liquid Crystal Display)를 Arduino 보드에 연결하는 방법을 배웁니다. 

LCD는 정보 표시를 위한 전자 프로젝트에서 매우 대중적이고 널리 사용됩니다. 

LCD에는 많은 종류가 있습니다. 이 자습서에서는 LCD 16x2(16열 및 2행)를 예로 사용합니다. 다른 LCD도 비슷합니다.

 

필요한 하드웨어

Arduino UNO 또는 Genuino UNO
USB 2.0 케이블 유형 A/B
LCD I2C
점퍼 와이어

LCD I2C 16x2 정보

에서 이전의 튜토리얼 , 우리는 일반 LCD를 사용하는 방법을 배웠습니다. 

그러나 Arduino와 일반 LCD 사이의 배선은 복잡합니다. 

따라서 배선을 단순화하기 위해 LCD I2C가 만들어졌습니다. 

실제로 LCD I2C는 일반 LCD, I2C 모듈 및 전위차계(potentiometer)로 구성됩니다.

핀아웃

LCD I2C는 I2C 인터페이스를 사용하므로 4개의 핀이 있습니다.

  • GND 핀  GND (0V)에 연결해야 합니다 .
  • VCC 핀 LCD용 전원 공급 장치는 VCC (5V)에 연결해야 합니다 .
  • SDA 핀 I2C 데이터 신호
  • SCL 핀 I2C 클록 신호

LCD 좌표

LCD I2C 16x2는 16열과 2행을 포함합니다. 열과 행은 0부터 인덱싱됩니다.

 

배선도

 

LCD I2C 프로그래밍 방법

LiquidCrystal_I2C 라이브러리 덕분에 LCD를 사용하는 것은 아주 쉽습니다.

  • 라이브러리 포함:
    #include <LiquidCrystal_I2C.h> // Library for LCD​
  • I2C 주소, 열 수, 행 수를 사용하여 LiquidCrystal_I2C 개체를 선언합니다.
    LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x27, 16 column and 2 rows​
     
  • LCD를 초기화합니다.
  • lcd.init(); //initialize the lcd lcd.backlight(); //open the backlight​
  • 커서를 원하는 위치로 이동(column_index, row_index)
    lcd.setCursor(column_index, row_index);​
  • LCD에 메시지를 인쇄합니다.
    lcd.print("Hello World!");​
     

LCD로 할 수 있는 일이 더 많이 있습니다(LCD 부분으로 더 많은 작업 참조)

 

아두이노 코드

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x27, 16 column and 2 rows

void setup()
{
  lcd.init(); // initialize the lcd
  lcd.backlight();

  lcd.setCursor(0, 0);         // move cursor to   (0, 0)
  lcd.print("Arduino");        // print message at (0, 0)
  lcd.setCursor(2, 1);         // move cursor to   (2, 1)
  lcd.print("GetStarted.com"); // print message at (2, 1)
}

void loop()
{
}

 

빠른 단계

Arduino IDE에서 도구로 이동 라이브러리 관리

  • "LiquidCrystal I2C"를 검색 한 다음 Frank de Brabander의 LiquidCrystal_I2C 라이브러리를 찾습니다.
  • 설치 버튼을 클릭 하여 LiquidCrystal_I2C 라이브러리를 설치합니다.
  • 위의 코드를 복사하여 Arduino IDE로 엽니다.
  • 클릭 업로드 아두 이노 코드를 업로드 아두 이노 IDE 버튼을
  • LCD에서 결과 보기
  • 텍스트와 위치를 수정해 보세요.

 

기타 기능

loop() 함수에 아래 함수를 하나씩 추가합니다. 그리고 각 함수 뒤에 delay(5000)를 추가합니다.

  • LCD 화면 클리어하기
    lcd.clear();​
  • 커서를 LCD의 왼쪽 상단으로 이동
    lcd.home();​
  • 커서를 위치(열, 행)로 이동
    lcd.setCursor(column, row);​
  • LCD 커서 표시
    lcd.cursor();​
  • LCD 커서를 숨깁니다.
    lcd.noCursor();​
  • 깜박이는 LCD 커서 표시
    lcd.blink()​
  • 깜박이는 LCD 커서를 끕니다.
    lcd.noBlink()​


LCD I2C 문제 해결

LCD I2C에 텍스트가 표시되지 않으면 다음 문제를 확인하십시오.

  1. LCD 뒷면의 전위차계를 돌려 LCD의 밝기를 조절합니다.
  2. 제조사에 따라 LCD의 I2C 주소가 다를 수 있습니다. 
    일반적으로 LCD의 기본 I2C 주소는 0x27 또는 0x3F입니다. 
    이 값을 하나씩 시도하십시오. 그래도 실패했다면 아래 코드를 실행하여 I2C 주소를 찾으십시오.
// I2C address scanner program
#include <Wire.h>

void setup()
{
  Wire.begin();
  Serial.begin(9600);
  Serial.println("I2C Scanner");
}

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

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

  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
    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");
  else
    Serial.println("done");

  delay(5000); // wait 5 seconds for next scan
}

[참조 번역인용] https://arduinogetstarted.com/tutorials/arduino-lcd-i2c