Illustre les modules 4 à 6 (9 figures)
M4 : trame UART 8N1, câblage série croisé. M5 : bus I2C, trame I2C, bus SPI. M6 : tâches millis(), déroulé d'une ISR, modes de déclenchement, encodeur rotatif. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
499d11402b
commit
372c5a3e1e
@@ -13,6 +13,8 @@ title: "Module 4 — Communication série & débogage"
|
||||
|
||||
L'UART (Universal Asynchronous Receiver-Transmitter) est un protocole de communication série point à point utilisant deux fils : TX (transmission) et RX (réception), sans horloge partagée — les deux extrémités doivent donc être configurées à la même vitesse (baud rate) pour interpréter correctement les bits reçus.
|
||||
|
||||
{#fig-m04-trame-uart}
|
||||
|
||||
Sur l'ESP32-S3, la liaison série vers l'ordinateur (moniteur série de l'IDE) transite le plus souvent directement par le port USB natif du microcontrôleur (USB CDC), et non par un UART matériel classique relié à une puce USB-série externe — d'où l'importance de l'option « USB CDC On Boot » vue au Module 0.
|
||||
|
||||
## 2. Les ports série disponibles
|
||||
@@ -48,6 +50,8 @@ void loop() {
|
||||
}
|
||||
```
|
||||
|
||||
{#fig-m04-cablage-serie}
|
||||
|
||||
## 3. Bien utiliser le moniteur série
|
||||
|
||||
### 3.1 Fonctions d'affichage
|
||||
|
||||
@@ -24,6 +24,8 @@ I2C (Inter-Integrated Circuit) utilise seulement deux fils partagés par tous le
|
||||
|
||||
Chaque périphérique possède une adresse unique (7 bits, soit 128 adresses possibles) qui permet au maître de s'adresser spécifiquement à lui sur le bus partagé.
|
||||
|
||||
{#fig-m05-bus-i2c}
|
||||
|
||||
### 2.2 Broches I2C par défaut sur ESP32-S3
|
||||
|
||||
Le framework Arduino-ESP32 définit par défaut SDA sur GPIO8 et SCL sur GPIO9 (à vérifier selon votre carte), mais ces broches peuvent être réassignées via Wire.begin(sda, scl).
|
||||
@@ -38,6 +40,8 @@ void setup() {
|
||||
|
||||
## 3. Scanner de bus I2C
|
||||
|
||||
{#fig-m05-trame-i2c}
|
||||
|
||||
Avant de câbler un module, il est très utile de vérifier qu'il est bien détecté et de connaître son adresse exacte :
|
||||
|
||||
```cpp
|
||||
@@ -157,6 +161,8 @@ Combinez écran OLED et capteur BME280 pour afficher en temps réel la températ
|
||||
|
||||
SPI (Serial Peripheral Interface) est plus rapide que l'I2C mais utilise davantage de fils : MOSI (données maître→esclave), MISO (esclave→maître), SCK (horloge) et une ligne CS (Chip Select) dédiée par périphérique. Il est privilégié pour les composants nécessitant un débit élevé (écrans TFT couleur, cartes SD, certains modules radio).
|
||||
|
||||
{#fig-m05-bus-spi}
|
||||
|
||||
| Critère | I2C | SPI |
|
||||
|---------------|-----------------------|--------------------------------|
|
||||
| Nombre de fils | 2 (partagés) | 4 (+1 CS par périphérique) |
|
||||
|
||||
@@ -49,12 +49,16 @@ void loop() {
|
||||
|
||||
Reprenez la logique de « blink sans delay » pour gérer simultanément trois comportements à des fréquences différentes : clignotement d'une LED classique toutes les 300 ms, cycle de couleur de la LED NeoPixel toutes les 1000 ms, et affichage d'un message de debug toutes les 5000 ms.
|
||||
|
||||
{#fig-m06-taches-millis}
|
||||
|
||||
## 4. Les interruptions matérielles
|
||||
|
||||
### 4.1 Principe
|
||||
|
||||
Une interruption permet au microcontrôleur de réagir instantanément à un évènement matériel (front montant ou descendant sur une broche), en suspendant momentanément l'exécution de la boucle principale pour exécuter une fonction dédiée, appelée ISR (Interrupt Service Routine). C'est indispensable pour ne manquer aucun évènement rapide, comme une impulsion d'encodeur rotatif ou un appui bref sur un bouton.
|
||||
|
||||
{#fig-m06-deroule-isr}
|
||||
|
||||
### 4.2 `attachInterrupt()`
|
||||
|
||||
```cpp
|
||||
@@ -93,10 +97,14 @@ Une routine d'interruption doit être aussi courte et rapide que possible : pas
|
||||
| CHANGE | Sur tout changement d'état |
|
||||
| LOW / HIGH | Tant que la broche reste dans cet état (peu utilisé) |
|
||||
|
||||
{#fig-m06-modes-declenchement}
|
||||
|
||||
## 5. Exercice : compteur d'impulsions (encodeur rotatif)
|
||||
|
||||
Un encodeur rotatif génère des impulsions sur deux broches (souvent nommées CLK et DT) permettant de détecter le sens de rotation. Câblez un encodeur rotatif et comptez le nombre de crans parcourus à l'aide d'une interruption sur la broche CLK.
|
||||
|
||||
{#fig-m06-encodeur}
|
||||
|
||||
```cpp
|
||||
#define CLK_PIN 6
|
||||
#define DT_PIN 7
|
||||
|
||||
Reference in New Issue
Block a user