#include <MsTimer2.h>
#include "SPI.h"
#include "WS2801.h"
int dataPin = 2;
int clockPin = 3;
int ddrPin = 7; //압력센서핀
int stepPress = 80 ;
long buttonPushCounter = 0;
boolean buttonState = 0;
boolean lastButtonState = 0;
long pixelOnNumber = 0 ;
WS2801 strip = WS2801(80, dataPin, clockPin);
void setup() {
pinMode(ddrPin, INPUT);
Serial.begin(9600);
strip.begin();
strip.show();
MsTimer2::set(50, ddrPressed);
MsTimer2::start();
}
void loop() {
if (buttonPushCounter <= stepPress) {
pixelOnNumber = buttonPushCounter / (stepPress / strip.numPixels()) ;
for (int i = 0 ; i < pixelOnNumber ; i++) {
strip.setPixelColor(i, Color(255, 255, 0));
strip.setPixelColor(i+40, Color(255, 255, 0));//센서를 밟았을 때마다 네오픽셀에 불이 들어오게 한다
}
for (int i = pixelOnNumber ; i < 40 ; i++) {
strip.setPixelColor(i, Color(0,0,0));
strip.setPixelColor(i+40, Color(0,0,0));
}
strip.show();
Serial.println(pixelOnNumber) ;
} else if(buttonPushCounter > stepPress ) {
int j;
for (j=0; j < 256; j++) {
for (int i = 0 ; i < strip.numPixels() ; i++) {
strip.setPixelColor(i, Wheel( (i + j) % 255));
strip.setPixelColor(i+40, Wheel( (i + j) % 255)); //레인보우로 바꾸려고 시도한 부분입니다. stepPress80을 채워야 레인보우가 됩니다.
}
strip.show();
}
// buttonPushCounter = 0 ;
// pixelOnNumber = 0 ;
}
}
void ddrPressed() {
buttonState = digitalRead(ddrPin);
if (buttonState != lastButtonState) {
if (buttonState == HIGH) {
buttonPushCounter++;
// Serial.print("number of ddr pressed: ");
// Serial.println(buttonPushCounter);
}
}
lastButtonState = buttonState;
}
uint32_t Color(byte r, byte g, byte b) {
uint32_t c;
c = r;
c <<= 8;
c |= g;
c <<= 8;
c |= b;
return c;
}
uint32_t Wheel(byte WheelPos) {
if (WheelPos < 85) {
return Color(WheelPos * 3, 255 - WheelPos * 3, 0);
} else if (WheelPos < 170) {
WheelPos -= 85;
return Color(255 - WheelPos * 3, 0, WheelPos * 3);
} else {
WheelPos -= 170;
return Color(0, WheelPos * 3, 255 - WheelPos * 3);
}
}
안녕하세요 아두이노로 인터렉티브 작품을 만들고 있는 학생입니다
압력센서를 이용해서 20개 짜리 RGB LED 체인(네오픽셀) 4개를 제어하려고 하는데
한줄로 쭉 이어서 연결한게 아니라 40개씩 두줄로 연결해서 제어하려고 합니다.
두줄로 연결해서 제어를 해서 두줄에 동시에 불이 들어와서 40번을 밟으면 전부 다 불이 켜지게 되는데요.
41번째 스텝을 밟았을 때 레인보우로 변하게 해야하는데 어떻게 해야할까요?......
|
이전글 |
스마트폰 센서 -> 아두이노 시리얼모니터 값...
|
2015-05-29 |