강의내용 강의내용
Ⅰ Arduino를 이용한 캐릭터
LCD, VFD 제어하기
소개 1. 소개
- CDS와 디지털 입출력포트 그 중에서도 PWM 포트를 사용하여 LED를 통하여 아날로그 출력을 해보려고 함 .
- 이번 강좌를 통해 여러가지 센서들을 응용함에 많은 도움이 될 것임.
1. 소개
- 요즘 LCD와 관련하여 많은 제품들이 나오고 있음. 종류도 다양하고 크기도 다양함 .
- 이번 강의에서는 아두이노를 이용하여 LCD와 VFD를 제어해보려고 함.
- LCD를 제어하기 위해서는 복잡한 코딩을 하여야 하지만 친절하게도
기본적으로 헤더파일이 아두이노 프로그램에 포함되어 있기 때문에 헤더파일
선언만 해주면 간단하게 LCD를 제어할 수 있음
LCD 1. 소개
- LCD(Liquid Crystal display)는 “liquid crystal” 즉 액정이라는 아이를 이용한 빛의 조절로 우리가 tv나 모니터 등에 화려한 색체등을 볼 수 있게 하는 것 .
- 다시 말해, 인가전압에 따른 액정의 투과도의 변화를 이용하여 각종 장치에서
발생되는 여러가지 전기적인 정보를 시각정보로 변화시켜 전달하는 전기소자
VFD 1. 소개
- VFD는 음극(Cathode), 그리드(Grid), 양극(Anode)의 3종류의 전극(3극 진공관 )성되며, 음극에서 방출된 전자를 그리드에서 조절하여 양극에 충둘시킴.
- 이때, 패턴화된 양극 위에 도포된 형광체를 저속의 전자선으로 발광시킴으로 원하는 표시를 나타내는 발광형 표시장치 .
- 간단히 말하면 발생한 열전자가 그리드를 통과해 세그먼트에 부딪치면
세그먼트의 형광물질이 빛이 나면서 표시가 됨 .
2.1 LCD 회로
2. LCD 회로구성 및 출력하기
-일반적으로 아래 사진과 같이 14개 핀으로 구성되어진 LCD이면 데이터시트 도한 거의 똑같다고 보면 됨.
- 아래는 16X4 LCD임. 16X2 또는 그이상의 LCD도 핀이 14개이면 모두 다 같음
2.2 LCD 핀 구성
2. LCD 회로구성 및 출력하기
-백라이트(GND, VCC 보통 15, 16핀)를 제외한 14개의 핀으로 구성된 LCD는 모두 다 오른쪽 데이터 시트와 동일함.
-이중에서 사용되어지는 핀은 7, 8, 9, 10번 핀을 제외한 나머지 핀은 다 사용.
-LCD를 출력할 때데이터 신호 8개를 다사용하여 8bit로 출력을 해도되지만4bit로도 출력이 얼마든지 가능하기 때문에 4개의 핀만 사용함.
-아두이노의 핀은 한정되어 있기 때문에 핀이 남으면 그만큼 다른 센서들을 연결할 수 있음
-8개보단 4개의 핀으로 제어하는 것을 추천
2.3 아두이노와 LCD 핀 연결
2. LCD 회로구성 및 출력하기
2.3 아두이노와 LCD 핀 연결 2. LCD 회로구성 및 출력하기
- LCD의 핀과 오른쪽의 아두이노 핀을 서로 연결해주면 됨
-예를 들어 LCD의 1번핀은 아두이노의 GND에 LCD의 11번 핀은 아두이노의 10번핀에 연결해주면 됨
2.3 아두이노와 LCD 핀 연결 2. LCD 회로구성 및 출력하기
#include <LiquidCrystal.h>
// LiquidCrystal display with;
// rs on pin 4
// enable on pin 9
// d4, d5, d6, d7 on pins 10, 11, 12, 13 LiquidCrystal lcd(4, 9, 10, 11, 12, 13);
<?xml:namespace prefix = 0 /><?xml:namespace prefix = 0/>
void setup() {
2.3 아두이노와 LCD 핀 연결 2. LCD 회로구성 및 출력하기
lcd.bigin(16, 4); // LCD의 행, 열 액정번호 설정. LCD의 사이즈는 16X4임.
}
void loop() {
lcd.setCursor(0,0) //LCD 1행에 맨왼쪽부터 출력 lcd.print(“hello”);
lcd.setCursor(0,1) //LCD 2행에 맨왼쪽부터 출력 lcd.print(“hi, arduino”);
2.3 아두이노와 LCD 핀 연결 2. LCD 회로구성 및 출력하기
lcd.setCursor(-4,2) //LCD 3행에 맨왼쪽부터 출력 lcd.print(“Mediaflow”);
lcd.setCursor(-4,3) //LCD 4행에 맨왼쪽부터 출력 lcd.print(“Mokwon”);
}
-LCD와 관련된 라이브러리는 LiquidCrystal.h인에 있음. 반드시 선언해 줘야 함.
-주석대로 차례대로 핀 번호를 넣어주어야 함.
-lcd.begin은 LCD의 설정해주는 부분으로 이 부분이 없으면 출력이 잘 안됨.
-setCursor(0,1)은 어디위치에 문자를 출력할 건지 위치를 정해줌. 0,1은 2번째 열에 출력을 하라는 의미임.
-LCD는 다음줄로 자동으로 넘어가지 않기 때문에 출력 위치를 정해줘야 함.
2.3 아두이노와 LCD 핀 연결
2. LCD 회로구성 및 출력하기
lcd.setCursor( 열, 행);
- 0, 0이면 첫번째 줄 맨왼쪽에 출력하라는 의미임.
-16X4에서는 0부터 시작했으니 마지막 행은 3
lcd.begin(16,4);
-LCD의 사이즈를 설정하는 것으로 이 이상넘어가버리면 출력이 되지 않거나 글시가 깨져버림.
-같은열에 다른 문을 쓰고싶다면
lcd.setCursor(0,0);
lcd.print(“ ”);
-이렇게 중간에 16칸의 빈칸을 만들고 그 위에 덮어 씌어야 글씨가 남아있지 않음
2.4 정리
2. LCD 회로구성 및 출력하기
- LiquidCrystal.h 라이브러리는 아두이노에서 기본적으로 제공해줌
- 기본적으로 16X2 LCD는 출력위치를 lcd.setCursor(0,0); 으로 하면 1번째 행 왼쪽에 출력이 됨.
- 하지만, 16X4 LCD에서 3번째 행에 lcd.setCursor(0,2);라고 출력하면 3번째 행에 출력은 되지만 4칸 뒤에 출력이 됨.
- lcd.setCursor(0,3)도 아래와 같이 출력됨.
2.4 정리
2. LCD 회로구성 및 출력하기
- 3번째 4번째 행은 시작이 0부터가 아닌 -4부터 시작을 해야지 제대로 출력됨
2.4 정리
2. LCD 회로구성 및 출력하기
- 유념할 부분은
lcd.setCursor(열, 행);
lcd.print(“16개이하의 글씨”);
- 이렇게 순서대로
출력할 위치 + 출력글자
로 사용해야 함.- 출력할 위치를 적지 않으면 기본 0X1 즉 첫번째 행에 첫번째 칸에 출력이 됨.
2.4 정리
2. LCD 회로구성 및 출력하기
- 이것이 16X2 VFD임. 보기에는 날로 비슷하게 생긴거 같기도 하고 LCD 보단 있어보임. 바로 이것을 가지고 출력을 할 것임.
- 핀 순서는
3.1 CFD 회로
3. VFD 회로 구성 및 출력하기
3.2 VFD 핀 정보
3. VFD 회로 구성 및 출력하기
3.3 VFD 핀 순서
3. VFD 회로 구성 및 출력하기
3.3 VFD 핀 순서
3. VFD 회로 구성 및 출력하기
#include <LiquidCrystal.h>
// LiquidCrystal display with:
// rs on pin 4
// enable on pin 9
// d4, d5, d6, d7 on pins 10, 11, 12, 13
<?xml:namespace prefix = o />
void setup() {
lcd.begin(16,2); //VFD의 행, 열 액정번호 설정은 사용된 VFD으 사이즈는 16X2임 }
3.3 코딩
3. VFD 회로 구성 및 출력하기 출력 해주는 방식만 틀리지
제어 방법과 회로구성은 LCD와 똑같음
void loop() {
lcd.setCursor(0,0); // VFD 1행에 맨왼쪽부터 출력 lcd.print(“hello!”);
lcd.setCursor(0,1); // VFD 2행에 맨왼쪽부터 출력 lcd.print(“hi, arduino”);
}
3.3 코딩
3. VFD 회로 구성 및 출력하기
3.4 실행결과
3. VFD 회로 구성 및 출력하기
4. 결론
- 어떻게 응용하고 어떻게 쓰느냐에 따라 여러가지로 표현할 수 있음
- 복작해 보이기는 하지만 아두이노가 제공해주는 라이브러리를 이용해서 정말 쉽게! LCD와 VFD를 제어해 보았습니다.
5. 참고자료
- 프로토 쉴드
5. 참고자료
- LCD와 프로토쉴드를 바로 여결한 모습 파란색의 가변저항이 있어 볼륨을 달지 않아도 밝기 조절을 할 수 있음
5. 참고자료
- 핀배열이 다른 VFD는 순서대로 프로토 쉴드에 연결을 하여 사용