Programmation Arduino

Arduino rend la programmation embarquee accessible a tous ! Avec quelques lignes de code, tu peux faire clignoter des LED, lire des capteurs et creer des projets interactifs.

Difficulte:
45 min
+50 XP
setup()
loop()
GPIO
Serial

Objectifs du cours

  • Comprendre la structure d'un programme Arduino
  • Maitriser les fonctions setup() et loop()
  • Utiliser les entrees/sorties numeriques et analogiques
  • Programmer la communication serie
  • Realiser des projets pratiques avec Arduino

Erreurs courantes a eviter

  • Oublier le point-virgule a la fin des instructions
  • Confondre = (affectation) et == (comparaison)
  • Ne pas initialiser les variables
  • Utiliser delay() de facon excessive (bloque le programme)

**Les deux fonctions obligatoires**

Tout programme Arduino (appele "sketch") contient deux fonctions :

**setup()** - Initialisation - Executee une seule fois au demarrage - Configure les broches, initialise les communications - Prepare tout ce qui est necessaire

**loop()** - Boucle principale - Executee en boucle infinie apres setup() - Contient la logique principale du programme - Se repete indefiniment

**Structure de base**

```cpp // Declarations globales (variables, constantes) const int LED = 13;

// Initialisation (executee 1 fois) void setup() { // Configuration des broches pinMode(LED, OUTPUT);

// Initialisation communication serie Serial.begin(9600); }

// Boucle principale (executee en continu) void loop() { // Code repete indefiniment digitalWrite(LED, HIGH); delay(1000); digitalWrite(LED, LOW); delay(1000); } ```

**Cycle d'execution**

``` Alimentation/Reset | v setup() -----> Execute 1 fois | v loop() <--+ | | +-----+ Boucle infinie ```

Python / Arduino
# Simulation de la structure Arduino en Python

class Arduino:
    """Simulation d'un Arduino pour comprendre le fonctionnement"""

    def __init__(self):
        self.pins = {}
        self.running = True
        self.cycle_count = 0

    def pinMode(self, pin, mode):
        """Configure une broche en entree ou sortie"""
        self.pins[pin] = {"mode": mode, "value": 0}
        print(f"[SETUP] Pin {pin} configure en {mode}")

    def digitalWrite(self, pin, value):
        """Ecrit une valeur sur une broche"""
        if pin in self.pins:
            self.pins[pin]["value"] = value
            etat = "HIGH" if value else "LOW"
            print(f"  Pin {pin} = {etat}")

    def delay(self, ms):
        """Simule une attente"""
        import time
        time.sleep(ms / 1000)

# Simulation du programme blink
print("=== SIMULATION ARDUINO - BLINK ===\n")

# Variables globales
LED = 13

# Instancier l'Arduino
arduino = Arduino()

# ===== SETUP =====
def setup():
    print("--- setup() commence ---")
    arduino.pinMode(LED, "OUTPUT")
    print("--- setup() termine ---\n")

# ===== LOOP =====
def loop():
    print(f"--- loop() cycle {arduino.cycle_count + 1} ---")
    arduino.digitalWrite(LED, 1)  # HIGH
    arduino.delay(500)            # Reduit pour la demo
    arduino.digitalWrite(LED, 0)  # LOW
    arduino.delay(500)
    arduino.cycle_count += 1

# ===== EXECUTION =====
setup()

# Executer loop() quelques fois
for _ in range(3):
    loop()

print("\n(En realite, loop() continue indefiniment)")

Quiz de validation

1. Quelle fonction est executee une seule fois au demarrage d'un Arduino ?

2. Quelle instruction configure une broche en sortie ?

3. Quelle est la plage de valeurs retournees par analogRead() sur Arduino Uno ?

4. Quelle fonction permet d'envoyer du texte via le port serie ?

5. A quoi sert analogWrite() ?

Pixel