죄송합니다. 더 이상 지원되지 않는 웹 브라우저입니다.

반도체네트워크의 다양한 최신 기능을 사용하려면 이를 완전히 지원하는 최신 브라우저로 업그레이드 하셔야 합니다.
아래의 링크에서 브라우저를 업그레이드 하시기 바랍니다.

Internet Explorer 다운로드 | Chrome 다운로드

반돌이’s 아두이노 강좌 (6)


PDF 다운로드


6-1. 스위치로 LED ON/OFF 제어

안녕하세요! 오늘은 스위치를 이용해서 LED를 제어하는 방법에 대해서 알아보려 합니다. 물론 저
지난번 시간에 말씀 드렸듯이 모든 작업상태는 LCD에 표시할 것입니다. 아직 LCD에 대해서 잘 모르시는 분들은 이전 강의를 필수로 듣고 와 주시면 감사하겠습니다. 오늘은 DFROBOT에서 생산되는 아두이노 LCD 키패드 쉴드라는 아주 좋은 아두이노 호환 쉴드가 있어서 그 쉴드를 이용하여 진행하겠습니다.
1602 LCD와 키패드가 함께 부착된 쉴드입니다. 여러모로 쓸모가 많고 상단에 보시면 D IN/OUT핀을 지원하는 단자가 있어서 아두이노와 호환되는 센서류나 다른 제품과의 호환이 좋습니다.
또한 아두이노 위에 결합하여 사용하는 것이라서 점퍼선이 따로 필요 없습니다. 뒷면에 보시면 점퍼선을 대신할 핀이 들어가 있어서 결합 시에 아두이노 핀맵과 정확하게 일치합니다.
그리고 저번시간에 LCD를 구동할 때는 따로 가변저항을 추가해서 회로를 구성해야 했었습니다. 하지만 키패드 쉴드를 이용한다면 쉴드 자체에 가변저항이 달려있어 별다른 구성 없이도 간편하게 이용 할 수 있습니다.
아두이노와 결합한 모습입니다. DFR0004를 쓰지 않으셔도 앞의 시간에 LCD를 사용하셔도 저희 강좌를 따라하시는 데에는 문제가 없습니다.
제일 왼쪽에 택트 스위치와 그다음 LED, 가변저항 순서로 연결되어 있는 회로도 입니다. 위의 회로도는 키패드 쉴드를 사용하지 않은 회로도 입니다.
위의 회로도는 DFR0009 키패드 쉴드를 회로로 구성한 것입니다. 저는 키패드쉴드 회로와 소스를 이용하여 강좌를 진행하겠습니다.
자, 그럼 바로 소스를 확인 해보겠습니다.

#include
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // LCD 제어를 위한 핀 설정
int led = 1;                                   //LED 핀 설정 Digital
int lcd_key = 0;                            //키패드 핀 설정 Digital
int adc_key_in = 0;                      //키패드 핀 데이터
#define btnRIGHT 0                     //RIGHT 버튼 지정 Analog
#define btnUP 1                          //UP 버튼 지정 Analog
#define btnDOWN 2                     //RIGHT 버튼 지정 Analog
#define btnLEFT 3                       //RIGHT 버튼 지정 Analog
#define btnSELECT 4                   //RIGHT 버튼 지정 Analog
#define btnNONE 5                      //RIGHT 버튼 지정 Analog
int read_LCD_buttons()
{
adc_key_in = analogRead(0);               // AO 핀으로부터 아날로그값을 읽어옴
// 읽어온 아날로그의 값에 따라 눌려진 버튼을 판단함
if (adc_key_in > 1000) return btnNONE; //아날로그 값이 1000보다 클경우 btnNONE
if (adc_key_in < 50) return btnRIGHT;    //아날로그 값이 50보다 작을경우 btn Right
if (adc_key_in < 250) return btnUP;        //아날로그 값이 250보다 작을경우 btn UP
if (adc_key_in < 450) return btnDOWN;   //아날로그 값이 250보다 작을경우 btn DOWN
if (adc_key_in < 650) return btnLEFT;      //아날로그 값이 250보다 작을경우 btn LEDT
if (adc_key_in < 850) return btnSELECT; //아날로그 값이 250보다 작을경우 btn SELECT
return btnNONE;                                     //그외에는 btnNONE
}
void setup()
{
lcd.begin(16, 2); // LCD 초기화
lcd.setCursor(0,0); //LCD 커서 0, 0
pinMode(led, OUTPUT);
}
void loop()
{
lcd.setCursor(0,1);                      // 2번째 줄(1) 1번째(0) 패널에 위치하고
lcd_key = read_LCD_buttons();    // 버튼이 눌려진 이름 출력하는 함수 호출
switch (lcd_key) // 버튼 판단
{
case btnSELECT:                        //SELECT 버튼이 눌러졌을 경우에
{
lcd.print(“LED ON “);                    //LCD에 문자 출력
digitalWrite(led, HIGH);                 //LED 점등
break;
}
case btnLEFT:                             //SELECT 버튼이 눌러졌을 경우에
{
lcd.print(“LED OFF”);                   //LCD에 문자 출력
digitalWrite(led, LOW);                //LED 점등
break;
}
}
}...(중략)

leekh@semiconnet.co.kr
(끝)
<저작권자(c) 반도체네트워크, 무단 전재-재배포 금지>


PDF 다운로드

개인정보보호법 제15조에 의한 수집/이용 동의 규정과 관련하여 아래와 같이 PDF 다운로드를 위한 개인정보 수집 및 이용에 동의하십니까? 동의를 거부할 수 있으며, 동의 거부 시 다운로드 하실 수 없습니다.

이메일을 입력하면,
(1) 신규참여자 : 성명/전화번호/회사명/분야를 입력할 수 있는 입력란이 나타납니다.
(2) 기참여자 : 이메일 입력만으로 다운로드가 가능합니다.

×

회원 정보 수정



* 가입시 이메일만 입력하신 회원은 이름란을 비워두시면 됩니다.