Go Down

Topic: Avoir 2 boucles (ou plus) (Read 1 time) previous topic - next topic

Guyt

#5
Dec 04, 2010, 11:21 am Last Edit: Dec 04, 2010, 11:23 am by Guyt54 Reason: 1
LujO6 a raison, le module TimerOne (ou Timer2) fonctionne très bien pour ce genre de chose.

Voici un exemple d'utilisation du module.

Tu verras que la Led 13 cligne au 500 milliseconde et que le port sériel est examiné au 10 milliseconde.

La fonction "Loop" ne fait strictement rien, comme c'est souvent le cas en programmation par événements.

Code: [Select]

#include <TimerOne.h>

// exemple d'utilisation de TimerOne
// référence: http://www.arduino.cc/playground/Code/Timer1

void SerialHandler(void)
// renvoie le car recu
// appel au  10 millisecondes
{
 char car ;
 if (Serial.available())
   {
     car = Serial.read() ;
     Serial.write(car) ;  
   }  
}

void BlinkHandler(void)
// cligne led 13
// appel au 500 milliseconde
{
 static bool flag ;
 
 flag = !flag ;
 digitalWrite(13,flag) ;  
}  


void TimerHandler(void)
// appelé tous les 10 milliseconde
{
 static int ticks = 0 ;
 
 SerialHandler() ;
 ticks++ ;
 if (ticks == 50) // 50 * 10 ms = 500 milli écoulé
    {
      BlinkHandler() ;
      ticks = 0 ;
    }  
}  

void setup()
{
 pinMode(13, OUTPUT);
 Serial.begin(9600) ;
 Timer1.initialize(10000);         // initialise Timer1 période 10 milliseconde
 Timer1.attachInterrupt(TimerHandler);  // attache TimerHandler
}

void loop()
{
 // Fait rien
}


Go Up