CLCD는 정보를 직접적으로 출력할 수 있어서 매우 유용하다. 시리얼 모니터로 출력을 할 수도 있지만 아두이노 자체에서 출력을 한다는 것에 큰 의의가 있고 편리함이 있다고 생각한다. 이것을 이용하면 간단하면서도 재미있는 것들을 만들 수 있다. 그 중에서 생각난 것(시간과 관련된 것)을 소개해볼까 한다.


1. PC 사용 시간 출력

   아두이노를 PC와 연결해놓으면 PC를 부팅해서 전원이 공급되는 순간부터 바로 아두이노가 동작한다. 따라서 타이머로 설정하면 PC 사용 시간을 알 수 있다. 현재 실제로 사용중이기도 하다.


 다소 조잡하지만 스케치는 아래와 같다.

// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

byte newChar[8] = { B00000, B11111, B00001, B11111, B00001, B00001, B00001, B00000 };
int h=0,m=0,s=0;

void setup() {
// set up the LCD's number of columns and rows:
lcd.createChar(0, newChar);
lcd.begin(16, 2);


lcd.print("PC Using Time ");
lcd.write(*newChar);
lcd.write(*newChar);
}
void loop() {
lcd.setCursor(0, 1);
if(s!=0&&(s%60)==0)
{
  s=0;
  m++;
}

if(m!=0&&(m%60)==0)
{
  m=0;
  h++;
}

lcd.print(h);
lcd.print("h  ");
lcd.print(" ");
lcd.print(m);
lcd.print("m  ");
lcd.print(" ");
lcd.print(s);
lcd.print("s");
lcd.print(" ");
lcd.print(" ");
lcd.print(" ");
lcd.print(" ");
s++;
delay(1000);


 이 스케치에 대한 결과물은 다음 사진에서 확인할 수 있다.


 ㅋㅋ와 같은 문자를 입력하기 위해서는 http://mikeyancey.com/hamcalc/lcd_characters.php 이곳을 방문하여 커스터마이징 하면 된다.


2. LOL 용 리젠 타이머

   일단 이것은 수동이라는 것을 알아 두어야 한다. 자동 타이머가 있다고 들은 것 같기도 한데 그것은 라이엇 게임즈에서 허용하지 않는 방법이다. 롤 자체의 프로그램에서 어떤 값을 일종의 하이재킹 해야 가능한 일이기 때문이다. 그만한 기술도 없고 일단 허용되지 않은 일이다. 여기서 소개하는 것은 용 리젠 시간인 6분(=360초)에 대한 단순한 타이머의 역할을 한다. 대신 아두이노에는 리셋 버튼이 있기 때문에 용을 처치하고 리셋 버튼을 누르면 다시 리젠 시간을 측정할 수 있으므로 어느 정도 잘 이용한다면 나름대로 유용 할 수 있다고 생각한다. 물론 스마트폰 앱도 많겠지만 말이다. 그냥 하나의 예제로 봐주면 감사하겠다.


 시간 카운터 하는 방법만 바꿔 주면 된다.

// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

byte newChar[8] = { B00000, B11111, B00001, B11111, B00001, B00001, B00001, B00000 };
int d=360;

void setup() {
// set up the LCD's number of columns and rows:
lcd.createChar(0, newChar);
lcd.begin(16, 2);

lcd.print("LOL Dragon Timer ");
}
void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
if(d==-1)
{
  d=360;
}
lcd.print(d);
lcd.print("s");
lcd.print(" ");
lcd.print(" ");
d--;


delay(1000);

}




 결과물은 위와 같고 블루, 레드, 바론에 대한 것으로도 쉽게 바꿀 수 있다.


 깊이 있는 내용은 아니지만 흥미가 있는 예제를 가지고서 자발적으로 구현에 임하면 효과적인 연습이 되지 않을까 싶다.

'프로그래밍 > Arduino' 카테고리의 다른 글

LED 주사위  (0) 2014.08.04
아두이노 LED 점멸  (0) 2013.12.01
아두이노 CLCD 출력하기  (0) 2013.11.23
아두이노(arduino) 입문  (0) 2013.07.02

 우리 학교는 하드웨어 설계 실험 과목에서 ARM칩을 이용한다. 최근에는 ARM9을 이용하고 CLCD는 8*2 크기의 8020A를 사용한다. 예전에는 ARM7에 16*2 크기의 1602 CLCD를 사용하였다. 8020A CLCD를 검색하다가 우연히 아두이노의 CLCD를 보게 되었는데 핀 구성이 8020A와 같았다. 그리고 모양새가 1602와 흡사해서 확인해보니 1602가 맞았다. 1602는 예전에 실험을 하고 아무렇게나 방치된 것들이 있었다. 그것들을 가져와서 묵혀두었던 아두이노에 장착해보았다.


 일단 스케치는 다음과 같다. 대표적인 CLCD 예제이다.

// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("softs.tistory");
}
void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print("Time:");
lcd.print(millis()/1000);
lcd.print("(s)");


 

1602 CLCD의 핀 구성은 위 그림과 같다. 16개의 핀이 있다.



 각 핀의 역할은 위 그림에서 확인 할 수 있다.


 조금 더 상세한 정보는 여기에 있다.


 연결은 위와 같은 형태이다. 아두이노 보드 아래에 3핀을 가지고 있는 것은 가변저항이다. CLCD의 밝기를 조절하는데 사용한다. 위와 같이 연결을 하면 글자의 밝기가 조절 가능하다.


 가변저항이 없다면 아래처럼 핀만 제대로 맞춰서 연결해도 된다.



[LCD 핀번호]                                           [ 아두이노 ]

1. Vss ------------------------------------- GND

2. Vdd ------------------------------------- 5V

3. V0 -------------------------------------- GND

4. RS -------------------------------------- D12

5. RW ------------------------------------- GND

6. E --------------------------------------- D11

7. DB0 (미사용)

8. DB1 (미사용)

9. DB2 (미사용)

10. DB3 (미사용)

11 DB4 ------------------------------------- D9

12 DB5 ------------------------------------- D8

13 DB6 ------------------------------------- D7

14 DB7 ------------------------------------- D6

15 LEDA ----------------------------------- VCC(5V에 연결)

16 LEDK ----------------------------------- GND


 이것이 실제 보드에서 이루어지는 연결의 한 예이다.


가변저항으로 글자의 밝기만 조절이 가능한 예제이므로 백라이트 밝기까지 제어하고 싶다면 가변저항을 하나 더 장착하고 가변저항의 양쪽은 5V와 GND에 연결하고 가운데는 CLCD 16번 핀과 연결하면 된다. (위의 자료들을 종합해서 생각하면 알 수 있다.)




실제로 회로를 연결하고 스케치를 업로드한 결과물이다.

'프로그래밍 > Arduino' 카테고리의 다른 글

LED 주사위  (0) 2014.08.04
아두이노 LED 점멸  (0) 2013.12.01
아두이노 CLCD 응용  (0) 2013.11.25
아두이노(arduino) 입문  (0) 2013.07.02

+ Recent posts