RGB LED 모듈

예제

/***RGB LED**
  +--------------------------+
  |   Arduino  |   8mm LED   |
  +--------------------------+
  |     D11    |      R      |
  |     D12    |      G      |
  |     D13    |      B      |
  |     GND    |     GND     |
  +--------------------------+
*/
int red = 11;
int green = 12;
int blue = 13;

void setup() {
  pinMode(red, OUTPUT);
  pinMode(green, OUTPUT);
  pinMode(blue, OUTPUT);
}

void loop() {
  digitalWrite(red, HIGH);   // 빨간색 LED ON
  delay(500);
  digitalWrite(red, LOW);    // 빨간색 LED OFF
  delay(500);
  digitalWrite(green, HIGH); // 초록색 LED ON
  delay(500);
  digitalWrite(green, LOW);  // 초록색 LED OFF
  delay(500);
  digitalWrite(blue, HIGH);  // 파란색 LED ON
  delay(500);
  digitalWrite(blue, LOW);   // 파란색 LED OFF
  delay(500);
}

실행 영상

LED.gif

RGB LED 4개 모듈

예제

#include <Adafruit_NeoPixel.h>

#define PIN 6
#define BRIGHTNESS 50

Adafruit_NeoPixel strip = Adafruit_NeoPixel(4, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.setBrightness(BRIGHTNESS);
  strip.begin();
  strip.show();
}

void loop() {
  colorWipe(strip.Color(150, 0, 0), 50); // Red
  colorWipe(strip.Color(0, 150, 0), 50); // Green
  colorWipe(strip.Color(0, 0, 150), 50); // Blue
  colorWipe(strip.Color(150, 150, 150), 50); // BlueWite
  rainbowCycle(1);
 
}

void colorWipe(uint32_t c, uint8_t wait) {
  for (uint16_t i = 0; i < strip.numPixels(); i++) {
    strip.setPixelColor(i, c);
    strip.show();
    delay(wait);
  }
}

void rainbow(uint8_t wait) {
  uint16_t i, j;
  for (j = 0; j < 256; j++) {
    for (i = 0; i < strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel((i + j) & 255 ));
    }
    strip.show();
    delay(wait);
  }
}

void rainbowCycle(uint8_t wait) {
  uint16_t i, j;
  for (j = 0; j < 256 * 5; j++) { // 5 cycles of all colors on wheel
    for (i = 0; i < strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
    }
    strip.show();
    delay(wait);
  }
}

uint32_t Wheel(byte WheelPos) {
  if (WheelPos < 85) {
    return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  } else if (WheelPos < 170) {
    WheelPos -= 85;
    return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  } else {
    WheelPos -= 170;
    return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
}

실행 영상

4led.gif

참고

http://wiki.ywrobot.net/index.php?title=(SKU:ELB050084)WS2812串行5050全彩LED模块2*2点阵

라이브러리 설치 필수

라이브러리 매니저에서 Adafruit_NeoPixel 검색 후 3번 라이브러리 설치