[아두이노 기초] 전체 글 목록

이번시간에는 버튼을 이용하여 디지털 입력에대해 알아보도록 하겠습니다.

디지털 출력을 이용하여 LED를 제어할때 우리는 pinMode(포트번호, OUTPUT)를 사용하였죠.

디지털 입력은 그와 반대로 pinMode(포트번호, INPUT)입니다. 

정말 간단 합니다. 출력은 OUTPUT 입력은 INPUT

또한 출력문은 DigitalWrite(포트번호,HIGH/LOW), 입력문은 DigitalRead(포트번호)를 사용한다는 차이점이 있습니다. 자세한 내용은 아래에서 설명하도록 하겠습니다.

하지만 디지털 입력을 실습해보기 전에 전원을 차단하는 방식으로 LED를 제어해보도록 하겠습니다.


버튼을 눌렀을때 LED를 킬수 있도록 회로를 구성해 보도록 합시다.

버튼 2개를 5v전원과 연결하고 각각 LED와 연결되도록 하였습니다.

버튼을 통해서 눌렀을때는 회로가 연결되어 LED에 전원이 들어가고 떼면 회로도 떨어져 LED가 꺼지는 원리 입니다. 아래 그림의 S1, S2가 스위치 입니다. 참고 해주세요.


이렇게 회로를 구성한뒤 스위치를 눌러보면 아두이노에 코딩을 하지 않아도 LED가 켜지는 것을 확인할 수 있습니다. 그럼 이제 디지털입력을 통해 LED를 제어해 보도록 합시다. 아래 회로도를 보시죠.

전과 달라진 점이 있습니다. 5v전원은 아까와 같이 스위치에 연결되어 있습니다.

그런데 노란선(D6, D12)가 보이시나요? 저 2개의 선이 디지털입력을 하기위한  선입니다.

쉽게 생각하면 이런것이죠.(스위치 누른다. -> 디지털 입력으로 신호가 들어간다. -> 아두이노가 입력신호를 받는다. -> 받은 신호에 따라 LED에 연결된 포트로 디지털 출력을 보낸다.)


회로를 다 구성하였으면 소스코드를 추가하여 봅시다.

int led1 = 7;

int led2 = 6;

int key1 = 13;

int key2 = 12;

 

void setup()

{

pinMode(led1, OUTPUT);

pinMode(led2, OUTPUT);

pinMode(key1, INPUT);

pinMode(key2, INPUT);

}

void loop()

{

if( digitalRead(key1) == HIGH )

digitalWrite(led1, HIGH);

else

digitalWrite(led1, LOW);

 

if( digitalRead(key2) == HIGH )

digitalWrite(led2, HIGH);

else

digitalWrite(led2, LOW);

 

delay(100);

}

각각 포트번호를 led1,2 key1,2라는 변수로 선언해주고 

setup()부분에서 입력인지 출력인지를 설정해주었습니다. 출력:OUTPUT 입력:INPUT

if문을 통하여 digitalRead(key1)로 읽은 신호가 HIGH인지 LOW인지 판단을 합니다. HIGH=스위치 누름

스위치가 눌렸다면 digitalWrite를 통해 LED를 켜고 떼면 신호가 LOW로 떨어지면 LED를 끕니다.


다 작성한 후 코드를 업로드하고 동작하여보면 어떻게 된것인지 더 확실히 이해하실수 있을 것입니다.

또한 위의 코드를 조금 수정하여 

디지털 입력(버튼)LED가 주기적으로 ON/OFF 반복하도록 바꾸어 보세요.

여기까지 디지털 입력 버튼으로 LED제어하기를 해보았습니다. 

다음시간에는 부저를 사용해 소리를 내보도록 합시다.


+ Recent posts