본문 바로가기

Embedded System

[Arduino] 아두이노 LCD 1602 - GPIO, I2C ( HC-SR04 ) 사용하기 (14)

반응형

 


 

안녕하세요.

이번 포스팅에서는 LCD DISPLAY를 사용해보겠습니다. LCD DISPLAY의 제어 방식은 Parallel(병렬) 방식의GPIO와 Serial(직렬) 방식의 I2C가 있습니다. 둘다 다뤄 볼겠습니다.!!


  LCD 1602는 16x2 캐릭터 LCD 모듈로, 한 줄에 16개의 문자, 총 2줄에 32개의 문자를 표시할 수 있습니다. 이 모듈은 다양한 프로젝트에서 널리 사용되며, 마이크로컨트롤러와 쉽게 통신할 수 있습니다. 다음은 LCD 1602의 주요 특징, 핀 구성, 그리고 Arduino와의 연결 방법에 대한 설명입니다.

  LCD는 BackLight는 디스플레이의 광원이고 자체 발광하는 OLED에 비해 LCD는 자페 발광을 하지 못해 BackLight는 필수입니다.  

 

※1.  2가지 모듈

LCD 1602 모듈은 시중에 2가지 버전으로 판매되고 있습니다. 가장 기본적으로 LCD 기능을 하는(1) 모델과 사용의 편의를 위해 직렬 통신을 다룰수 이도록 SPI 확장보드를 연결하는(2) 모델이 있습니다.

(1) I2C 보드가 부착되지 않은 모듈

[특징]
1. GPIO(병렬)를 통한 제어방식만 사용 가능
2. Backlight 조절을 위한 V0 핀에 별로도 (가변)저항을 사용해야합니다.

 

 

 

 

(2) I2C(+ 가변저항) 보드가 부착된 모듈

[특징]
1. GPIO(병렬)를 통한 제어방식, I2C(직렬)를 통한 제어방식 둘 다 사용 가능 
2. Backlight 조절을 위한 가변저항이 달려있어 별도로 저항을 연결하지 않아도 됩니다.

 

 

 

 

※2. GPIO제어 - Parallel Control VS I2C제어 - Serial Control

(1) GPIO Control

  1. 많은 핀 필요: 일반적으로 7개의 핀(4비트 모드) 또는 11개의 핀(8비트 모드)을 사용합니다.
  2. 복잡한 배선: 많은 핀을 연결해야 하므로 배선이 복잡할 수 있습니다.
  3. 직접 제어: 데이터와 제어 핀을 직접 제어하므로, 보다 세밀한 제어가 가능합니다.
  4. 저렴한 가격: 일반 LCD 모듈이 I2C 모듈에 비해 상대적으로 저렴할 수 있습니다.

사용 방법: 직접 핀을 연결하여 데이터를 전송하며, "LiquidCrystal." 라이브러리를 사용하여 제어합니다.

 

 

 

(2) I2C Control

  1. 핀 수 감소: I2C 인터페이스를 사용하면 2개의 데이터 라인(SDA, SCL)과 전원 핀(5V, GND)만 사용합니다. 일반적으로 4개의 핀만 필요합니다.
  2. 간단한 배선: 연결이 단순하여 복잡한 회로에서 배선을 쉽게 할 수 있습니다.
  3. 소프트웨어 라이브러리: I2C 통신을 위한 라이브러리(예: LiquidCrystal_I2C)를 사용하여 코드 작성이 간편합니다.
  4. 확장성: 동일한 I2C 버스에 여러 장치를 연결할 수 있어, 추가 센서나 장치를 쉽게 추가할 수 있습니다.

사용 방법: I2C 모듈이 부착된 LCD 1602는 I2C 주소를 사용하여 데이터를 전송합니다. 아두이노와 같은 마이크로컨트롤러와 쉽게 통신할 수 있습니다. "LiquidCrystal_I2C.h" 라이브러리를 사용합니다.

차이점 요약                                     I2C                                                         GPIO

