LED 컬러 변경하기 (1)

by 김도현 | 2017-06-27 16:48

재료

  • 캐릭보드 1개

Mac 환경 설정이 끝났다면 이제 LED를 켤 차례입니다!



1. 라이브러리 설치


캐릭터 무드등을 만드는 방법은 매뉴얼에 작성되어 있습니다.


우리는 무드등 만들기의 회로 조립과 코드를 기반으로 작성할 예정입니다.

예시 코드를 실행하기에 앞서 NeoPixel 라이브러리를 설치해야 합니다. (설치방법 보러가기)


설치 링크 : https://github.com/adafruit/Adafruit_NeoPixel

첨부 파일의 압축을 푼 후,  Mac 의 경우 (Home Directory)/Documents/Arduino/libraries 에 저장하시면 됩니다.




2. 코드 작성

2.1. LED 색상 커스터마이징


코드를 실행해 보시면 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
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
 
#define PIN 6
 
Adafruit_NeoPixel strip = Adafruit_NeoPixel(5, PIN, NEO_GRB + NEO_KHZ800);
 
int red = 0;
int green = 0;
int blue = 0;
 
void setup() {
  strip.begin();
  Serial.begin(9600);
  red = 255;
  green = 255;
  blue = 255;
}
 
void loop() {
  for (int i = 0; i < 5; i++) {
    strip.setPixelColor(i, strip.Color(red, green, blue));
    strip.show();
  }
}

우리는 여기서 setPixelColor 함수가 색상을 출력하는 것을 알 수 있습니다.

여기서 함수 설명을 하자면 setPixelColor(num, strip.Color(red, green, blue)) 에서 num 값은 보드에서 가까운 LED의 번호를 의미합니다. 가장 가까운 LED가 0번 입니다. (위와같이 i 값을 0부터 4까지 loop를 돌리는 이유는 우리가 사용할 LED가 5개의 전구가 연속해있기 때문입니다.)

뒤의 red, green, blue의 경우 순서대로 RGB 색상을 의미하며 0부터 255까지의 숫자로 표시합니다.

이 코드의 setup() 함수에서 red, green, blue 모두 255로 초기화했기 때문에 하얀색 불이 나옵니다.





저는 SHINee를 좋아하는데, 만약 펄아쿠아그린 컬러로 LED 색상을 변경하고 싶다면 어떻게 하면 될까요?

펄 아쿠아 그린의 색상표는 #79E5CB 입니다. 이는 16진수이므로 2자리씩 떼어내서 10진수로 바꾸면 121, 229, 203입니다. 이 숫자로 코드를 수정해보고 실행해 봅시다.


setup에서 숫자를 변경하면 다음과 같이 색상이 변경된 것을 확인 할 수 있습니다.

그런데 빛의 3원색이라서 그런지 생각보다 원하는 대로 색상이 나오지 않습니다.

그래서 임의로 숫자를 수정하여 최대한 펄아쿠아그린 컬러와 비슷하게 만들어보았습니다.


  

응용해서 이렇게 응원을 할 수 있습니다.



2.2. LED 별 색상 변경

이제 색상 변경이 익숙해졌다면, 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
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
 
#define PIN 6
 
Adafruit_NeoPixel strip = Adafruit_NeoPixel(5, PIN, NEO_GRB + NEO_KHZ800);
 
int red = 0;
int green = 0;
int blue = 0;
 
void setup() {
  strip.begin();
  Serial.begin(9600);
  red = 255;
  green = 255;
  blue = 255;
}
 
void loop() {
  green = 0;
  for (int i = 0; i < 5; i++) {
    if(i%2 == 0) red = 255;
    else red = 0;
    strip.setPixelColor(i, strip.Color(red, green, blue));
    strip.show();
  }
}

색상 출력을 시작하기 전에 green을 0으로 초기화합니다.

그리고 홀수, 짝수의 LED 번호에 따라 red 값을 변경합니다.


그러면 0, 2, 4번 LED는 마젠타 색상이 되고, 나머지 2개의 LED는 그대로 파란색임을 확인할 수 있습니다.

알록달록 예쁘지요? 이제 LED별 색상을 다루는데 익숙해졌다면, 코드를 이용하여 LED 색상이 흐르도록 할 수 있습니다!




이전편 > Mac 개발 환경 설정

다음편 > LED 색상 변경하기 2탄

댓글 0

MADE BY

김도현

프로그래밍