Je fais la moyenne des échantillons d'un MEMS (comme l'a été expliqué l'an dernier @J-M-L) afin de déclencher une fonction d'animation de leds lorsqu'un seuil donné est atteint (un chenillard lumineux)
Le problème est que le pattern lumineux s'arrête aussitôt dès que le MEMS repasse sous le seuil et le chenillard se retrouve "coincé" le long de la bande de leds.
Ma question est la suivante : Comment lui permettre de poursuivre sa course jusqu'au bout ?
Voici le code pour le chenillard et la technique la moyenne des échantillons est ici : Signal moyen d'un MEMS
J'évite de mettre mon sketch en entier pour la lisibilité mais c'est possible.
void slideup(){
EVERY_N_MILLIS_I(thisTimer,20) {
//variable pour "deplacer" le long du strip
ledLoc = (ledLoc+1) % (NUM_LEDS-1);
leds[ledLoc] = CRGB::White;
}
fadeToBlackBy(leds, NUM_LEDS, 8);
FastLED.show();
}
il faut sortir le code de l'animation du code qui teste le seuil.
le principe (à affiner suivant vos besoins)
// variable globale
bool animationEnCours = false;
...
// dans la loop
if (! animationEnCours) {
// si l'animation n'est pas en cours, regarder s'il faut la déclencher
if (moyenne > 1960) {
animationEnCours = true;
}
} else {
// jouer une étape l'animation
...
// penser à mettre animationEnCours à false quand l'animation est finie.
}