핀 수 4핀 (SDA, SCL, VCC, GND) 7~11핀
배선 간단 복잡
라이브러리 LiquidCrystal_I2C LiquidCrystal
통신 방식 I2C (직렬) 병렬 (4비트 또는 8비트)
가격 상대적으로 비쌈 상대적으로 저렴
확장성 높음 낮음

결론

I2C 부착된 LCD 1602 모듈은 핀 수가 적고 배선이 간단하여 다중 장치 연결 및 복잡한 회로에서 편리합니다. 반면, I2C 모듈이 부착되지 않은 일반 LCD 1602는 더 많은 핀을 필요로 하지만, 보다 직접적인 제어가 가능하고 비용이 낮을 수 있습니다. 프로젝트의 요구사항에 따라 적절한 모듈을 선택하면 됩니다.



※3. Wiring (배선 연결)

(1) GPIO Control

(2) I2C Control
아두이노 핀맵 비교하면서 아래처럼 연결해보세요. ( SDA,  SCL )
https://semicircuit.tistory.com/entry/Arduino-%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8-%ED%95%80%EB%A7%B5-%EC%82%AC%EC%96%91-%EB%AA%A8%EC%9D%8C

 

[Arduino] 아두이노 핀맵 & 아두이노 사양 모음

안녕하세요.이번 포스팅에서는 아두이노 사용시 필히 알아야하는 보드의 핀 넘버, 즉 핀맵을 한번에 모아두었습니다. 필요할 때 볼 수 있겠금 즐겨차기 해주시는 것도 좋을 것 같아요.  ※1. 아

semicircuit.tistory.com

 

 

 

 

※3. 소스코드 및 동작

LCD Display 상에 " Wellcome to SemeCircuit "을 출력하는 코드를 실행해 보겠습니다.

▶0. 라이브러리 다운

(1) GPIO Control: LiquidCrystal
-> Tool -> 라이브러리 관리 -> " LiquidCrystal" 검색 후 다운

 

(2) I2C Control: LiquidCrystal_I2C.h
-> Tool -> 라이브러리 관리 -> " jm_ LiquidCrystal_I2C  " 검색 후 다운


 

1. 소스코드

(1) GPIO Control
: 파일 함께 제공해드리겠습니다.

14-1_LCD1602__HC-SR04_Parallel.ino
0.00MB

 

#include

// Initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);  // RS, E, D4, D5, D6, D7

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print "Welcome to" on the first line
  lcd.setCursor(0, 0); // Set cursor to column 0, row 0
  lcd.print("  Wellcome to   ");
  // Print "SemeCircuit" on the second line
  lcd.setCursor(0, 1); // Set cursor to column 0, row 1
  lcd.print("   SemeCircuit  ");
}

void loop() {
  // No need to put anything here for this example
}

 

(2) I2C Control
: 파일 함께 제공해드리겠습니다.

14-2_LCD1602__HC-SR04_Serial.ino
0.00MB


#include
#include 

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  // Initialize the LCD
  lcd.begin();
  // Turn on the backlight
  lcd.backlight();
  // Print "Wellcome to" on the first line
  lcd.setCursor(0, 0); // Set cursor to column 0, row 0
  lcd.print("  Welcome to   ");
  // Print "SemeCircuit" on the second line
  lcd.setCursor(0, 1); // Set cursor to column 0, row 1
  lcd.print("   SemeCircuit  ");
}

void loop() {
  // No need to put anything here for this example
}

 

2. 하드웨어 연결 및 동작 확인

(1) GPIO Control : 정상적으로 출력되었음을 확인 할 수 있습니다. (해당 GPIO 방식은 구성이 번거로워서 소프트웨어에서 시뮬된 결과로 대체하여 보여드립니다.)

 

(2) I2C Control : 정상적으로 출력되었음을 확인 할 수 있습니다. 

 

 

 

 

이상으로 아두이노에서 1602 LCD Display를 다루는 방법에 대한 설명을 마치겠습니다.

다름 포스트에서 가변저항의 값을 입력받아 기기를 제어하는 방법에 대해 다루겠습니다.

감사합니다.

 

반응형