iFLine-코딩으로 뽀샤버리기

4강. LED Blink 동작시키기

Posted by INDIFROG on 2020-06-26
Words 381 and Reading Time 2 Minutes
Viewed Times

4강. LED Blink 동작시키기

iFZeroboard

iFZero 보드에 내장된 LED 제어 - GPIO 04 포트

이번 강좌는 iFZero 보드에 내장된 blue LED 깜박이게 동작하는 예제입니다.
iFZero 보드의 오른쪽 하단의 LED에 연결된 IO4를 제어할 예정입니다.

일반적으로 전자공학이나 기타 관련 컴퓨터 전공자들은 IO 혹은 GPIO 등의 용어에 친숙할지도 모릅니다.
그러나 대부분의 임베디드 초심자들은 잘 모를 수 있습니다. 그렇다고 아직 실망할 필요는 없습니다.
여기서 설명하는 과정을 꼼꼼히 공부를 하신다면 전문가 못지않은 지식으로 무장할 수 있습니다.

IO는 Input / Output의 줄임말이고 GPIO는 General Purpose Input / Output의 줄임말입니다.
보통 GPIO로 표시된 pin은 Input/Output 둘다 동작한다는 것을 의미하고 GPI만 표시된 pin은 Input 으로만 동작하는 것을 알아 둘 필요는 있습니다.

ESP32-PICO-V3 PinMap

iFZeropinmap

ESP32는 많은 GPIO를 가지고 있습니다.
input으로 만 동작하는 pin이 있는 반면에 input/output 양방향으로 동작하는 pin도 있고 전용으로 통신 기능으로만 동작하는 pin이 있습니다. 추후 각각에 대해서 자세히 살펴보기로 하겠습니다.

iFZero 보드에 내장된 LED 회로 분석

이번 강좌에서는 GPIO4번에 iFZero 보드 내부 회로에서 Blue LED가 풀다운으로 연결되어 있다는 사실을 기억하는 것이 중요합니다.

아래 회로도에서 볼 수 있는 것처럼 LED는 다이오드 기호에 화살표 2개로 표현이 되고 저항이 있고 GDN에 연결이 되어 있습니다.

  • GPIO4가 HIGH가 되면 즉, GPIO 출력전압이 3.3V에서 GND로 전위차가 높은곳에서 낮은곳으로 전류가 흐르게 되고 LED엔 불이 들어오게 됩니다.
  • GPIO4가 반대로 LOW가 되면 0V 즉, 전원소스 0V와 동일하게 되어 전위차가 0 이므로 전류는 흐르지 않게 됩니다.

iFZeroLED

옴(ohm)의 법칙 적용

VIR

위 회로도에서 볼 수 있는 것처럼 LED는 V = I x R 에 의해 I = V / R 이므로

3.3 / 470 = 0.007 ( A )

따라서 전류가 약 7 mA 정도 약하게 흐르도록 설계가 되어 있습니다.

iFZero 보드에 내장된 LED 제어 소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

#include <Arduino.h>

#define LED_BUILTIN_BLUE GPIO_NUM_4

void setup() {

pinMode( LED_BUILTIN_BLUE, OUTPUT);
}

void loop() {
// turn the LED on (HIGH is the voltage level)
digitalWrite( LED_BUILTIN_BLUE, HIGH);

// wait for a second
delay(1000);

// turn the LED off by making the voltage LOW
digitalWrite( LED_BUILTIN_BLUE, LOW);

delay(1000);

}

setup 함수에서 호출한 아두이노 내장 pinMode 함수는 GPIO의 기능을 input이나 output으로 설정하는 역할을 합니다.

  • 첫번째 인자는 GPIO pin 번호이고
  • 두번째 인자는 input/output 등을 설정합니다.

loop 함수에서는 digitalWrite 함수를 1초마다 번갈아서 HIGH/LOW를 호출하여 LED를 ON/OFF 하는 기능을 합니다.