# Programmation d'un servomoteur 180°

#### <span style="text-decoration: underline;">**Programmation des Servomoteurs avec mBlock et Arduino IDE**</span>

#### <span style="text-decoration: underline;">**Objectif :**</span>

Comprendre le fonctionnement des servomoteurs et apprendre à les programmer avec **mBlock** et **Arduino IDE**.

#### <span style="text-decoration: underline;">**1. Introduction aux Servomoteurs**</span>

##### <span style="text-decoration: underline;">**Qu’est-ce qu’un servomoteur ?**</span>

Un **servomoteur** est un moteur à rotation limitée, généralement 180°, qui est contrôlé par un signal **PWM (Pulse Width Modulation)**. Il est utilisé dans de nombreux projets tels que les **bras robotisés, les portes automatiques et les robots éducatifs**.

##### <span style="text-decoration: underline;">**Branchement d'un servomoteur à un Arduino Nano**</span>

Un servomoteur possède **trois câbles** :

- **Noir ou Marron** → GND (Masse)
- **Rouge** → 5V (Alimentation)
- **Jaune ou Orange** → Signal (Entre les broches **2 et 13** du Nano)
- [![Capture d’écran 2025-03-21 142828.png](https://innovation.iha.unistra.fr/uploads/images/gallery/2025-03/scaled-1680-/capture-decran-2025-03-21-142828.png)](https://innovation.iha.unistra.fr/uploads/images/gallery/2025-03/capture-decran-2025-03-21-142828.png)

➡️ *Pour en savoir plus sur les servomoteurs, cliquez [ici](https://innovation.iha.unistra.fr/books/robotique-educative/page/quest-ce-quun-servo-moteur).*

#### <span style="text-decoration: underline;">**2. Configuration et Programmation avec mBlock :**</span>

<details id="bkmrk-pr%C3%A9sentation-des-blo"><summary></summary>

#### **<span style="text-decoration: underline;">Présentation des blocs spécifiques à la gestion des servomoteurs</span>[![image.png](https://innovation.iha.unistra.fr/uploads/images/gallery/2025-03/scaled-1680-/yODimage.png)](https://innovation.iha.unistra.fr/uploads/images/gallery/2025-03/yODimage.png)**


Dans mBlock, la gestion des servomoteurs se fait à l’aide d’un **bloc dédié** permettant de définir un angle précis entre 0° et 180°.

#### <span style="text-decoration: underline;">**Exercice 1 : Programmer un servomoteur en boucle**</span>

<span style="text-decoration: underline;">**Consigne** :</span> Programmer un **servomoteur 180°** pour qu'il effectue en boucle un mouvement de **0° à 180°** puis de **180° à 0°**, avec une pause de **2 secondes** entre chaque mouvement.

##### <span style="text-decoration: underline;">**Correction :**</span>

<details><summary></summary>

[![image.png](https://innovation.iha.unistra.fr/uploads/images/gallery/2026-02/scaled-1680-/xmtimage.png)](https://innovation.iha.unistra.fr/uploads/images/gallery/2026-02/xmtimage.png)

</details><span style="text-decoration: underline;">  
</span>

#### <span style="text-decoration: underline;">**Exercice 2 :**</span>

##### <span style="text-decoration: underline;">**Programmation d’un Mouvement Automatisé avec mBlock**</span>

Créer un programme permettant :  
✅ De **faire bouger le servomoteur progressivement** de 0° à 180° et inversement.  
✅ De **répéter** le mouvement avec une **boucle continue**.

##### <span style="text-decoration: underline;">**Correction :**</span>


<details><summary></summary>

[![image.png](https://innovation.iha.unistra.fr/uploads/images/gallery/2026-02/scaled-1680-/F4simage.png)](https://innovation.iha.unistra.fr/uploads/images/gallery/2026-02/F4simage.png)

</details></details>#### <span style="text-decoration: underline;">**3. Configuration et Programmation avec Arduino IDE :**</span>

<details id="bkmrk-exercice-1-%3A-program-1"><summary></summary>

#### <span style="text-decoration: underline;">**Exercice 1 : Programmer un servomoteur pour un mouvement en boucle**</span>

**Consigne** : Faire osciller un servomoteur de **0° à 180°** et inversement, avec une pause de **2 secondes** entre chaque mouvement.

#### <span style="text-decoration: underline;">**Etape 1 mouvement du servomoteur**</span>

Ecrire un programme qui fait en sorte de modifier l'angle de rotation de 0° a 180°

##### <span style="text-decoration: underline;">**Etape 2 mouvement en boucle** </span>

Modifier le programme afin de crée une boucle tout en laissant une attente de 2 seconde pendant chaque rotation.

##### <span style="text-decoration: underline;">**Correction : Code Arduino IDE :**</span>

<details><summary></summary>

```
#include <Servo.h>

Servo monServo; // Création de l'objet Servo

void setup() {
  monServo.attach(9); // Connexion du servomoteur sur la broche D9
}

void loop() {
  monServo.write(0);   // Position à 0°
  delay(2000);         // Pause de 2 secondes
  monServo.write(180); // Position à 180°
  delay(2000);         // Pause de 2 secondes
}

```

</details>
#### <span style="text-decoration: underline;">**Exercice 2 :** </span>

#### <span style="text-decoration: underline;"> **Programmation d’un Mouvement Automatisé avec Arduino IDE**</span>

Créer un programme permettant :  
✅ De **faire bouger progressivement** le servomoteur de **0° à 180°** et inversement.  
✅ D’utiliser une **boucle pour répéter** ce mouvement en continu.\*

##### <span style="text-decoration: underline;">**Etape 1 mouvement du servomoteur**</span>

Faire un programme permettant au servomoteur de faire une rotation de 0° a 180° et inversement.

##### <span style="text-decoration: underline;">**Etape 2 mouvement en boucle** </span>

Modifier le programme pour crée une boucle regroupant la rotation du servomoteur de 0° à 180° et inversement pour que le servomoteur effectue les rotations de manière répétitive.

##### <span style="text-decoration: underline;">**Correction :**</span>

<details><summary></summary>

```
#include <Servo.h>

Servo monServo;

void setup() {
  monServo.attach(9);
}

void loop() {
  for (int pos = 0; pos <= 180; pos++) { // De 0° à 180°
    monServo.write(pos);
    delay(15); // Ajuste la vitesse du mouvement
  }
  
  for (int pos = 180; pos >= 0; pos--) { // De 180° à 0°
    monServo.write(pos);
    delay(15);
  }
}

```

</details><div class="contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary" id="bkmrk--8"><div class="sticky top-9"><div class="absolute bottom-0 right-0 flex h-9 items-center pr-2"><div class="flex items-center rounded bg-token-sidebar-surface-primary px-2 font-sans text-xs text-token-text-secondary dark:bg-token-main-surface-secondary">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">  
</div></div></details>#### <span style="text-decoration: underline;">**4. Discussion et Applications**</span>

##### <span style="text-decoration: underline;">**Applications pratiques**</span>

- 🤖 **Bras robotisé**
- 🗑️ **Poubelle connectée**
- 🤖 **Little Bot**

##### <span style="text-decoration: underline;">**Questions et suggestions d’amélioration**</span>

✅ Ajouter un **potentiomètre** pour contrôler l’angle du servomoteur.  
✅ Utiliser un **bouton poussoir** pour déclencher le mouvement.  
✅ Remplacer le **servomoteur 180°** par un **servomoteur à rotation continue**.