사용자 도구

사이트 도구


guide:character_lcd

문서의 이전 판입니다!


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. 준비와 연결

  1. Arduino IDE로 시작하기에 따라 ILOGICS Arduino SDK를 설치하고, 사용하는 제품과 같은 보드 및 포트를 선택합니다.
  2. 전원을 끈 상태에서 제품의 I²C 단자와 LCD 변환 모듈을 연결합니다. 단자의 실제 위치와 전원 출력 사양은 사용하는 MPINO 또는 MPAINO 제품 설명에서 확인합니다.
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 모듈 I²C 단자와 기기의 SDA·SCL·+5V·GND를 같은 이름끼리 연결하는 그림

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 제품 설명을 우선합니다.

guide/character_lcd.1791299251.txt.gz · 마지막으로 수정됨: 저자 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki