| 
					  
#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 |