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