struct TimeSlot {
byte device;
byte days : 7; // binary 0bSMTWTFS (Sunday, Monday, Tuesday ... Saturday) - use 7 bits
int hourBegin; // 00 ... 23
int minBegin; // 00 ... 59
int hourEnd;
int minEnd;
int randomMin; // randomly add / decrease begin and end times of xx minutes
} ;
en C ou C++, la définition se fait soit en même temps que la déclaration, soit si elle est séparée elle doit être dans une fonction.
donc si vous regroupez déclaration et définition ça donne ça (pas besoin de répéter struct et la dimension est calculée par le compilo grace à la liste fournie)
TimeSlot Slot[] = {
{Salon, 0b1111111, 7, 10, 8, 00, 0}, // ATTENTION A L'USAGE DE 00 --> le 0 devant veut dire notation en Octal
{Salon, 0b1000001,21, 45,23, 15, 0}
};
qui devrait fonctionner ou alors il faut mettre dans le setup (et c'est plus verbeux)
Dire que les jours sont sur 7 bits ne vous apportent pas vraiment un gain de place puisque vous n'avez rien qui tient sur 1 bit (vous pourriez éventuellement prévoir 1 bit pour dire si ce slot est actif ou pas ) et vous pouvez gagner plein d'octets car les heures et minutes (voire le random) n'ont pas besoin d'être des int, mais juste des uint8_t (1 seul octet) --> ça suffit pour coder de 0 à 255 donc OK pour 0-60 ou 0-23. Vous pouvez aussi prendre des int8_t si vous avez besoin d'avoir une valeur négative)
Les 7 bits, c'est plus pour tester ce truc que j'ai trouvé par hasard que pour faire des économies. J'utilise un ESP32, donc pas de problème de mémoire en vue pour l'instant...