iFLine-코딩으로 뽀샤버리기

5강. Color LED 제어하기

Posted by INDIFROG on 2020-06-27
Words 380 and Reading Time 2 Minutes
Viewed Times

5강. Color LED 제어하기

iFLine

iFZero 보드에 연결된 Color LED 제어 - GPIO 02 포트

이번 강좌는 iFLine의 앞뒤로 2개씩 4개의 Color LED를 제어하는 코드를 구현하는 것입니다.
iFLine의 메인 보드는 신호선 1개(GPIO 02)로 4개의 RGB Color LED를 제어할 수 있습니다.

  • Color LED SK6812Mini RGB LED 부품을 사용하고 있습니다.
  • Color LED 제어 신호는 1번 LED의 1 Din 패드를 시작으로 3 DOUT으로 신호가 전달되어 반복적으로 2, 3, 4 LED의 번호 순서대로 동작하도록 설계가 되어 있습니다.

iFLine_COLOR_LED

따라서 3D 그림처럼 개발자가 직접 iFZero 보드의 GPIO2 PIN 소켓과 1번 LED의 1 Din 패드가 연결된
3COLOR으로 표시된 소켓에 전선을 직접 연결할 필요가 있습니다.

( 주의 : ESP32-PICO-V3칩 GPIO중에서 INPUT 전용핀과 GPIO12, GPIO20 을 제외하고 대부분 사용이 가능합니다. 
단, 예제에서는 GPIO2를 사용한 것입니다. )

VSCODE 라이브러리 추가 ( NeoPixelBus )

Color LED를 동작시키기 위해서는 Color LED 구동 라이브러리를 반드시 설치를 해야 합니다.

초기에 개발되어 널리 알려진 Adafruit사의 Neopixel RGB 라이브러리와 호환이 가능하지만 이 라이브러리엔 심각한 버그가 존재합니다. 1번 LED가 간혹, 랜덤하게 ON / OFF가 발생하는 문제가 있습니다. 사실 위 문제는 ESP32에서만 발생하는 소프트웨어적인 버그입니다.

따라서 이 문제를 해결한 소프트웨어 라이브러리를 사용하면 되는데 그것이 바로 NeoPixelBus 라이브러리입니다.

VSCODE_LIB

Visual Studio Code의 개미 얼굴 아이콘을 눌러서 PIO Home의 Libraries 패널에서 NeoPixelBus 라이브러리를 추가할 수 있습니다.

iFZero 보드에 연결된 COLOR LED 제어 소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <NeoPixelBus.h>


#define PIN GPIO_NUM_2
#define colorSaturation 128

NeoPixelBus<NeoGrbFeature, Neo800KbpsMethod> strip(4, PIN);

RgbColor red(colorSaturation, 0, 0);
RgbColor green(0, colorSaturation, 0);
RgbColor blue(0, 0, colorSaturation);
RgbColor white(colorSaturation);
RgbColor black(0);

long nPixel = 0;

void setup()
{
Serial.begin(115200);

////////////////////////////////////////////////////////////////
//
strip.Begin();
strip.SetPixelColor(0, black);
strip.Show(); // Send the updated pixel colors to the hardware.

}

void loop() {
int c = ++nPixel % 4;
strip.SetPixelColor(0, c==0? blue : black);
strip.SetPixelColor(1, c==1? blue : black);
strip.SetPixelColor(2, c==2? blue : black);
strip.SetPixelColor(3, c==3? blue : black);
strip.Show(); // Send the updated pixel colors to the hardware.

delay( 1000 );

}

VSCODE_LIB

위 코드는 간단히 1초마다 nPixel 변수 값을 증가하면서 4로 나눈 나머지의 값에 해당하는 위치의 Color LED 만 Blue 색으로 켜도록 동작하는 코드입니다.

이번 강좌에서는 Visual Studio Code에서 외부 라이브러리를 추가하는 방법과 iFLine의 Color LED를 동작시키는 방법을 공부했습니다.