라즈베리파이, 아두이노

[간단한 아두이노 코딩] 2. LED 깜박이기

포도알77 2020. 11. 17. 23:35

LED 깜박이기

 

1. LED 회로 구상

 초등학생때 배우는 꼬마전구와 건전지를 이용해서 불을 켜는 회로를 생각해보자. 우리는 꼬마 전구의 +-극에 건전지의 +,-극을 전선으로 연결하게 되면 불이 들어온다.

 

 

건전지 +극 --- LED --- 저항 --- 건전지 -극

 

 LED 또한 마찬가지이다. LED의 +극과 -극에 그에 알맞은 전원을 인가해주면 불이 들어오게 된다. 여기서 알맞은 전원이란, 적당한 전압과 전류를 뜻하는데 빨간색의 LED는 약 1.8 볼트의 전압과 20mA의 전류가 필요하다. 

 

 

 그러나 아두이노에서는 3.3V와 5V 전압 포트가 있고, GPIO에서 디지털 핀은 HIGH일 때 5V를 출력한다.

따라서 우리는 옴의 공식을 이용하여 LED 소자가 타지 않도록 저항 값을 계산해서 연결해 주어야 한다.

 

 

 

Vcc - Va - Vb = 0v

 

 전원(Vcc)은 5V로 가정하고, LED가 필요한 전압 1.8v를 Va 그리고 저항에 인가되는 전압을 Vb라고 해보자.  그렇다면 위의 공식은 아래와 같이 다시 쓸 수 있으며 저항에 걸리는 전압은 3.2V가 된다.

 

5 - 1.8 - Vb = 0

3.2 - Vb = 0

Vb = 3.2

 

 

 

 

 전류는 어떻게 구할까. LED의 최대 전류는 20mA이다. 또한 건전지와 LED 그리고 저항이 하나로 연결되어 있으므로 LED에 흐르는 전류와 저항의 흐르는 전류는 20mA로 동일하다. 

 

Ia = Ib = 20mA

 

 

 

 이때 옴의 공식인 V=IR을 통해서 저항의 전류를 구할 수 있다. Vb = 3.2, Ib = 0.02A (20mA)이므로 V/I = R을 통해 3.2/0.02 = 160옴을 구할 수 있다.

V = IR

3.2 = 0.02 * R

R = 3.2/0.02 = 160옴

 

 


 

2. 아두이노 핀에 연결하기

 

 

 아두이노의 8번 핀에 저항과 LED의 긴 다리를 연결하고, LED의 짧은 다리를 아두이노 GND에 연결하여 준다.

 

GPIO 8 ------- 저항 ------(긴쪽) LED (짧은쪽) ----- GND

 

 물론, 저항과 LED의 위치는 바뀌어도 무관하다. 대신 LED의 긴쪽 다리는 애노드 (+극), 짧은 다리는 캐소드 (-극)이므로 극성에 주의하여야 한다.

 

 


 

3. 코드 작성

 

 코드는 [간단한 아두이노 코딩] 1. IDE 설치 하기에서 사용한 코드를 재활용 해보자. 우리는 더 이상 LED_BUILTIN을 사용하지 않고, GPIO 8번을 이용할 것이다. 따라서 LED_BUILTIN 대신 8을 넣어주면 된다.

 

#define LED_RED 8
// 매크로를 통하여 LED_RED를 상수값 8으로 정의
// 컴파일 시간에 코드에 포함된 모든 LED_RED 문자는 8으로 대체된다.

void setup() {
  pinMode(LED_RED, OUTPUT);
  // GPIO 8번을 사용
}

void loop() {
  digitalWrite(LED_RED, HIGH);
  delay(1000);
  
  digitalWrite(LED_RED, LOW);
  delay(1000);
}

 

페이스북으로 공유카카오톡으로 공유카카오스토리로 공유트위터로 공유URL 복사