eccomi qua, ho fatto i compiti:
2 strisce
effetto FastLed
millis()
tutti gli esempi in singoli void per non fare confusione. Questo il risultato:
tutte_le_strisce_in_sequenza(); si accendono i led stricia0 e poi striscia1 come ciclo for..OK
singola_striscia(); come sopra solo con una striscia, tutto OK
ora iniziamo con i millis()
io vorrei che a 3000 parta stricia0 (con effetto come singola_striscia, cioè che cambi colore in continuo) e a 8000 parta striscia1 senza che striscia0 si fermi
Invece sia che faccia un void con i due mills insieme o chiamo due separati void succede :
3000 parte striscia0 dopo i primi 20 led si ferma e si aggiorna solo ogni 3000
8000 parte striscia1 dopo i primi 20 led si ferma e si aggiorna solo ogni 8000
#include <FastLED.h>
#define LED_TYPE WS2812B
#define COLOR_ORDER GRB
#define BRIGHTNESS 84
#define NUM_LEDS 20
#define NUM_STRIPS 2
CRGB leds[NUM_STRIPS][NUM_LEDS];
#define UPDATES_PER_SECOND 100
//parte millis
unsigned long previousMillis0= 0;
unsigned long previousMillis1= 0;
const long tempostriscia0 = 3000;
const long tempostriscia1 = 8000;
CRGBPalette16 currentPalette;
TBlendType currentBlending;
extern CRGBPalette16 myRedWhiteBluePalette;
extern const TProgmemPalette16 myRedWhiteBluePalette_p PROGMEM;
uint8_t colorIndex = 0;
void setup() {
Serial.begin(19200);
delay( 1000 ); // power-up safety delay
//7 strisce nei pin da 4 a 10
FastLED.addLeds<LED_TYPE, 4, COLOR_ORDER>(leds[0], NUM_LEDS).setCorrection( TypicalLEDStrip );
FastLED.addLeds<LED_TYPE, 5, COLOR_ORDER>(leds[1], NUM_LEDS).setCorrection( TypicalLEDStrip );
FastLED.setBrightness( BRIGHTNESS );
currentPalette = RainbowColors_p;
currentBlending = LINEARBLEND;
}
void loop()
{
//tutte_le_strisce_in_sequenza();
//singola_striscia();
//singole_strisce_a_tempi_diversi();
singola_striscia0();
singola_striscia1();
}
void tutte_le_strisce_in_sequenza(){
for( int x = 0; x < NUM_STRIPS; x++) {
for( int i = 0; i < NUM_LEDS; i++) {
leds[x][i] = ColorFromPalette(currentPalette, colorIndex, BRIGHTNESS, currentBlending);
colorIndex += 1;//quanti colori salta da un loop all'altro, con 1 i colori sono contigui rosso-arancione-giallo-verde et.
FastLED.show();
FastLED.delay(1000 / UPDATES_PER_SECOND);
}
}
}
void singole_strisce_a_tempi_diversi(){
Serial.println(millis());
if (millis() - previousMillis0 > tempostriscia0) {
previousMillis0 = millis();
for( int i = 0; i < NUM_LEDS; i++) {
leds[0][i] = ColorFromPalette(currentPalette, colorIndex, BRIGHTNESS, currentBlending); //striscia0
colorIndex += 1;//quanti colori salta da un loop all'altro, con 1 i colori sono contigui rosso-arancione-giallo-verde et.
FastLED.show();
FastLED.delay(1000 / UPDATES_PER_SECOND);
}
}
if (millis() - previousMillis1 > tempostriscia1) {
previousMillis1 = millis();
for( int i = 0; i < NUM_LEDS; i++) {
leds[1][i] = ColorFromPalette(currentPalette, colorIndex, BRIGHTNESS, currentBlending); //striscia0
colorIndex += 1;//quanti colori salta da un loop all'altro, con 1 i colori sono contigui rosso-arancione-giallo-verde et.
FastLED.show();
FastLED.delay(1000 / UPDATES_PER_SECOND);
}
}
}
void singola_striscia(){
for( int i = 0; i < NUM_LEDS; i++) {
leds[0][i] = ColorFromPalette(currentPalette, colorIndex, BRIGHTNESS, currentBlending); //striscia0
colorIndex += 1;//quanti colori salta da un loop all'altro, con 1 i colori sono contigui rosso-arancione-giallo-verde et.
FastLED.show();
FastLED.delay(1000 / UPDATES_PER_SECOND);
}
}
void singola_striscia0(){
Serial.println(millis());
if (millis() - previousMillis0 > tempostriscia0) {
previousMillis0 = millis();
for( int i = 0; i < NUM_LEDS; i++) {
leds[0][i] = ColorFromPalette(currentPalette, colorIndex, BRIGHTNESS, currentBlending); //striscia0
colorIndex += 1;//quanti colori salta da un loop all'altro, con 1 i colori sono contigui rosso-arancione-giallo-verde et.
FastLED.show();
FastLED.delay(1000/ UPDATES_PER_SECOND);
}
}
}
void singola_striscia1(){
Serial.println(millis());
if (millis() - previousMillis1 > tempostriscia1) {
previousMillis1 = millis();
for( int i = 0; i < NUM_LEDS; i++) {
leds[1][i] = ColorFromPalette(currentPalette, colorIndex, BRIGHTNESS, currentBlending); //striscia0
colorIndex += 1;//quanti colori salta da un loop all'altro, con 1 i colori sono contigui rosso-arancione-giallo-verde et.
FastLED.show();
FastLED.delay(1000 / UPDATES_PER_SECOND);
}
}
}
Qualcuna ha soluzioni? sempre se è fattibile.
Grazie
P.S. Appassionato di fotografia anch'io.