{"id":6495,"date":"2026-02-02T17:05:02","date_gmt":"2026-02-02T16:05:02","guid":{"rendered":"https:\/\/workboot.fr\/ciela\/?page_id=6495"},"modified":"2026-04-16T15:40:52","modified_gmt":"2026-04-16T14:40:52","slug":"servo-moteur-fs90","status":"publish","type":"page","link":"https:\/\/workboot.fr\/ciela\/servo-moteur-fs90\/","title":{"rendered":"Servo Moteur FS90"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Un servo moteur , permet de contr\u00f4ler une position en fonction d&rsquo;une consigne , tr\u00e8s pratique en robotique et dans d&rsquo;autres projets.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Servo vient du mot asservissement <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Caract\u00e8ristiques du FS90<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le signal de commande (fil orange) est de fr\u00e9quence 50 Hz. T=20ms<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">l&rsquo;impusion va donner la consigne de position du Servo Moteur (\u00e9tat haut)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">const int FS90_MIN = 500  ou 0.5 ms;     # angle  0 \u00b0   ou 0 radian<br>const int FS90_MAX = 2400 ou 2.4ms ; # angle  180\u00b0 ou pi radian<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">fil rouge<\/mark> est l&rsquo;alimentation en 5V \u00e0 7V max.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-black-color\">fil marron ou noir<\/mark> , le GND , le 0 , la masse !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">fil orange<\/mark> la consigne en PWM du servo-moteur<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">la consigne ici est envoy\u00e9 sur le fil orange c&rsquo;est une  PWM , impulsion de 500 \u00e0 2400 micro seconde<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/02\/servo-parts.jpeg\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"479\" src=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/02\/servo-parts.jpeg\" alt=\"\" class=\"wp-image-6502\" srcset=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/02\/servo-parts.jpeg 1000w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/02\/servo-parts-300x144.jpeg 300w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/02\/servo-parts-768x368.jpeg 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/a><figcaption class=\"wp-element-caption\">Vision r\u00e9elle d&rsquo;un Servo moteur type FS90<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/Servo_interne.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"559\" src=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/Servo_interne-1024x559.png\" alt=\"\" class=\"wp-image-7532\" srcset=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/Servo_interne-1024x559.png 1024w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/Servo_interne-300x164.png 300w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/Servo_interne-768x419.png 768w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/Servo_interne.png 1408w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Vision par Gemini du servo moteur <\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Dur\u00e9es d&rsquo;impulsion en MICROSECONDES (\u00b5s) :<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u00ab\u00a0Le FS90 utilise un circuit int\u00e9gr\u00e9 sp\u00e9cialis\u00e9 et d\u00e9di\u00e9, souvent un NE544 ou un \u00e9quivalent, qui agit comme le cerveau analogique du servo. Ce n&rsquo;est pas un microcontr\u00f4leur programmable, mais une puce c\u00e2bl\u00e9e pour ex\u00e9cuter une seule t\u00e2che : la commande en boucle ferm\u00e9e d&rsquo;un moteur pour atteindre une position d\u00e9finie par un signal PWM.\u00a0\u00bb<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Angle 0 degr\u00e9: T=500us<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/0.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"437\" src=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/0-1024x437.png\" alt=\"\" class=\"wp-image-7844\" srcset=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/0-1024x437.png 1024w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/0-300x128.png 300w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/0-768x327.png 768w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/0.png 1255w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Fr\u00e9quence 50Hz (T=20ms),  180 degr\u00e9s (2400uS)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/180.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"437\" src=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/180-1024x437.png\" alt=\"\" class=\"wp-image-7845\" srcset=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/180-1024x437.png 1024w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/180-300x128.png 300w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/180-768x327.png 768w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/180.png 1255w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Commutation de 0 degr\u00e9 \u00e0 180 degr\u00e9 :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/0_180.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"437\" src=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/0_180-1024x437.png\" alt=\"\" class=\"wp-image-7846\" srcset=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/0_180-1024x437.png 1024w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/0_180-300x128.png 300w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/0_180-768x327.png 768w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/04\/0_180.png 1255w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Solution en C , la plus simple<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/***************************************************\/\n\/* Code pour ma\u00eetriser un SERVO_MOTEUR FS90        *\/\n\/* en C simple , signal PWM r\u00e9alis\u00e9 dans le loop() *\/\n\/***************************************************\/\n#define signal 10\n#define imp 500\n\/* 0.5 &lt;  imp  &lt;2,4 *\/\n\/* 500 uS \u00e0 24000 uS *\/\n\n\n\/* tempo risation en microsecond pouvant etre sup\u00e8rieur a 1600 ms *\/\nvoid tempo_ms(int temps)\n{\n  if (temps &lt; 1600 )\n  {\n    delayMicroseconds (temps); \/* fini *\/\n  }\n  else\n  {\n      do\n      {\n       delayMicroseconds(1600);\n       temps=temps-1600;\n      }\n      while (temps > 1600);\n      delayMicroseconds(temps);\n  }\n}\n\/* mise en sortie la broche de commande du servo moteur *\/\nvoid setup() \n{\n  pinMode(signal, OUTPUT);\n}\n\n\n\/* boucle de commande du SERVO_Moteur fr\u00e9quence 50Hz *\/\nvoid loop() \n{  \/* boucle de 20ms *\/\n  digitalWrite(signal, HIGH);\n  tempo_ms(imp);  \n  digitalWrite(signal, LOW);\n  tempo_ms(20000-imp);      \/* 20ms -imp *\/\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Donner l&rsquo;organigramme et le PL de ce code <\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Expliquer clairement comment fonctionne ce code par rapport au servo moteur<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Relever avec la sonde num\u00e9rique le signal de la broche 10 de l&rsquo;arduino <\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Donner la fr\u00e9quance et le Rc <\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Donner un code donnant un angle de 0<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Tester et relever avec la sonde logique la fr\u00e9quence et le Rc<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Donner un code donnant un angle de moiti\u00e9.<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Tester et relever avec la sonde logique la fr\u00e9quence et le Rc<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Donner un code donnant un angle Maximum<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Tester et relever avec la sonde logique la fr\u00e9quence et le Rc<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">R\u00e9aliser un code \u00ab\u00a0m\u00e9tronome\u00a0\u00bb qui bascule le servo moteur de l&rsquo;angle 0 \u00e0 l&rsquo;angle 180\u00b0 et de 180\u00b0 \u00e0 0 toute les 2 secondes !<\/h3>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Solution<\/summary>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/***************************************************\/\n\/* Code pour ma\u00eetriser un SERVO_MOTEUR FS90        *\/\n\/* en C simple , signal PWM r\u00e9alis\u00e9 dans le loop() *\/\n\/***************************************************\/\n#define signal 10\n#define imp 500+950+950\n#define imp0 500\n#define imp180 2400\n#define temps 100\n\/* 500  minimum 500+950 milieu et 500+950+950 (2400) MAX*\/\nint cpt;\n\/* temporisation en microsecond pouvant etre sup\u00e8rieur a 1600 ms *\/\nvoid tempo_ms(int tmp)\n{\n  if (tmp &lt; 1600 )\n  {\n    delayMicroseconds (tmp); \/* fini *\/\n  }\n  else\n  {\n      do\n      {\n       delayMicroseconds(1600);\n       tmp=tmp-1600;\n      }\n      while (tmp > 1600);\n      delayMicroseconds(tmp);\n  }\n}\n\n\/* mise en sortie la broche de commande du servo moteur *\/\nvoid setup() \n{\n  pinMode(signal, OUTPUT);\n  cpt=0;\n}\n\n\n\/* boucle de commande du SERVO_Moteur fr\u00e9quence 50Hz *\/\nvoid loop() \n{\nif (cpt&lt;temps)\n{  \n  digitalWrite(signal, HIGH);\n  tempo_ms(imp0);  \n  digitalWrite(signal, LOW);\n  tempo_ms(20000-imp0);\n}\nelse\n{  \n  digitalWrite(signal, HIGH);\n  tempo_ms(imp180);  \n  digitalWrite(signal, LOW);\n  tempo_ms(20000-imp180);\n}\ncpt++;\nif (cpt>(2*temps))\n  {\n    cpt=0;\n  }      \n}<\/pre>\n<\/details>\n\n\n\n<h3 class=\"wp-block-heading\">Pour les plus curieux on va programmer le TWI , le timer de l&rsquo;atmega328p<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">C&rsquo;est hors programme ! mais c&rsquo;est comme cela que ca fonctionne.  On va utiliser les registres internes du timer &#8230; <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">on note que Timer (TWI) va g\u00e9n\u00e9rer le signal pwm de commande ,  et le processeur de l&rsquo;atmega328p est totalement disponible (loop() vide)<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Configuration du servo FS90 avec Timer1 sur la broche 10\n\/\/ Signal : 50Hz (p\u00e9riode 20ms)\n\/\/ Impulsion : 500\u00b5s \u00e0 2500\u00b5s (position 0\u00b0 \u00e0 180\u00b0)\n\nvolatile uint16_t pulseWidth = 1500; \/\/ Position initiale : 1500\u00b5s (90\u00b0)\n\nvoid setup() {\n  \/\/ Configurer la broche 10 (OC1B) comme sortie\n  pinMode(10, OUTPUT);\n  \n  \/\/ D\u00e9sactiver les interruptions globales pendant la configuration\n  cli();\n  \n  \/\/ Configurer Timer1 en mode Fast PWM 8-bit (mode 14)\n  \/\/ WGM13:1, WGM12:1, WGM11:1, WGM10:0 -> Mode 14 (Fast PWM, TOP = ICR1)\n  TCCR1A = 0;\n  TCCR1B = 0;\n  TCCR1A |= (1 &lt;&lt; WGM11);              \/\/ Mode 14: Fast PWM\n  TCCR1B |= (1 &lt;&lt; WGM13) | (1 &lt;&lt; WGM12); \/\/ TOP = ICR1\n  \n  \/\/ Configurer la sortie OC1B (broche 10) en mode non-invers\u00e9\n  TCCR1A |= (1 &lt;&lt; COM1B1);  \/\/ Clear OC1B on compare match, set at BOTTOM\n  \n  \/\/ D\u00e9finir TOP pour une fr\u00e9quence de 50Hz\n  \/\/ Fr\u00e9quence = 16MHz \/ (prescaler * (1 + ICR1))\n  \/\/ Pour 50Hz : 16MHz \/ (prescaler * (1 + ICR1)) = 50\n  \/\/ Avec prescaler = 8 : 1 + ICR1 = 16000000 \/ (8 * 50) = 40000\n  \/\/ Donc ICR1 = 39999\n  ICR1 = 39999;  \/\/ TOP pour 50Hz avec prescaler 8\n  \n  \/\/ D\u00e9finir le prescaler \u00e0 8\n  TCCR1B |= (1 &lt;&lt; CS11);  \/\/ CS11=1, CS10=0 -> Prescaler 8\n  \n  \/\/ D\u00e9finir la largeur d'impulsion initiale\n  \/\/ OCR1B = (pulseWidth \/ 20000) * (ICR1 + 1)\n  \/\/ Pour 500\u00b5s : OCR1B = (500\/20000) * 40000 = 1000\n  \/\/ Pour 1500\u00b5s : OCR1B = (1500\/20000) * 40000 = 3000\n  \/\/ Pour 2500\u00b5s : OCR1B = (2500\/20000) * 40000 = 5000\n  updatePulseWidth(pulseWidth);\n  \n  \/\/ R\u00e9activer les interruptions\n  sei();\n}\n\n\/\/ Fonction pour mettre \u00e0 jour la position du servo\nvoid setServoPosition(uint16_t microseconds) {\n  \/\/ Limiter la valeur entre 500\u00b5s et 2500\u00b5s\n  if (microseconds &lt; 500) microseconds = 500;\n  if (microseconds > 2500) microseconds = 2500;\n  \n  pulseWidth = microseconds;\n  updatePulseWidth(pulseWidth);\n}\n\n\/\/ Mettre \u00e0 jour OCR1B avec la nouvelle valeur\nvoid updatePulseWidth(uint16_t microseconds) {\n  \/\/ Calculer OCR1B en fonction de la largeur d'impulsion souhait\u00e9e\n  \/\/ OCR1B = (microseconds \/ 20000) * (ICR1 + 1)\n  uint16_t ocrValue = (uint32_t)microseconds * (ICR1 + 1) \/ 20000;\n  OCR1B = ocrValue;\n}\n\nvoid loop() {\n  \/\/ Le loop ne fait rien comme demand\u00e9\n  \/\/ Vous pouvez \u00e9ventuellement ajouter un d\u00e9lai pour \u00e9conomiser l'\u00e9nergie\n  delay(10);\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">C++ et objet <\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Code avec un Timer (Circuit int\u00e9gr\u00e9 dans le Microcontr\u00f4leur TWI sur l&rsquo;atmega328p) et  nous allons d\u00e9couvrir l&rsquo;objet en C++<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Et la on va utiliser le C++ (car oui le compilateur pour arduino est g++), car l&rsquo;objet Servo est introduit ! (ca utilise les registres du timer comme dans l&rsquo;exemple pr\u00e9c\u00e9dent) mais c&rsquo;est cach\u00e9 dans la classe servo (plus facile \u00e0 faire ,car quelqu&rsquo;un \u00e0 cod\u00e9 pour vous) <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans la librairie <a href=\"https:\/\/docs.arduino.cc\/libraries\/servo\/\">Servo.h<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sachant que cet objet n&rsquo;est utilisable que tu les broches poss\u00e9dant un TILDA ~  car si on regarde la documentation de l&rsquo;ATMEGA328P seul ces broches sont connectable sur un Timer capable de g\u00e9rer les Temps sans prendre de ressource au microprocesseur du microcontr\u00f4leur.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">broche \u00e0 utiliser pour la PWM<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>~3  ~5  ~6  ~9  ~10  ~11<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;objet Servo() et oui la on va faire du C++ et utiliser un objet et d\u00e9couvrir ce qu&rsquo;est un objet !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fr\u00e9quence de 50Hz par et on r\u00e8gle la valeur min et max de l&rsquo;impulsion \u00e0 1, le premier param\u00e8tre est la PIN utilis\u00e9e.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;Servo.h>\n\nServo monServo;  \/* Cr\u00e9er un objet servo , instanciation de l'objet , appel du constructeur *\/\n\nvoid setup() \n{\n  monServo.attach(9, 500, 2400);  \/* initialisation de l'objet *\/\n  \/\/ Positionner \u00e0 0\u00b0 (500\u00b5s)\n  monServo.writeMicroseconds(500);\n  \n  delay(1000);  \/* Attendre 1 seconde pour la stabilisation *\/\n}\n\nvoid loop() \n{\n  \/* Le servo reste \u00e0 0\u00b0\n     et le processeur ne fait rien , il est tout pour vous dans le loop()\n     Pas besoin de r\u00e9p\u00e9ter l'instruction\n     le signal PWM est g\u00e9rer automatiquement par l'objet monServo qui a programm\u00e9 un circuit d\u00e9di\u00e9 Timer (TWI)\n   *\/\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Maintenant on va utiliser la m\u00e9thode write qui permet de transmettre l&rsquo;angle de consigne  du servo-moteur<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;Servo.h>\n\nServo monServo;  \/* Cr\u00e9er un objet servo , instanciation de l'objet , appel du constructeur *\/\n                              \/* Le constructeur par d\u00e9faut est appel\u00e9 automatiquement *\/\nvoid setup() \n{\n  monServo.attach(9, 500, 2400);  \/* initialisation de l'objet  le premier param\u00e8tre est obligatoire (la broche) *\/\n  \/\/ Positionner \u00e0 0\u00b0 (500\u00b5s)\n  monServo.write(0);\n  \n  delay(1000);  \/* Attendre 1 seconde pour la stabilisation et retour \u00e0 zero*\/\n}\n\nvoid loop() \n{\nint angle;\n\nfor (angle=0;angle&lt;180;angle++)\n    {\n    monServo.write(angle);\n    delay(10);\n    }\ndelay(1000);\nmonServo.write(0);\ndelay(1000);\n}<\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">Que fais ce code ?<\/h5>\n\n\n\n<h3 class=\"wp-block-heading\">Donner un code utilisant la librairie servo.h , qui r\u00e9alise le m\u00e9tronome de 2 secondes.  comme dans l&rsquo;exemple en C simple !<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Donner les avantages <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un servo moteur , permet de contr\u00f4ler une position en fonction d&rsquo;une consigne , tr\u00e8s pratique en robotique et dans d&rsquo;autres projets. Servo vient du mot asservissement Caract\u00e8ristiques du FS90 Le signal de commande (fil orange) est de fr\u00e9quence 50 Hz. T=20ms l&rsquo;impusion va donner la consigne de position du Servo Moteur (\u00e9tat haut) const [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-6495","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"admin","author_link":"https:\/\/workboot.fr\/ciela\/author\/admin\/"},"uagb_comment_info":0,"uagb_excerpt":"Un servo moteur , permet de contr\u00f4ler une position en fonction d&rsquo;une consigne , tr\u00e8s pratique en robotique et dans d&rsquo;autres projets. Servo vient du mot asservissement Caract\u00e8ristiques du FS90 Le signal de commande (fil orange) est de fr\u00e9quence 50 Hz. T=20ms l&rsquo;impusion va donner la consigne de position du Servo Moteur (\u00e9tat haut) const\u2026","_links":{"self":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/6495","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/comments?post=6495"}],"version-history":[{"count":57,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/6495\/revisions"}],"predecessor-version":[{"id":7857,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/6495\/revisions\/7857"}],"wp:attachment":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/media?parent=6495"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}