Parlons Arduino > Bibliothèques

Bibliothèque Accessoire regression BaseAccessoryLigh gestion Blink()

(1/3) > >>

golgoth1009:
Bonjour,
Déjà merci beaucoup pour cette librairie Accessory qui facilite grandement la gestion de mon réseau.
J'ai découvert une régression sur la bibliothèque >1.0 concernant la gestion du blink() dans BaseAccessoryLight::ActionEnded().
Sur les cases Light_On et Light_Off, il faut rajouter des tests sur les cas LIGHTBLINK pour rentrer dans le if et il faut aussi empêcher de changer le current_state si le temps n'est pas écoulé (rajouter un else if).
J'ai fait ces modifs et cela refonctionne.
Il est aussi intéressant de rajouter SetBLink(..) dans AccessoryLight (comme cela est fait dans AccessoryMultiLight).
Utiliser SetDuration ne fonctionne pas pour AccessoryLight (petite erreur dans la doc)

Thierry:
Merci pour les infos, je regarde ça demain soir pour publier une version qui marche ! Il y aura pour cette occasion aussi des mises à jour de DCCpp et de Commanders.

golgoth1009:
Bonsoir Thierry,
je l'ai modifié comme ci-dessous et testé grâce à l'émulateur que tu as fait (encore merci!)

--- Code: ---case LIGHT_ON:
if (this->state == LIGHTOFF || this->IsBlinking())
{
if (this->IsFading() || (this->IsBlinking() && millis() - this->startingMillis > this->blinkingDelay - FADING_FULL_DELAY))
{
this->currentState = LIGHT_DESCENDING;
this->startingMillis = millis();
this->LightFadingRaw(this->pPort->GetSpeed());
return false;
}
else if (!this->IsBlinking())
{
this->currentState = LIGHT_OFF;
this->pPort->MoveStop();
}
}
break;
case LIGHT_OFF:
if (this->state == LIGHTON || this->IsBlinking())
{
if (this->IsFading() || (this->IsBlinking() && millis() - this->startingMillis > this->blinkingDelay - FADING_FULL_DELAY))
{
this->currentState = LIGHT_ASCENDING;
this->startingMillis = millis();
this->LightFadingRaw(0);
return false;
}
else if (!this->IsBlinking())
{
this->currentState = LIGHT_ON;
this->pPort->MoveLeftDir();
}
}
break;
--- Fin du code ---
Je pense que tu n'as pas besoin de mon aide pour fixer ça mais au cas où ;-)

Thierry:
Tu pourrais poster ici le .ino qui t'a servi à tester la modification ? Juste pour m'assurer si je ne reporte pas ta modif au caractère près que ça marche quand même...

golgoth1009:
J'ai juste dupliqué le simpleLed.ino et rajouté l'appel au blink. (en fait j'ai testé un midi au taf et je n'ai pas le test à la maison)
Ensuite dans le loop(), sans la modif, le changement d'état ne se fait pas.
Avec la modif, dans l'interface, on voit le changement d'état HIGH/LOW qui s'effectue périodiquement.

Navigation

[0] Index des messages

[#] Page suivante

Utiliser la version classique