오늘은 소리감지 LED 키트인
Hear & Light 키트에 대해서 두번째로 알아보는 시간입니다.
우선 소리감지 LED 키트 1편을 보지 않으신 분들에겐
아래 링크를 통해 1편을 먼저 따라해주시길 바랍니다.
▼ ▼ ▼
https://intopionshop.tistory.com/506?category=1052256
Chapter 2. WS2912B LED
먼저 아래 그림에 보이는 칩은 WS2812 으로
GND, VDC, Data In, Data Out 4개의 핀만 있으면 사용이 가능합니다.
이 칩은 daisy-chain 으로 Data In 과 Data Out 을 통해
여러 개의 칩을 연결할 수 있습니다.
WS2812B LED 납땜하기
위 제품 사진을 보시면 연결하기 위한 핀이 없습니다.
그래서 함께 동봉되어있는 핀을 납땜 해주셔야 합니다!
3개 / 3개 끊어서 앞과 중간에 납땜해야 됩니다.
중간에는 핀을 뽑아서 납땜을 해주세요.
WS2812B LED 회로 연결
네오픽셀 모듈 | 아두이노 우노 |
GND | GND |
VDC | VCC |
DI | D6 |
챕터 1에서 진행한 내용에 이어서 연결해주세요.
WS2812B LED 라이브러리
코딩하기에 앞서 먼저 라이브러리에 추가해를 해야합니다.
'Ctrl + Shift + I' 를 누른 후 'Adafruit_NeoPixel' 을 검색해 설치하면 됩니다.
아래 강의를 통해 확인 방법을 따라하고 함께 해주세요.
▼ ▼ ▼
https://intopionshop.tistory.com/240?category=1021753
RGB 코드
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 #include <Adafruit_NeoPixel.h>#define PIN 6 // DI 핀번호#define N_LEDS 16 // 네오픽셀 LED 갯수Adafruit_NeoPixel strip = Adafruit_NeoPixel(N_LEDS, PIN, NEO_GRB + NEO_KHZ800);//NEO_GRB <= 네오픽셀 타입 , NEO_KHZ800 <= 클럭 주파수void setup() {strip.setBrightness(100); // 네오픽셀 밝기strip.begin(); // 네오픽셀 시작}void loop() {int R = 0;int G = 0;int B = 0;R = 255;G = 0;for (int B = 0; B < 256 ; B+=50) {chase(strip.Color(R, G, 0));R -= 50;G += 50;}G = 255;B = 0;for (int R = 0; R < 256 ; R+=50) {chase(strip.Color(0, G, B));G -= 50;B += 50;}B = 255;R = 0;for (int G = 0; G < 256 ; G+=50) {chase(strip.Color(R, 0, B));B -= 50;R += 50;}}static void chase(uint32_t c) {for (uint16_t i = 0; i < strip.numPixels() + 4; i++) {strip.setPixelColor(i , c); // i 번째 픽셀에 LED 색상 지정strip.setPixelColor(i-3, 0); // i-3 픽셀에 색상 0을 지정하여 지움strip.show();delay(80);}
chase() 함수
1234567 static void chase(uint32_t c) {for (uint16_t i = 0; i < strip.numPixels() + 4; i++) {strip.setPixelColor(i , c); // i 번째 픽셀에 LED 색상 지정strip.setPixelColor(i-3, 0); // i-3 픽셀에 색상 0을 지정하여 지움strip.show();delay(80);}
ex) strip.setPixelColor(i-3, 0); 일 경우
LED 개수 설정
(0 - 3) , (1 - 3), (2 - 3) 은 모두 0보다 작기 때문에 i 위치 LED는 모두 켜집니다.
이후 i = 3 이 되면 3번 위치 LED는 켜지고
(3 - 3 = 0) 이 되어 0번 자리는 꺼지게 됩니다.
4개를 출력하고자 하면 ' i - 4 '를 해주시면 됩니다.
LED의 속도는 delay();를 통해 조절해 주세요.
RGB 영상
랜덤 위치 소스코드
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 #include <Adafruit_NeoPixel.h>#define PIN 6 // DI 핀번호#define N_LEDS 16 // 네오픽셀 LED 갯수Adafruit_NeoPixel strip = Adafruit_NeoPixel(N_LEDS, PIN, NEO_GRB + NEO_KHZ800);//NEO_GRB <= 네오픽셀 타입 , NEO_KHZ800 <= 클럭 주파수void setup() {strip.setBrightness(100); // 네오픽셀 밝기strip.begin(); // 네오픽셀 시작}void loop() {int R = 0;int G = 0;int B = 0;R = 255;G = 0;for (int B = 0; B < 256 ; B+=50) {chase(strip.Color(R, G, 0));R -= 50;G += 50;}G = 255;B = 0;for (int R = 0; R < 256 ; R+=50) {chase(strip.Color(0, G, B));G -= 50;B += 50;}B = 255;R = 0;for (int G = 0; G < 256 ; G+=50) {chase(strip.Color(R, 0, B));B -= 50;R += 50;}}static void chase(uint32_t c) {uint16_t i=random(0,16);uint16_t j=random(0,16);strip.setPixelColor(i , c); //i 번째 픽셀에 LED 색상 지정strip.setPixelColor(j , 0); //j 번째 픽셀에 LED 색상 지정strip.show();delay(50);}
chase() 함수
static void chase(uint32_t c) {uint16_t i=random(0,16);uint16_t j=random(0,16);strip.setPixelColor(i , c); //i 번째 픽셀에 LED 색상 지정strip.setPixelColor(j , 0); //j 번째 픽셀에 LED 색상 지정strip.show();delay(50);}
변수 ' i ' 와 ' j '에 랜덤 위치를 각각 지정해 ' i '는 불을 켜고 ' j '는 불을 끄는 함수에요.
랜덤 위치 영상
다음 시간엔 챕터 3 로 소리 크기에 따라 달라지는 LED에 대한
강의를 이어나가도록 하겠습니다!
감사합니다.
전자부품 전문 쇼핑몰 인투피온입니다.
필요한 자재에 관한 문의는 홈페이지를 통한 견적 신청, 혹은 전화나 메일로 주시면 빠른 회신을 드릴 수 있도록 하겠습니다.
▶ 홈페이지: http://intopion.com/
▶ 전화: 02-2615-7278
▶ FAX : 02-6124-4242
▶ 메일: intopion@hanmail.net
'인투피온 강좌 > 아두이노 팁(Tip)' 카테고리의 다른 글
아두이노 매뉴얼 [화분 물공급 키트] - 1 (0) | 2022.07.29 |
---|---|
아두이노 매뉴얼 [소리감지 LED 키트] - 3 (0) | 2022.07.28 |
아두이노 매뉴얼 [소리감지 LED 키트] - 1 (0) | 2022.07.25 |
아두이노 MAX6675 열전대 온도센서 모듈 (0) | 2022.01.24 |
아두이노 조도센서 모듈 사용하기 (0) | 2022.01.24 |