문서의 이전 판입니다!
CHARACTER LCD 사용설명서
CHARACTER LCD는 글자와 숫자를 줄 단위로 보여 주는 표시 장치입니다. 이 안내는 PCF8574 I²C 변환 모듈이 연결된 HD44780 호환 문자 LCD를 ILOGICS 산업용 아두이노의 내장 Iclcd…() 명령어로 사용하는 방법입니다. 별도의 ILIB.h, CLCD.h, Wire.h나 LCD 객체를 스케치에 추가하지 않습니다.
아래 순서대로 연결을 확인하고, 실제 LCD의 I²C 주소와 열·행 수를 입력한 뒤 예제를 업로드하세요. 주소 0x27과 크기 20 × 4는 이 페이지의 예제값이며 모든 LCD의 공통값이 아닙니다. 16 × 4 LCD는 현재 내장 명령어의 3·4행 위치 계산과 맞지 않으므로 이 안내의 사용 대상에서 제외합니다.
1. 준비와 연결
- Arduino IDE로 시작하기에 따라 ILOGICS Arduino SDK를 설치하고, 사용하는 제품과 같은 보드 및 포트를 선택합니다.
| LCD 변환 모듈에 표시된 신호 | 제품 I²C 단자 | 확인할 점 |
|---|---|---|
SDA | SDA | 데이터 신호끼리 연결합니다. |
SCL | SCL | 클록 신호끼리 연결합니다. |
VCC 또는 +5V | +5V | LCD 변환 모듈이 5 V 전원형인 경우에만 연결합니다. 사용하는 제품의 +5V 단자와 모듈의 전원 사양을 먼저 확인합니다. |
GND | GND | 양쪽의 접지를 연결합니다. |
아래 그림은 MPAINO CPU 모듈의 I²C 결선 그림에서 LCD 연결에 필요한 부분만 확대해 보여 줍니다. 그림과 단자 정보의 출처는 MPAINO-16A16R 제품 설명과 해당 제품 사용설명서의 캐릭터 LCD 연결 절입니다.
MPAINO CPU 모듈의 SDA는 D20, SCL은 D21입니다. MPINO의 숫자 핀 번호는 모델에 따라 다르므로 이 값을 MPINO에 적용하지 말고, 실제 제품의 SDA·SCL 단자와 제품 설명을 따르세요. I²C를 사용하는 동안 같은 SDA·SCL을 외부 인터럽트 또는 엔코더 입력으로 동시에 사용하지 않습니다.
2. 내장 명령어
IclcdBegin(address, columns, rows)로 LCD를 초기화한 뒤 출력 명령어를 사용합니다. address는 LCD 변환 모듈의 7비트 I²C 주소, columns는 한 줄의 글자 수, rows는 줄 수입니다. 인수의 허용 범위는 열 1~40, 행 1~4입니다. 이 범위가 모든 LCD 크기의 실제 행 주소를 지원한다는 뜻은 아닙니다. 현재 코어의 3·4행 시작 주소는 0x14·0x54로 고정되어 있어 16 × 4 LCD의 3·4행에는 맞지 않습니다. 주소·크기·장치 번호가 잘못되거나 필요한 I²C 전송에서 응답이 없으면 false를 반환합니다.
모든 명령어는 성공 여부를 bool 값으로 반환합니다. LCD를 최대 4개까지 구분할 때는 장치 번호 device에 0~3을 사용합니다. 생략하면 0이며, 각 장치는 먼저 서로 다른 주소로 IclcdBegin(address, columns, rows, backlight, device)를 호출해야 합니다. backlight의 기본값은 true입니다.
| 명령어 | 하는 일 |
|---|---|
| IclcdBegin(address, columns, rows, backlight, device) | LCD 주소·크기·초기 백라이트 상태를 설정하고 연결 응답을 확인합니다. |
| IclcdSetCursor(column, row, device) | 다음 글자를 쓸 위치를 지정합니다. 열과 행은 0부터 시작하며, 설정한 화면 범위를 벗어나면 false입니다. |
| IclcdPrint(value, ...) | 문자열·문자·정수·실수를 출력합니다. 예: IclcdPrint(F(“RUN”)), IclcdPrint(12.34, 2). |
| IclcdClear(device) · IclcdHome(device) | 화면을 지우고 처음으로 이동하거나, 글자를 유지한 채 커서만 처음으로 이동합니다. |
| IclcdBacklight(on, device) · IclcdDisplay(on, device) | 각각 백라이트와 화면 표시를 켜거나 끕니다. |
| IclcdCursor(on, device) · IclcdBlink(on, device) | 밑줄 커서와 깜박이는 커서를 제어합니다. |
| IclcdScrollLeft(device) · IclcdScrollRight(device) | 표시 화면을 한 칸 왼쪽 또는 오른쪽으로 이동합니다. |
| IclcdTextDirection(leftToRight, device) · IclcdAutoscroll(on, device) | 글자 입력 방향과 입력할 때의 자동 화면 이동을 설정합니다. |
| IclcdCreateChar(location, charmap, device) · IclcdWrite(value, device) | 0~7 위치에 8바이트 사용자 문자를 등록하고 문자 코드 한 바이트를 출력합니다. |
| IclcdCommand(command, device) | HD44780 명령 바이트를 직접 전송하는 고급 기능입니다. |
IclcdPrint()에서 문자열의 두 번째 인수는 장치 번호입니다. 정수의 두 번째 인수는 진법(BIN, OCT, DEC, HEX 또는 2~36), 실수의 두 번째 인수는 소수점 아래 자릿수(0~10)이며, 이 두 형태의 장치 번호는 세 번째 인수입니다. 예를 들어 IclcdPrint(“SUB”, 1)은 장치 1에 문자열을 쓰고, IclcdPrint(255, HEX, 1)은 장치 1에 FF를 씁니다.
3. 사용 예: 첫째 줄과 둘째 줄에 글자 표시
다음은 I²C 주소가 0x27이고 20열 × 4행인 LCD의 예제입니다. 실제 LCD 주소가 다르면 0x27을 확인한 주소로 바꾸세요. 다른 화면 크기를 사용할 때는 위의 행 주소 제한과 LCD 자료를 먼저 확인하고 열·행 값을 바꾸세요. 16 × 4 LCD에는 이 예제를 적용하지 않습니다. Arduino IDE의 파일 → 새 스케치에 전체 코드를 붙여 넣고 저장한 후, 검증(✓)과 업로드(→)를 차례대로 누릅니다.
void setup() { Serial.begin(115200); // 실제 LCD 변환 모듈의 I²C 주소, 열 수, 행 수로 바꾸세요. if (!IclcdBegin(0x27, 20, 4)) { // LCD를 초기화하고 I²C 응답을 확인합니다. Serial.println(F("LCD connection failed")); return; } IclcdSetCursor(0, 0); // 첫째 줄의 첫 번째 칸으로 이동합니다. IclcdPrint(F("ILOGICS")); // 첫째 줄에 글자를 씁니다. IclcdSetCursor(0, 1); // 둘째 줄의 첫 번째 칸으로 이동합니다. IclcdPrint(F("LCD READY")); // 둘째 줄에 글자를 씁니다. } void loop() { }
업로드 후 첫째 줄에 ILOGICS, 둘째 줄에 LCD READY가 보이는지 확인합니다. 보이지 않으면 Arduino IDE 시리얼 모니터를 115200 bps로 열어 LCD connection failed가 출력되는지 확인하세요. 이 메시지는 주소·배선·전원 또는 I²C 응답을 확인해야 한다는 뜻입니다. IclcdBegin()의 true는 I²C 전송이 응답했다는 뜻이며, 글자가 실제 화면에 보이는 것까지 검사하지는 않습니다.
4. 동작하지 않을 때
| 증상 | 확인 순서 |
|---|---|
검증 시 IclcdBegin을 찾을 수 없음 | ILOGICS Arduino SDK 설치 여부와 Arduino IDE에서 실제 제품에 맞는 ILOGICS 보드를 선택했는지 확인합니다. 별도 LCD 라이브러리는 이 예제에 필요하지 않습니다. |
시리얼 모니터에 LCD connection failed 표시 | 전원을 끄고 SDA·SCL·+5V·GND 연결과 LCD 모듈의 전원 사양을 다시 확인합니다. 0x27은 예제 주소이므로 실제 모듈 주소를 확인해 수정합니다. |
| 초기화 오류 메시지는 없으나 글자가 보이지 않음 | LCD의 대비 조절부, 백라이트 상태, 실제 열·행 수를 확인합니다. PCF8574 변환 모듈의 LCD 측 연결이 이 명령어의 매핑과 같은지도 확인합니다. |
IclcdSetCursor() 등이 false 반환 | 해당 장치의 IclcdBegin()이 성공했는지, device가 0~3인지, 커서의 열·행이 설정한 화면 범위 안인지 확인합니다. |
| 다른 I²C 기기와 함께 사용할 때 오류 | 주소 중복을 확인하고, Iclcd…()가 실행되는 동안 다른 Wire 전송이나 I²C 슬레이브 콜백을 동시에 실행하지 않습니다. |
이 명령어는 PCF8574의 P0=RS, P1=R/W, P2=Enable, P3=백라이트, P4~P7=LCD D4~D7 연결을 사용합니다. 변환 모듈의 매핑이 다르면 I²C 주소가 맞더라도 정상 출력되지 않을 수 있습니다. IclcdCommand()는 화면 상태를 직접 바꾸므로 HD44780 명령을 알고 있을 때만 사용하세요.
자세한 함수별 인수와 예제는 위 명령어 이름을 눌러 확인할 수 있습니다. 제품 단자와 전원 사양은 사용하는 MPINO 또는 MPAINO 제품 설명을 우선합니다.
