아두이노는 대략 16개의 포트가 있습니다. 충분한가요? 하지만, CLCD를 연결 하려니 11개의 포트가 필요하네요?

D0~D7(data 8bit), RS(cmd or char), RW(read or write), E(for timing)

거기다, 백라이트를 위해 1개를 더 쓰면 포트가 네개 남습니다.

이제 슬슬 똥줄이 탑니다.

전자시계(+3) 라도 만들라 치면 거의 모든 포트를 다 사용하네요. GG -_-;

이 정도의 전자시계를 대륙에서는 -물 건너 오는 비용과 예쁜 케이스까지 포함하고 - 몇 천원 정도에 만들고 있습니다!

똑같은 그지같은 상황에 직면 하셨던 선지자 님들 덕에 CLCD에는 4bit모드라는게 있습니다;

한 바이트를 두번에 나눠 전달하여 출력핀을 절약하는 방법이죠.

D4~D7(data 4bit), RS(cmd or char), E(for timing)

이제 6선 만으로 CLCD에 문자를 뿌릴 수 있습니다. 충분한가요?

나는 아직도 목 마르다. - 히딩크

이 포스트에서는 3선만으로 CLCD를 제어하는 방법을 소개합니다.

아두이노 사이트에서 74HC595칩을 사용한 ShiftOut 예제에 힌트를 얻어, 이 칩을 사용해 CLCD를 제어해 보았습니다.

네. 돈 발랐습니다. 히딩크 감독님을 모실 만큼 처 바른건 아니고… 74HC595 칩은 몇 백원 정도에 살 수 있는 대중적인 칩 입니다.

clcd_3wire_sch.png

왼쪽의 Data, Clk, Latch 세 선만으로 CLCD제어에 필요한 오른쪽 6개의 신호를 시리얼로 받아 표시 해 줍니다.

저항 하나 필요 없는 그야말로 간단한 구성!!

타이밍 문제와 제가 산 CLCD의 데이타 시트에 4bit 초기화 과정에 없어서 삽질을 좀 했지만… 다 해결하고 라이브러리로 정리했습니다.

다은은 연결 예제:

clcd_3wires.png

아두이노 예제:

#include <clcd595.h>;//create a CLC595 object to control an lcd<br /> CLCD595 lcd = CLCD595(12, 11, 10); //specify data/clk/latch pins<br /><br />char string1[] = "CLCD withnonly 3 wires!";<br />void setup(void){<br />  lcd.init(); //initialize the LCD<br />  digitalWrite(13,HIGH); //turn on an LED for debugging<br />}<br /><br />void loop(void){<br />  lcd.clear(); //clear the display<br />  delay(1000); //delay 1000 ms to view change<br /><br />  lcd.putStr(string1); //send the string to the LCD<br />  delay(1000); //delay 1000 ms to view change<br />} //repeat forever</clcd595.h>
같은 일을 하는 I2C 칩을 사용하면 두 선 만으로 제어할 수도 있겠습니다. 단, 칩 가격인 5배 정도 이고(흠.), smd(으악!) 를 땜 할 자신이 있다면...