Merci encore pour la correction. Je l'ai implémentée chez moi, et j'ai aussi ajouté un StartAction() dans SetState parce que sinon le clignotement ne démarrait pas :
void AccessoryBaseLight::SetStateRaw(ACC_STATE inNewState)
{
if (this->state != inNewState)
{
if (inNewState == LIGHTBLINK && this->startingMillis == 0)
this->StartAction();
this->state = inNewState;
this->pOwner->SetStateRaw(inNewState);
}
}
Dans le simulateur, dans ArduinoForm.hpp j'ai corrigé l'affichage des pins pour voir la valeur analogique courante qui ne s'affichait plus (dans le switch)...
private: ref class PinListItem
{
public:
int pin;
int state;
String^ name;
PinListItem(int inPin, int inState, String^ inName)
{
this->pin = inPin;
this->state = inState;
this->name = inName;
}
virtual String ^ToString() override
{
String^ str = gcnew String(" ");
String^ textName;
if (String::IsNullOrEmpty(this->name))
textName = String::Format("{0,-4}", this->pin.ToString());
else
textName = String::Format("{0,-4}", this->name);
switch (this->state)
{
case VS_LOW:
str = String::Format("{0} LOW", textName);
break;
case VS_HIGH:
str = String::Format("{0} HIGH", textName);
break;
case OUTPUT_RESERVED:
str = String::Format("{0} ----", textName);
break;
case OUTPUT_INTERRUPT:
str = String::Format("{0} INTR", textName);
break;
default:
str = String::Format("{0} {1,4}", textName, this->state.ToString());
break;
}
return str;
}
};
Je ne comprend pas ta demande pour le fading. Dans SetFading, on précise un pas entre 1 et 255, et un délai dans les mêmes limites. Ce qui fait qu'au maximum, un délai de 255ms avec un pas de 1 donne 255*255 ms soit 65 secondes juste pour faire décroître la lumière... Tu as besoin de plus que ça ? Je ne suis pas sûr que le fading soit le plus adapté si c'est le cas.