코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2014-10-28 16:23:41
리뷰에서 소개한바 있던 iPlatz : 아이플라츠 A1620 제품이 있습니다. 초소형 하드웨어인 아이플라츠는 아두이노와 동일한 성능이면서 작고 가볍다는 장점이 있는데다가, 외형도 깔끔해 다양한 프로젝트에 이용하기 좋습니다.
이런 장점을 이용하여 iPlatz 네오픽셀링 안경을 만들어 보겠습니다.
아두이노 미니를 이용해 만들었을 때보다 연결과 업로드가 쉽고, 외형도 깔끔해 프로젝트 완성도가 높아졌습니다.
이번 프로젝트는 하드보드지를 이용해서 안경틀을 만들었기 때문에 내구성이 좀 약했는데, 안쓰는 안경이나 3D프린터를 이용하여 틀을 만들어서 연결하면 좋은 작품이 될 것이라고 생각합니다.
NO | 부품명 | 수량 | 상세설명 |
1 | iPlatz A1620 | 1 | 아두이노 |
2 | NeoPixel링 | 2 | 네오픽셀 |
3 | 점퍼케이블 | 8 | 점퍼케이블 |
4 | 리튬 배터리 | 1 | 3.7V |
5 | 철사 + 하드보드지 | 틀 재료 |
부품명 | iPlatz | 네오픽셀링 | 점퍼케이블 | 리튬 배터리 | 철사 + 하드보드지 |
파트 |
#include <Adafruit_NeoPixel.h>
#define PIN 2
#define PIN1 3
// 네오픽셀링 1개는 2번핀에, 다른 1개는 3번핀에 연결하였습니다.
#define redColor strip.Color(255, 0, 0)
#define blueColor strip.Color(0, 0, 255)
#define greenColor strip.Color(0, 255, 0)
#define nullColor strip.Color(0, 0, 0)
#define whiteColor strip.Color(255, 255, 255)
// 네오픽셀에 대한 색상 정의
Adafruit_NeoPixel strip = Adafruit_NeoPixel(16, PIN, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(16, PIN1, NEO_GRB + NEO_KHZ800);
// 2, 3번핀에 연결된 네오픽셀링 선언
void setup() {
strip.begin();
strip1.begin();
strip.show();
strip1.show();
}
void loop() {
// 네오픽셀링에 색깔을 출력
colorWipe(redColor, 50); // Red
colorWipe(greenColor, 50); // green
colorWipe(blueColor, 50); // Blue
// 네오픽셀링을 전부 끈다.
colorWipe(nullColor, 50);
// 네오픽셀 하나씩 차례대로 빛을 깜빡인다.
blinkWipe();
blinkWipe();
// 네오픽셀링에 무지개색을 출력
rainbow(10);
rainbowCycle(10);
}
// 네오픽셀링에 색깔을 채워주는 함수(네오픽셀 1번은 정방향으로, 2번은 역방향 순서로 채워줍니다.)
void colorWipe(uint32_t c, uint8_t wait) {
for(uint16_t i=0; i<strip.numPixels(); i++) {
int j = 15 - i;
strip.setPixelColor(i, c);
strip1.setPixelColor(j, c); // 네오픽셀 링 픽셀 하나씩 색깔을 세팅해 줍니다.
strip.show();
strip1.show(); // 세팅해 준 색깔을 출력합니다.
delay(wait);
}
}
void blinkWipe(){ // 네오픽셀 링 픽셀 하나씩 빛을 깜빡입니다.
for(uint16_t i = 0; i<strip.numPixels(); i++){
int j = 15-i;
strip.setPixelColor(i, whiteColor);
strip.show();
delay(50);
strip.setPixelColor(i, nullColor);
strip.show();
// 네오픽셀 링 1번에 픽셀 1개에 흰색 불을 켜주고, 0.05초 후에 불을 꺼줍니다.
strip1.setPixelColor(j, whiteColor);
strip1.show();
delay(50);
strip1.setPixelColor(j, nullColor);
strip1.show();
// 네오픽셀 링 2번에 픽셀 1개에 흰색 불을 켜주고, 0.05초 후에 불을 꺼줍니다.
}
}
// 네오픽셀 링을 무지개색 순서대로 빛을 출력하는 함수
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));
strip1.setPixelColor(i, Wheel((i+j) & 255));
}
strip.show();
strip1.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));
strip1.setPixelColor(i, Wheel(((i * 256 / strip1.numPixels()) + j) & 255));
}
strip.show();
strip1.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);
}
}
#define redColor strip.Color(255, 0, 0) #define blueColor strip.Color(0, 0, 255) #define greenColor strip.Color(0, 255, 0) #define nullColor strip.Color(0, 0, 0) #define whiteColor strip.Color(255, 255, 255)
// 네오픽셀에 대한 색상 정의
void blinkWipe(){ // 네오픽셀 링 픽셀 하나씩 빛을 깜빡입니다. for(uint16_t i = 0; i<strip.numPixels(); i++){ int j = 15-i; strip.setPixelColor(i, whiteColor); strip.show(); delay(50); strip.setPixelColor(i, nullColor); strip.show(); // 네오픽셀 링 1번에 픽셀 1개에 흰색 불을 켜주고, 0.05초 후에 불을 꺼줍니다.
strip1.setPixelColor(j, whiteColor); strip1.show(); delay(50); strip1.setPixelColor(j, nullColor); strip1.show();
// 네오픽셀 링 2번에 픽셀 1개에 흰색 불을 켜주고, 0.05초 후에 불을 꺼줍니다. } }
판다마니아