Le code pour la lecture du compteur de vitesse du vent interdit les interruptions en dehors de l'appel à delay().
C'est débile, ca bloque toutes les fonctions de temps.
Donc dès que le reste du code appele delay(...), tout se coince.
Je suggère la modif suivante :
lecture_vent()
{
cli(); // on interdit les interruptions le temps de mettre le compteur à zéro.
NbTopsFan = 0; //Set NbTops to 0 ready for calculations
sei(); //Enables interrupts
delay (1000); //Wait 1 second
cli(); //Disable interrupts - juste le temps de faire le calcul
Calc = ((NbTopsFan*0.000025*3.14159265*1)*60*60);//vitesse du vent en Km/H
sei(); // Et on remet les interruptions pour les autres avant de continuer
Serial.println(Calc, DEC); //Prints the number calculated above
}
D'une manière générale, si tu prends des bouts de code à droite et à gauche sans chercher à comprendre ce qu'ils font, tu cours à la cata et tous les 2 jours tu viendras demander de l'aide pour qu'on corrige ton code.
Maintenant, si ma modif marche, fait une pause, assieds toi et essaye de comprendre l'ensemble du code en question (pas juste ma modif, mais tout ce que tu as copié) avant d'aller plus loin.
Si tu as des questions, nous serons heureux de t'aider à comprendre.
Il y a des tutos, lis les aussi.
Il n'y a que comme cela que tu apprendras et que tu seras fier du résultat.