코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2014-08-29 11:19:00
NO | 부품명 | 수량 | 상세설명 |
1 | Flora 보드 | 1 | |
2 | 네오픽셀 RGB LED | 2 | V2를 사용했습니다. |
3 | 전도성 실 | 1 | |
4 | 일반 실, 바늘 세트 | 1 | |
5 | 납 | 1 | |
6 | 인두기 | 1 | |
7 | 리튬이온 전지 | 1 | 3.7V Lipo 1000mA |
8 | 푸시버튼 | 1 | |
9 | 와이어 | 3 | |
10 | 10kΩ 저항 | 1 |
부품명 | Flora 보드 | 네오픽셀 RGB LED | 전도성 실 | 실, 바늘 세트 | 납 |
부품사진 | X1 | x2 | x1 | x1 | x1 |
부품명 | 인두기 | 리튬이온 전지 | 푸시버튼 | 와이어 | 10KΩ 저항 |
부품사진 | X1 | X1 | X1 | X1 | X1 |
푸시 버튼 한 극 | Flora GND |
위와 동일 | 저항 |
푸시 버튼 다른 한 극 | 3.3V |
저항 한 극 | 9번 핀 |
/*
가방 속 빛추기
이 코드는
adafruit의 strandtest와 여러 커뮤니티 소스를 응용하여
kocoaFab에서 만들었습니다.
무료로 누구나 사용할 수 있습니다.
*/
#include <Adafruit_NeoPixel.h> //네오픽셀을 사용하기 위한 라이브러리
#define PIN 6 //네오픽셀과 연결된 디지털 6번 핀 선언
//네오픽셀 객체 선언
Adafruit_NeoPixel strip = Adafruit_NeoPixel(2, PIN, NEO_GRB + NEO_KHZ800);
int button = 9; //버튼과 연결된 디지털 9번 핀 선언
int color = 0; //색 저장 변수 선언
int oneTimeFlag; //버튼 누름을 확인하기 위한 변수 선언
void setup() {
pinMode(PIN, OUTPUT);
digitalWrite(button,HIGH); //버튼 핀을 HIGH로 출력
pinMode(button, INPUT);
strip.begin(); //네오픽셀 사용하기 위한 초기설정
strip.show(); //네오픽셀이 off되도록 초기화
}
void loop() {
if ( digitalRead(button) == LOW) { //버튼이 눌리지 않은 상태에서
if( oneTimeFlag==0) { //전에 버튼이 눌렸으면
oneTimeFlag = 1; //버튼 누른 후로 상태 구분하기 위해 1 저장
if(color ==0) { //전에 버튼이 눌린 후 컬러가 검정이였으면
color = 255; //흰색으로
}else { //버튼 눌린 후 컬러가 흰색이면
color =0; //검정으로
}
}
}
else { //버튼이 눌렸으면
oneTimeFlag = 0; //버튼 눌렸음을 알기 위해서 0을 저장
}
colorWipe(strip.Color(color, color, color), 50); //저장된 color값으로 네오픽셀 색 표출
}
/*
네오픽셀 색을 바꾸는 함수
*/
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);
}
}
#include <Adafruit_NeoPixel.h> //네오픽셀을 사용하기 위한 라이브러리 #define PIN 6 //네오픽셀과 연결된 디지털 6번 핀 선언 //네오픽셀 객체 선언
Adafruit_NeoPixel strip = Adafruit_NeoPixel(2, PIN, NEO_GRB + NEO_KHZ800);
네오픽셀 RGB LED를 사용하기 위해서는 Adafruit_NeoPixel 라이브러리를 사용해야 합니다.
라이브러리는 이곳 에서 받으세요.
객체를 선언하기 위해서는 갯수, 연결된 핀, 버전정보 및 세부정보를 알아야 합니다.
Adafruit_NeoPixel(갯수, 연결된 핀, 버전정보 및 세부정보)
* 버전 정보 참고
버전정보 | 세부 사항 |
NEO_KHZ800 800 KHz | bitstream정보로 대부분 네오픽셀이 여기 속함(V2 포함) |
NEO_KHZ400 400 KHz | V1 |
NEO_GRB | GRB bitstream정보로 대부분 네오픽셀이 여기 속함(V2 포함) |
NEO_RGB | RGB bitstream정보로 V1 포함 |
void loop() { if ( digitalRead(button) == LOW) { //버튼이 눌리지 않은 상태에서
if( oneTimeFlag==0) { //전에 버튼이 눌렸으면 oneTimeFlag = 1; //버튼 누른 후로 상태 구분하기 위해 1 저장
if(color ==0) { //전에 버튼이 눌린 후 컬러가 검정이였으면 color = 255; //흰색으로 }else { //버튼 눌린 후 컬러가 흰색이면 color =0; //검정으로 } } } else { //버튼이 눌렸으면 oneTimeFlag = 0; //버튼 눌렸음을 알기 위해서 0을 저장 }
푸시 버튼이 눌린 상태만 불을 키려고 하는 게 아니라
버튼이 눌렸을 때마다 상태를 변하게 할 것입니다.
그래서 버튼이 눌렸을 때 마다 상태를 저장하기 위해
oneTimeFlag라는 변수를 사용할 것입니다.
oneTimeFlag가 0이면 버튼이 눌렸다는 뜻입니다.
버튼이 눌리지 않은 상태 즉 LOW일 경우
oneTimeFlag가 0이면 버튼이 방금 전에 눌렸음을 의미하게 됩니다.
그 때 색이 변경됩니다.
/*
네오픽셀 색을 바꾸는 함수
*/ 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); } }
kocoafab