본문 바로가기

개발하자/아두이노

[아두이노] LED연결(digitalWrite)

#LED 연결

LED의 긴다리는 +로 3번핀을 연결하여 5V가 흐르게 하고

짧은다리는 그라운드로 연결하는데 바로 연결하면 터지게된다.

그래서 나가는 전류를 저항에 의해서 통과가 되도록한다.

저항을 드래그하여 저항값을 설정하면 색깔이 자동으로 변경된다.

 

3번핀으로 5V가 들어오면 그라운드랑 전위차가 생기므로 켜지게 되고

반대로 0V가 들어오면 전위차가 생기지 않으므로 LED가 꺼지게 된다.

 

여기서는 3번핀을 사용했는데 다른 디지털핀을 사용해도 되지만

~표시가 있는 핀을 사용하면 아날로그핀으로도 사용가능하기 때문에

LED밝기 조절도 가능하다는 장점이 있다.

 

 

이제 코딩을 해보자

 

스케치에서 NEW SKETCH를 클릭하면 기본코딩이 있는 파일이 생성된다.

 

기본코딩에 대해서 설명하자면

setup은 전원이 켜지면 리셋버튼 눌러졌을때 딱한번만 실행하는 것이고

setup의 특징은 pinMode라고 핀이 입력인지 출력인지와 핀번호를 설정하는 부분이다.

즉, 아두이노에게 이핀을 사용해도 되냐고 허락을 받는 부분이라고 볼 수 있다.

만약 허락받지 않고 loop에서 사용하면 불은 잠깐 켜지지만 희미하게 켜진다.

그래서 반드시 setup에 INPUT인지 OUTPUT인지 핀번호와 함께 설정을 해주어야 한다.

loop는 전원이 들어오면 지속적으로 반복하는 부분이다.

 

아두이노는 크게 세가지로 나눌 수 있다.

1.입력 :디지털 입력 아날로그 입력이 있다.(digitalRead, analogRead)

2.출력 :디지털 출력과 아날로그 출력이 있다.(digitalWrite, analogWrite)

3.시리얼통신:버튼을 눌렀는지와 같이 외부의 센서가 어떤 신호가 들어왔는데 컴퓨터에서 실시간으로 모니터링을 하고 싶을때 통신포트를 사용한다.(0번핀과 1번핀이 시리얼통신 전용포트)

외부의 데이터를 수집할 때 , 출력을 낼 때 사용

 

소스코딩을 해보면

Verify 를 했을 때 문법이 문제가 없으면 Success가 뜬다.

이제 이 코드를 복사하여 tinkercad에 붙여넣어보자.

/*

LED테스트

*/

void setup() {

pinMode(3,OUTPUT); //3번핀을 출력핀으로 설정(아두이노에게 허락받음)

}

void loop() {

digitalWrite(3,HIGH); //3번핀을 켜줌

delay(1000); //1초간 지연(유지)

digitalWrite(3,LOW); //3번핀을 꺼줌

delay(1000); //1초간 지연(유지)

}

 

코드버튼을 클릭해서 셀렉트박스에서 문자를 선택한다.

그리고 복사한 소스를 붙여넣기한 후 시뮬레이션 시작버튼을 누르면

LED가 깜빡이는 걸 확인할 수 있다.

 

**시뮬레이션 종료를 눌러야 다시 소스수정이 가능하다.

 

이렇게 아두이노가 없더라도 내가 만든 코드가 정상으로 동작하는지

가상으로 확인이 가능하다.

이렇게 검증이 끝나면 실제로 아두이노 우노에 업로드를 한다.

 

핀모드를 주석처리하고 테스트하면 LED가 희미하게 켜지는걸 확인할 수 있다.

(아두이노에게 허락받지 않았기 때문)

 

* 이제 2번핀도 LED를 연결하여 번갈아 깜빡이게 해보자

 

/*

LED 테스트

*/

void setup() {

pinMode(3,OUTPUT); //3번핀을 출력핀으로 설정(아두이노에게 허용허락)

pinMode(2, OUTPUT);

}

void loop() {

digitalWrite(3,HIGH); //3번핀을 켜줌

digitalWrite(2,LOW);

delay(1000); //1초간 지연(유지)

digitalWrite(3,LOW); //3번핀을 꺼줌

digitalWrite(2,HIGH);

delay(1000); //1초간 지연(유지)

}