1. 프로젝트 사용한 보드 종류
아두이노 UNO
2. 사용한 개발 프로그램명
아두이노 IDE
3. 사용한 센서 모델명
네오픽셀 스트립 RGBW , 네오픽셀 링 RGBW LED8개짜리
4. 연결한 회로 설명 (또는 이미지)
5. 소스코드 (주석 필수)
// 네오픽셀 ring과 Stripe 타입 동시 제어
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
// 이 아래 적는 것은 링입니다. strip
#define PIN 6 // 네오픽셀 연결 디지털 핀 번호 적기
#define NUM_LEDS 8 // 네오픽셀 소자 수
// 이 아래 적는 것은 스트립입니다. pixels
#define PIN 3 // 네오픽셀 연결 디지털 핀 번호 적기
#define NUMPIXELS 8 // 네오픽셀 소자 수
//네오픽셀의 밝기 조절
#define BRIGHTNESS 100 // 네오픽셀 밝기 설정 0(어두움) ~ 255(밝음)
//네오픽셀 라이브러리 불러오기 링과 스트립을 같이 제어할꺼라 strip과 pixels로 구분을 지었습니다.
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, 6, NEO_GRBW + NEO_KHZ800);
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, 3, NEO_GRBW + NEO_KHZ800);
int delayval = 8000; // delay 시간
void setup() {
strip.setBrightness(BRIGHTNESS);
strip.begin(); // 네오픽셀 제어 시작
}
void loop() {
//링에대한 제어 strip
// 0번 핀부터 8번핀까지 delay1000으로 화이트 불이 켜지게
for(int i=0;i<NUM_LEDS;i++){
// strip.Color takes RGBW values, from 0,0,0 up to 255,255,255
strip.setPixelColor(i, pixels.Color(0,0,0,150)); // white color.불이 점등
strip.show();
delay(1000);
}
//0번핀의 LED를 블루 나머지를 화이트로 켜기
delay(3000);
strip.setPixelColor(0,0,0,255,0);
strip.setPixelColor(1,0,0,0,150);
strip.setPixelColor(2,0,0,0,150);
strip.setPixelColor(3,0,0,0,150);
strip.setPixelColor(4,0,0,0,150);
strip.setPixelColor(5,0,0,0,150);
strip.setPixelColor(6,0,0,0,150);
strip.setPixelColor(7,0,0,0,150);
strip.show();// 네오픽셀 점등
//2번핀의 LED를 블루 나머지를 화이트로 켜기
delay(8000);
strip.setPixelColor(0,0,0,0,150); //3번핀에 블루를 키겠다.
strip.setPixelColor(1,0,0,0,150); //3번핀에 블루를 키겠다.
strip.setPixelColor(2,0,0,255,0); //3번핀에 블루를 키겠다.
strip.setPixelColor(3,0,0,0,150); //3번핀에 블루를 키겠다.
strip.setPixelColor(4,0,0,0,150); //3번핀에 블루를 키겠다.
strip.setPixelColor(5,0,0,0,150); //3번핀에 블루를 키겠다.
strip.setPixelColor(6,0,0,0,150); //3번핀에 블루를 키겠다.
strip.setPixelColor(7,0,0,0,150); //3번핀에 블루를 키겠다.
strip.show();
delay(8000);
//스트립에 대한 제어 pixels
// 10초후 네오픽셀 LED가 'delayval=8000'마다 하나씩 켜진다.
delay(10000);
for(int i=0;i<NUMPIXELS;i++){
// pixels.Color takes RGBW values, from 0,0,0 up to 255,255,255
pixels.setPixelColor(i, pixels.Color(0,0,0,150)); // 햐얀색 불을 켜겠다.
pixels.show(); // 네오픽셀 점등
if(i==5) {break;}
else {delay(delayval);} // dealy(delayval)을 주는건 5번핀 까지만
}
// LED가 아래의 컬로로 깜빡이면서 반짝인다.
delay(3000);
theaterChase(pixels.Color(0, 0, 0, 127), 90); //깜빡이면서 흰색 출력 90은 딜레이로 이게 어느정도 시간동안 깜빡이는지에대한제어
colorWhipe(pixels.Color(0,0,0,127),0); //깜빡임 후 불이 다 붉은색으로 변함
delay(3000);
colorWhipe(pixels.Color(0,0,0,0),0); //깜빡임 후 불이 동시에 꺼진다.
delay(10000);
}
// 아래부터는 스트립에 쓰인 함수 설명
void theaterChase(uint32_t c, uint8_t wait) {
for (int j=0; j<10; j++) { //do 10 cycles of chasing
for (int q=0; q < 3; q++) {
for (int i=0; i < strip.numPixels(); i=i+3) {
pixels.setPixelColor(i+q, c); //turn every third pixel on
}
pixels.show();
delay(wait);
for (int i=0; i < strip.numPixels(); i=i+3) {
strip.setPixelColor(i+q, 0); //turn every third pixel off
}
}
}
}
void colorWhipe(uint32_t c, uint8_t wait){
for(uint16_t i=0; i<strip.numPixels(); i++) {
pixels.setPixelColor(i, c);
pixels.show();
}
}
6. 문제점 및 에러 내용
소스코드는 에러가 뜨지 않는데ㅠㅠ 정작 작동을 하질 않습니다.
네오 픽셀을 같은 종류의 네오 픽셀은 여러개를 쓸경우 납뗌으로 서로를 연결해서 제어LED수를 늘려
제어하는 것 같았는데요. 저 같은 경우에는 아예 타입이 달라....타입이 다른 경우의 예제를 찾지 못해 코딩을
이식으로 했었습니다.
[링만 불이 들어와요 ㅠㅠ 스트립은 들어오지 않습니다. ㅠㅠ]
|