컨텐츠 바로가기


product


이전 제품 보기

다음 제품 보기

크게보기

[P0000JMK] 아두이노용 LED 모듈 8-WS2812-5050RGB MODULE 적립금

() 해외배송 가능

아두이노용 LED 모듈 8-WS2812-5050RGB MODULE 기본 정보
판매가
소비자가 0원
적립금
  • 0 (0%)
  • 무통장 결제시 적립금 ( %) 무
  • 카드 결제시 적립금 ( %) 카
  • 실시간 계좌 이체시 적립금 ( %) 실
  • 적립금 결제시 적립금 ( %) 적
  • 휴대폰 결제시 적립금 ( %) 휴
무이자할부
제조사 자체제작
원산지
상품코드 P0000JMK
수량

updown

국내/해외배송
SNS 상품홍보
QR코드  

이미지저장 | 코드URL복사

QR코드 보내기 페이스북으로 보내기 트위터로 보내기 미투데이로 보내기 요즘로 보내기

장바구니 담기 관심상품 등록 추천 메일 보내기

쇼핑 계속하기 바로 구매하기

event

상품상세정보

 직경 : 68mm
무게 : 12g
전압 : 4.0 ~ 7.0VDC
LED : WS2812B * 16EA

제품상세정보 출처 : 기술여행자 블로그 [ http://arsviator.blogspot.kr/2015/04/ws2812-color-led.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+arsviator+(%EA%B8%B0%EC%88%A0+%EC%97%AC%ED%96%89%EC%9E%90+(ArsViator) ]



WS2812 color LED 사용하기

칼라 LED는 LED 내부에 빛의 3원색에 해당하는 Red, Green, Blue LED가 들어있어 각각의 밝기를 조절하면 원하는 색을 만들어 낼 수 있다.
일반적인 형태의 칼라 LED는 아래 사진과 같은 형태로 4개의 다리가 나와 있다.
Common Anode 타입의 LED인 경우 가장 긴 다리가 common anode로 이 다리는 +에 연결되어야 하고 나머지 3개의 다리는 프로세서의 I/O에 연결해 LED를 제어한다.
각 IO핀이 LOW면 해당 LED가 켜지고, HIGH면 LED가 꺼지게 된다. (PWM의 경우 duty가 0%면 가장 밝게 켜지고 100%면 꺼짐)


반대로 common cathode 타입의 LED인 경우, common cathode는 GND에 연결하고 나머지 3개 다리는 프로세서의 I/O에 연결한다.
이 경우 common anode와 반대로 IO핀이 HIGH이면 해당 LED가 켜지고, LOW면 LED가 꺼지게 된다.
(PWM의 경우 duty가 100%면 가장 밝게 켜지고 0%면 꺼짐)
아래 그림은 common cathode타입의 컬러 LED를 사용할 때의 연결이다.

보통 위와 같이 전류제한 용으로 저항이 필요하다.
이제 LED가 연결되면 컬러 LED를 제어하는 2가지 방법이 있다.
첫번째는 GPIO를 이용하는 것으로, 이 경우 각각 IO핀은 2개의 상태, LOW(0V)/HIGH(Vcc),를 가질 수 있으므로
총 8개의 다른 색(검은색 포함해서)을 낼 수 있다.

다른 방법으로는 각 색깔별 LED의 밝기를 조절하는 것이다.
PWM을 사용해 각각의 밝기를 조절하면 매우 다양한 색을 만들어 낼 수가 있게 된다.
아두이노의 경우 6개의 8-bit PWM 채널을 가지고 있기 때문에, 각 PWM은 0~255 사이의 값을 가질 수 있다.
그러므로 칼라 LED에 3개의 PWM 채널이 연결되기 때문에 총 256*256*256=16,777,216가지의 조합이 만들어 질 수 있다.

이 방법은 원하는 색을 만들어 낼 수 있지만, 단점은 칼라 LED 하나당 3개씩의 PWM 채널이 필요하다는 것이다.
아두이노 우노의 경우 6개, 메가의 경우 14개의 PWM을 가지고 있기 때문에 각각 2개, 4개의 칼라 LED밖에 연결할 수 없다.
물론 쉬프트 레지스터나 멀티플렉서등을 사용해서 더 많은 칼라 LED를 연결하는 방법이 있긴 해도 금새 매우 복잡해진다.

WS2812-based LED

Worldsemi라는 회사에서 이런 문제점을 완전히 해결해주는 새로운 칩을 만들었다.
처음에 만든것은 WS2811이라는 SMD IC로 내부에 시리얼 통신, 3개의 8-bit PWM 채널, 전류제한회로등을 가지고 있다.
다음으로 만든것은 WS2812로 5mm*5mm 정사각형 패키지 안에 WS2811에 추가로 고휘도 RGB LED를 다 집어 넣어 버렸다.


이 칩의 가장 좋은 점은 단지 4개의 핀(GND, Power(5V), Data In, Data Out)만 있으면 된다는 것이다.
즉 이 칩은 서로 daisy-chain으로 여러개를 연결해 줄 수 있다.
프로세서가 체인의 첫번째 칩의 Data-In을 구동하고, 첫번째 칩의 Data-Out이 두번째 칩의 Data-In을 다시 구동하는 식이다.
다음 그림을 보면 좀 더 이해하기 쉬울 것이다.




이런식으로 체인으로 연결하는데 특별히 칩 갯수 제한은 없다.
프로세서는 24-bit 값을 연속으로 보내게 되는데, 각 24-bit 값은 3개의 8-bit RGB 값을 나타낸다.
프로세서가 매번 24-bit 값을 보낼때마다 이 값은 체인의 첫번째 LED에 로드된다.
동시에 첫번째 LED는 자신이 가지고 있던 24-bit값을 두번째 LED로 전달한다.
두번째 LED는 세번째 LED로, 세번째 LED는 4번째 LED로 전달해 결국 값은 체인의 맨 마지막까지 전달되게 된다.
이 모든 작업이 매우 빠르게 진행되기 때문에 사람 눈에는 순식간에 일어난 것으로 보이게 된다.
결과적으로 프로세서의 IO 핀 1개(PWM이 아닌 일반 GPIO핀)만으로 수백개의 칼라 LED를 제어할 수 있게 된다.


WS2812 기반의 LED를 사용하려면 가장 쉬운 방법은 믿을만한 라이브러리를 사용하고 그 중 다른 사람에 의해 테스트 된 함수를 사용하는 것이다.
Adafruit NeoPixel 라이브러리를 권장한다.

중요한점은 이 라이브러리는 아두이노 우노와 메가에서 사용될 수 있도록 하드코딩 되었다는 것이다.
여기서 ‘하드코딩’의 믜미는 이 라이브러리 함수는 타이밍을 정확하게 맞추기 위해 어셈블리 코드를 사용하고 있다는 것이다.
그 결과 매우 사용하기 쉬운 라이브러리가 만들어졌지만, 아두이노 패밀리의 다른 보드에 바로 사용할 수 없을수도 있다.
또한 이 라이브러리 함수는 한가지 목적을 가지고 만들어졌기 때문에 NeoPixel 스트링에 새 값을 보내기 위한 함수를 호출하면 가장 먼저 모든 인터럽트를 비활성화 시킨다.
인터럽트를 사용하지 않는 경우는 문제가 없지만, 코드에서 인터럽트를 많이 활용한다면 큰 문제가 될 수도 있다.

Example programs using the Adafruit Library

Ex1) Lighting the pixels one after the other


