/* * Commande d'un servo moteur en plusieurs séquences. * Clignotement de la Led onBoar: * - rapide en début de programme. * - lente en entre les séquences. * - fixe en fin de programme * * Commande servo à l'aide de servo.h et * seulement sur les pin 9 ou pin 10. * */ #include Servo monServo; int pos = 0; const int pinLed = 13; // Led sur le board const long blinkTimeMs = 2000; // temps de clignotement de la led (2 sec) const int FAST = 50; // interval entre deux clignotement (rapide) const int SLOW = 150; // interval entre deux clignotement (lent) const int FIXED = -1; // valeur spécial pour éclairage continu void setup(){ pinMode( pinLed, OUTPUT ); // Attacher la pin 9 à l'objet servo. // ATTN: le code initialise l'angle à 90 degrés par défaut. monServo.attach(9); // remettre l'angle à 0 degrés monServo.write( 0 ); } void loop(){ // Faire clignoter led 13 sur le board. // Démarrage de séquence --> clignotement rapide blinkBoardLed( FAST ); // Passer de 0 a 180° par angle de 10 degré for( int iAngle=0; iAngle<= 360; iAngle+=10 ) { monServo.write(iAngle); delay( 250 ); } // Clignotement lent entre deux séquences blinkBoardLed( SLOW ); // Angle décroissant progressif for( int iAngle = 360; iAngle>=0; iAngle-- ) { monServo.write( iAngle ); delay( 10 ); } // Clignotement lent entre deux séquences blinkBoardLed( SLOW ); // Angle arbitraire de 45 degrés monServo.write( 0 ); // Find de séquence -> eclairage fixe blinkBoardLed( FIXED ); } /* Fait clignoter la led 13 sur le board pendant 2 secondes * * interval: Interval de clignotement. -1 pour fixe. */ void blinkBoardLed( int interval ){ long startMillis = millis(); // temps que pas 2 sec d'écoulée while( (millis() - startMillis) < blinkTimeMs ) { switch( interval ){ case -1 : // Cas spécial, allumage fixe digitalWrite( pinLed, HIGH ); delay( blinkTimeMs ); // attendre le temps total digitalWrite( pinLed, LOW ); break; default: // faire clignoter digitalWrite( pinLed, HIGH ); delay( interval ); digitalWrite( pinLed, LOW ); delay( interval ); } // eof Case } // eof While }