코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2014-09-16 13:23:18
NO | 부품명 | 수량 | 상세설명 |
1 | 아두이노 플로라(Flora) | 1 | 아두이노 |
2 | NeoPixel | 1 | |
3 | 압력 센서 | 1 | |
4 | 3축 가속도 센서 | 1 | |
4 | 3.7V 리튬 이온 폴리머 전지 | 1 | 리튬전지 |
5 | 점퍼케이블 | 10 | 점퍼케이블 |
6 | 10KΩ 저항 | 2 | 저항 |
부품명 | 아두이노 플로라 | NeoPixel | 압력 센서 | 3축 가속도 센서 |
부품 사진 | ||||
부품명 | 3.7v 리튬 전지 | 점퍼 케이블 | 220옴 저항 | |
부품 사진 |
#include <Adafruit_NeoPixel.h> #define PIN 12 Adafruit_NeoPixel strip = Adafruit_NeoPixel(30, PIN, NEO_GRB + NEO_KHZ800);
//3축 가속도 센서 핀번호 설정 const int xPin = 6; const int yPin = 3; const int zPin = 10; //3축 가속도 센서의 최소값과 최대값 설정 int minVal = 265; int maxVal = 402; //x,y,z변수 선언 double x; double y; double z; int i = 0; void setup() { strip.begin(); strip.show(); } void loop() { int sensorval = analogRead(9);//9번핀에서 압력센서가 측정한 값을 받아온다
//압력센서 측정값이 100이상일 경우
//무지개색을 차례대로 출력 if(sensorval > 100) { if(i == 0) colorWipe(strip.Color(255, 0, 0), 10); //빨강 else if(i == 1) colorWipe(strip.Color(255, 94, 0), 10); //주황 else if(i == 2) colorWipe(strip.Color(255, 255, 0), 10); //노랑 else if(i == 3) colorWipe(strip.Color(0, 255, 0), 10); //초록 else if(i == 4) colorWipe(strip.Color(0, 255, 255), 10); //하늘 else if(i == 5) colorWipe(strip.Color(0, 0, 255), 10); //파랑 else if(i == 6) colorWipe(strip.Color(255, 0, 255), 10); //보라 colorWipe(strip.Color(0, 0, 0), 10); //LED off i++; if(i > 6) i = 0; } //3축 가속도 센서에서 값을 읽어온다 int xRead = analogRead(xPin); int yRead = analogRead(yPin); int zRead = analogRead(zPin); //3축 가속도 센서 값 변환 int xAng = map(xRead, minVal, maxVal, -90, 90); int yAng = map(yRead, minVal, maxVal, -90, 90); int zAng = map(zRead, minVal, maxVal, -90, 90); x = RAD_TO_DEG * (atan2(-yAng, -zAng) + PI); y = RAD_TO_DEG * (atan2(-xAng, -zAng) + PI); z = RAD_TO_DEG * (atan2(-yAng, -xAng) + PI);
//y축 기울기 각도가 318도 미만일 경우 NeoPixel에서 무지개색 출력 if(y < 318) { rainbow(5); } colorWipe(strip.Color(0, 0, 0), 10);
delay(20); //지연시간 20ms 설정 } 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); } } 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)); } strip.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); } }
수박쨈