Não sei se alguém aqui já usou essa fita mas eu gostaria muito de um exemplo de como fazer os mesmos efeitos sem usar "For" e "delay()". Eu mesmo tentei por alguns dias substituir essas funções por "if" e "millis()" porém não tive sucesso.
Eu uso o exemplo "strandtest.ino" como referência.
Onde era:
Código: Selecionar todos
void colorWipe(uint32_t c, uint8_t wait) {
for(uint16_t i=0; i<RGB.numPixels(); i++) {
RGB.setPixelColor(i, c);
RGB.show();
delay(wait);
}
}
Eu tentei mudar para:
Código: Selecionar todos
void colorWipe ( uint32_t c, uint8_t wait )
{
static uint16_t i = 0;
if ( i == 0 ) {
RGB.setPixelColor(i, c);
RGB.show();
delayInverte_Led_RGB = millis();
i++;
}
if ( ((millis() - delayInverte_Led_RGB) >= wait) && i < RGB.numPixels() ) {
RGB.setPixelColor(i, c);
RGB.show();
delayInverte_Led_RGB = millis();
i++;
}
}
Se alguém puder me ajudar. Um exemplo novo na biblioteca seria muito bem vindo também! Creio que os exemplos atuais não visam a multitarefa mas sim consideram que o usuário usará apenas a fita LED no seu projeto e nada mais...
Gostaria muito de conseguir usar todos os efeitos do exemplo "strandtest.ino" no meu código sem que isso trave tudo. Meu código atual já tem mais de 2300 linhas de código e eu jamais uso "for" ou "delay()" pois sei que isso trava o processador em um único processo (como eu tenho relógio no display e a informação da leitura de alguns sensores, isso jamais pode acontecer). Faço tudo com millis() e micros(), porém dessa vez não estou conseguindo...
Ajuda!!!