Etabli
← Retour aux leçons
Leçon · FND-02 · Premier programme embarqué · 1/4

Comprendre un programme embarqué

4 étapes·15 min·0/4 fait·quiz à réussir
voix

Débranche l'écran, range le clavier : le que tu vas écrire vivra tout seul, enfermé dans une , répété du matin au soir sans que personne ne clique nulle part. Deux suffisent à organiser cette vie étrange — () qui prépare une fois, loop() qui recommence sans fin. Cette leçon t'apprend à lire cette partition avant de la jouer.

📖 Comprendre

1. Un programme qui vit tout seul

Sur un ordinateur, un a un écran pour parler, un clavier pour écouter, et quelqu'un pour le lancer puis le fermer. Un programme embarqué n'a rien de tout cela : une fois copié dans la flash de la carte, il démarre dès que le arrive, tourne sans personne, et repart de zéro à chaque remise sous . Pas de fenêtre, pas de « quitter » : son monde entier, ce sont les .

Autre différence de taille : le n'exécute QUE lui. Pas de système d'exploitation, pas d'autres applications en arrière-plan — ton est l'unique habitant de la . S'il s'arrête, plus rien ne se passe : le robot devient un presse-papier. C'est pourquoi tout programme embarqué est construit autour d'une idée simple : ne jamais finir, recommencer sans cesse.

2. setup() une fois, loop() pour toujours

Tout embarqué repose sur le même squelette : deux . Au démarrage, la carte exécute () une seule fois, de haut en bas — c'est là qu'on prépare le terrain : déclarer quelles seront des sorties, ouvrir la . Puis elle entre dans loop() et la rejoue à l'infini : dernière ligne atteinte, on remonte à la première, sans pause, jusqu'à la coupure du .

Pourquoi ce choix ? Parce que () est la boucle percevoir-décider-agir incarnée en code. À chaque tour : lire les (percevoir), comparer, choisir (décider), commander les (agir) — et recommencer aussitôt. Le thermostat et l'aspirateur de tes leçons précédentes bouclaient déjà ainsi ; à partir d'aujourd'hui, c'est TOI qui écris le contenu de leurs tours de boucle.

PERCEVOIRcapteursDÉCIDERcerveauAGIRactionneursles capteurs regardent le monde…

3. Le voyage du code : éditeur, compilation, flash

Le texte que tu écris dans l'éditeur est fait pour les humains : la n'y comprend rien. Avant le départ, la le traduit en instructions machine — les seules que le processeur sache exécuter — et en profite pour vérifier la grammaire : une faute, et le voyage s'arrête là, avec un message d'erreur. Puis le copie le résultat dans la flash de la carte, par le câble USB.

REMPLACE tout : l'ancien est effacé, le nouveau prend sa place, et la carte redémarre — () une fois, puis loop() sans fin. Et comme la garde son contenu même sans , ton programme survit au débranchement : demain, sur une , au milieu d'un champ, il repartira exactement pareil. C'est toute la magie de l'embarqué.

4. Lire comme le processeur : une ligne à la fois

Le processeur lit une instruction à la fois, dans l'ordre, sans jamais deviner la suite. Lire un , c'est jouer au processeur : suivre du doigt, ligne après ligne, en tenant à jour l'état de chaque . Et retiens la traduction fondamentale : allumer une , c'est écrire « mets sa broche à l' » — la broche impose alors la d', le traverse la LED, elle s'éclaire. L'état bas la ramène à zéro volt : extinction.

Le meilleur entraînement qui soit tient en un réflexe : PRÉDIRE avant de . Devant un blink modifié — des temps changés, deux lignes échangées — annonce à voix haute ce que la carte va faire, puis vérifie. Chaque prédiction juste ancre le modèle mental ; chaque prédiction fausse vaut de l'or : elle montre exactement où ton idée du s'écarte de ce qu'il fait vraiment.

🧮 Exemple guidé : le blink déroulé seconde par seconde

Voici le blink en pseudo-code. Dans setup() : « la broche de la LED devient une sortie ». Dans loop() : « état haut · attendre 500 ms · état bas · attendre 500 ms ». Déroule la première seconde, montre en main.

  1. 1.Mise sous tension : setup() s'exécute une fois — la broche de la LED est déclarée sortie. Quelques microsecondes, invisible à l'œil. Puis loop() commence.
  2. 2.t = 0 ms : état haut, la LED s'allume. Puis « attendre 500 ms » : le programme s'immobilise, la broche garde son état, la LED reste allumée.
  3. 3.t = 500 ms : état bas, la LED s'éteint. Nouvelle attente de 500 ms, lumière éteinte cette fois.
  4. 4.t = 1 000 ms : dernière ligne atteinte — loop() repart à sa première ligne : état haut… Le cycle complet dure 1 000 ms : un éclat par seconde, pour l'éternité.

Une préparation exécutée une fois, quatre lignes rejouées sans fin, et une seule règle de relecture — dernière ligne, puis première. Cela suffit pour prédire le comportement de la carte jusqu'à la coupure du courant.

🛠 Pratiquer sur l'établi

  1. 01Lire le squelette : () une fois, loop() pour toujours

    Regarde la scène de l'établi tourner : un unique passage de préparation au tout début, puis la boucle qui se rejoue sans jamais s'arrêter. Redis le contrat à voix haute — une fois, loop pour toujours — et demande-toi pour chaque ligne de ton futur code : appartient-elle aux préparatifs, ou au tour de boucle ?

    sur l'établi
    toutes les 20 ms : trop vitede vieux échos se font chronométrer : valeurs folles

    📖 Termes de cette étape

Objectifs

  • +Comprendre () et loop()
  • +Suivre le cycle téléverser-exécuter
  • +Lire un simple
🧪 S'entraîner dans le bac à sable

Quiz de validation

À réussir pour valider la leçon

Réponds de mémoire, sans remonter la page : c'est l'effort de rappel qui grave le cours. Les trois bonnes réponses valident la leçon.

1. Que fait la carte quand loop() atteint sa dernière ligne ?

2. Où vit le programme une fois téléversé ?

3. À quoi sert setup() dans le squelette ?

🧠 Ce qu'il faut retenir

  • 1.() s'exécute une seule fois au démarrage ; loop() tourne ensuite sans fin.
  • 2. remplace tout le : la carte redémarre avec le nouveau code.
  • 3.Lire du code en prédisant son effet est le meilleur entraînement qui soit.