Bon, je me suis fais un petit truc avec des bout de code trouvé sur le net et commandable avec les gza, comme notre code, mais là avec une barrette neopixel
Code : Tout sélectionner
#include <Adafruit_NeoPixel.h>
#define RADIO_PIN 2
#define PIXEL_PIN 4
#define PIXEL_COUNT 8
Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);
bool oldState = HIGH;
int showType = 0;
int newState = 0;
int pos = 0, dir = 1;
void setup() {
pinMode(RADIO_PIN, INPUT);
strip.begin();
strip.show();
}
void loop() {
newState = pulseIn(RADIO_PIN, HIGH,25000);
if (newState < 900) {
delay(20);
showType=5;
startShow(showType);
}
if ((newState >1000) && (newState <1250)) {
delay(20);
showType=6;
startShow(showType);
}
if ((newState >1250) && (newState <1500)) {
delay(20);
showType=4;
startShow(showType);
}
if ((newState >1500) && (newState <1750)) {
delay(20);
showType=11;
startShow(showType);
}
if ((newState >1750)) {
delay(20);
showType=10;
startShow(showType);
}
}
void startShow(int i) {
switch(i){
case 4: theaterChase(strip.Color(0, 0, 127), 50); // blue
break;
case 5: theaterChase(strip.Color(127, 0, 0), 50); // Red
break;
case 6: colorbyte(50);
break;
case 8: rainbowCycle(20);
break;
case 10: k2000(10);
break;
case 11: cligno(20);
break;
}
}
void colorbyte(uint32_t c) {
strip.setPixelColor(0, 255, 0, 0);
strip.show();
delay(125);
strip.setPixelColor(1, 255, 128, 0);
strip.show();
delay(125);
strip.setPixelColor(2, 255, 255, 0);
strip.show();
delay(125);
strip.setPixelColor(3, 128, 255, 0);
strip.show();
delay(125);
strip.setPixelColor(4, 0, 255, 0);
strip.show();
delay(125);
strip.setPixelColor(5, 0, 255, 128);
strip.show();
delay(125);
strip.setPixelColor(6, 0, 255, 255);
strip.show();
delay(125);
strip.setPixelColor(7, 0, 0, 255);
strip.show();
delay(125);
for( int i = 0; i<PIXEL_COUNT; i++){
strip.setPixelColor(i, 0, 0, 0);
strip.show();
delay(125);
}
}
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<0; j++) {
for(i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, Wheel((i+j) & 255));
}
strip.show();
delay(wait);
}
}
void rainbowCycle(uint8_t wait) {
uint16_t i, j;
for(i=0; i< strip.numPixels(); i++) {
strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
}
strip.show();
delay(wait);
}
void theaterChase(uint32_t c, uint8_t wait) {
for (int j=0; j<10; j++) { //do 10 cycles of chasing
for (int q=0; q < 3; q++) {
for (int i=0; i < strip.numPixels(); i=i+3) {
strip.setPixelColor(i+q, c); //turn every third pixel on
}
strip.show();
delay(wait);
for (int i=0; i < strip.numPixels(); i=i+3) {
strip.setPixelColor(i+q, 0); //turn every third pixel off
}
}
}
}
// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
WheelPos = 255 - WheelPos;
if(WheelPos < 85) {
return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
} else if(WheelPos < 170) {
WheelPos -= 85;
return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
} else {
WheelPos -= 170;
return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}
}
void k2000(uint8_t wait) {
int j;
// Draw 5 pixels centered on pos. setPixelColor() will clip any
// pixels off the ends of the strip, we don't need to watch for that.
strip.setPixelColor(pos - 2, 0x100000); // Dark red
strip.setPixelColor(pos - 1, 0x800000); // Medium red
strip.setPixelColor(pos , 0xFF3000); // Center pixel is brightest
strip.setPixelColor(pos + 1, 0x800000); // Medium red
strip.setPixelColor(pos + 2, 0x100000); // Dark red
strip.show();
delay(10);
// Rather than being sneaky and erasing just the tail pixel,
// it's easier to erase it all and draw a new one next time.
for(j=-2; j<= 2; j++) strip.setPixelColor(pos+j, 0);
// Bounce off ends of strip
pos += dir;
if(pos < 0) {
pos = 1;
dir = -dir;
} else if(pos >= strip.numPixels()) {
pos = strip.numPixels() - 2;
dir = -dir;
}
}
void cligno(uint32_t c) {
for(uint16_t i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(2,0,0,255);
strip.setPixelColor(3,0,0,255);
strip.setPixelColor(4,0,0,255);
strip.setPixelColor(5,0,0,255);
strip.show();
delay(20);
}
strip.setPixelColor(0,255,255,0);
strip.setPixelColor(1,255,255,0);
strip.setPixelColor(6,255,255,0);
strip.setPixelColor(7,255,255,0);
strip.show();
delay(250);
strip.setPixelColor(0,0,0,0);
strip.setPixelColor(1,0,0,0);
strip.setPixelColor(6,0,0,0);
strip.setPixelColor(7,0,0,0);
strip.show();
delay(250);
}
C'est un code que j'aimerai faire évoluer en sbus pour pouvoir avoir les autres axes.