undefined reference to `__cxa_guard_acquire'

Surtout ca ne fait plus ce que c'est sensé faire

Quand les variables lastMillis et isLedOn sont déclarées static, leur valeur est conservée entre 2 appels à loop.
Si tu vire static ce n'est plus le cas.

La bonne solution est de virer static et de déplacer ces variables en tant que globales a l'extérieur de loop.

Une variable statique d'une fonction est équivalent d'un point de vue stockage/mémoire à une variable globale mais sa portée est limitée à la fonction dans laquelle elle est déclarée. C'est à dire que personne d'autre ne peut y accéder que le code de la fonction.
Une variable globe est accessibles par tout le monde.

Si tu décide de ne pas accéder à une variable globale que a partir d'une fonction donnée, ca revient au même.

Dernière différence: 2 fonctions toto() et tata() peuvent chacune avoir une variable static int titi; qui sont 2 varaibles différentes.
par contre si tu les sorts en variables globales cette distinction n'existe plus. Par sécurité appeller alors les variables toto_toto et tata_titi

Mais où va t'il chercher des noms aussi débiles... Pauvre Barbudor

Le topic du forum donné en référence par Skywood semble pourtant dire qu'il n'y a pas de problème avec les variables statiques scalaires, uniquement avec les objets composés (compound = classes ou structures). Il est suggéré que ce soit un bug du compil avr-gcc car ceci mis a part cette syntaxe est parfaitement légale.

A essayer.... mais là c'est trop tard pour lancer l'IDE. Bonne nuit :wink: (Skywodd, bosse tes partiels !)