#include <Adafruit_NeoPixel.h>

#define pinPix 12 // WS2812에 연결하는데 사용하는 pin 번호
#define numPix 8 // 링에 연결되어 있는 WS2812 LED 갯수

// Parameter 1 = 링에 연결되어 있는 WS2812 LED 갯수
// Parameter 2 = WS2812에 연결하는데 사용하는 pin 번호
// Parameter 3 = pixel type flags, add together as needed:
// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
// NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
// NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products)
// NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)

Adafruit_NeoPixel myLeds = Adafruit_NeoPixel(numPix, pinPix, NEO_GRB + NEO_KHZ800);

void setup() {
  myLeds.begin(); // Initialize the NeoPixel array in the Arduino's memory,
  myLeds.show(); // turn all pixels off, and upload to ring or string
}

void loop() {
  int pause = 100;

  for (int i=0; i<numPix; i++) { 

배송 정보

  • 배송 방법 : 택배
  • 배송 지역 : 전국지역
  • 배송 비용 : 3,000원
  • 배송 기간 : 1일 ~ 2일
  • 배송 안내 :

상품 사용 후기

상품의 사용후기를 적어주세요.

게시물이 없습니다

모두 보기 사용 후기 쓰기

상품 Q&A

상품에 대해 궁금한 점을 해결해 드립니다.

게시물이 없습니다

모두 보기 상품 Q & A 쓰기