Pas d'explications cela serait trop long !
Si vous avez des questions, j'y repondrai...
MAIS ATTENTION !
AFIN QUE TOUT FONCTIONNE BIEN, IL VOUS FAUDRA BRICOLER UN PEU !
LES INTERUPTIONS INDESIRABLES DOIVENT ËTRE DESACTIVEES. EN PARTICULIER L'INTERUPTION DE DEBORDEMENT DU TIMER 0 DESTINE A GERER LES FONCTIONS Delay() ET Millis().
Pour cela, recherchez dans votre répertoire d'installation d'Arduino le fichier "wiring.c". Il se trouve normalement dans le chemin "\arduino-0007\lib\targets\arduino". Faites en une copie, renomez la en "wiring.bak" puis ouvrez le fichier "wiring.c" en édition (avec le bloc note de Windows par exemple).
Dans le fichier, recherchez les lignes :
// enable timer 0 overflow interrupt
#if defined(__AVR_ATmega168__)
sbi(TIMSK0, TOIE0);
#else
sbi(TIMSK, TOIE0);
#endif
qui se trouvent dans la fonction "main ()".
Mettez en commentaire cette partie de code avec "/" et "/" comme ceci :
/*
// enable timer 0 overflow interrupt
#if defined(__AVR_ATmega168__)
sbi(TIMSK0, TOIE0);
#else
sbi(TIMSK, TOIE0);
#endif
*/
et, sauvegardez le fichier.
Tant que ces lignes seront en commentaires, ous ne pouvez plus utiliser millis() et delay() dans vos programmes ! Pour d'autres projets, vous devrez donc réouvrir "wiring.c" et dé-commenter ces lignes. Ou effacer "wiring.c" et renommer "wiring.bak" en "wiring.c".
Le code qui suit à été testé avec sur un ATMEGA8 inséré sur une Arduino NG. Mais il n'y a aucune raison qu'il ne fonctionne pas sur n'importe quelle Arduino.