Sciences de l'ingénieur (spécialité) · Première
Programmation d'un microcontrôleur : cours de 1re SI
Publié le 6 novembre 2026 · Mis à jour le 6 novembre 2026 · Signaler une erreur
L'essentiel
- Programmer un microcontrôleur, c'est traduire un algorithme en un programme exécutable qui lit des entrées et commande des sorties 4.
- On part du cahier des charges, on construit un algorithme (algorigramme), puis on écrit le programme, par exemple avec Flowcode 3.
- Un programme embarqué suit presque toujours le schéma : initialiser, puis répéter lecture, décision, action.
- Les conditions (si… alors… sinon…) et les temporisations transforment une mesure en comportement du système.
- On valide toujours : simulation puis essai réel, en comparant au cahier des charges 4.
Pourquoi programmer un microcontrôleur ?
Autour de toi, beaucoup d'objets réagissent à leur environnement : un volet qui se ferme à la tombée de la nuit, un thermomètre qui change de couleur, une barrière qui se lève. Derrière ces comportements, il y a presque toujours un microcontrôleur que quelqu'un a programmé.
En sciences de l'ingénieur, le programme d'enseignement de spécialité des classes de première et de terminale générales a été fixé par le Bulletin officiel spécial n° 1 du 22 janvier 2019 1. Dans ce cadre, programmer ne consiste pas à écrire du code pour le plaisir : on cherche à faire réaliser une fonction à un système réel, en respectant un cahier des charges.
Les ressources pédagogiques publiées pour les enseignants présentent le microcontrôleur à travers son rôle, ses entrées et sorties, sa programmation et des exemples de programmes, avec en particulier le module Arduino 2. Ces quatre idées forment le plan de ce cours.
Tu as déjà vu comment l'information s'exprime sous forme numérique (codage de l'information) et comment on combine des états vrai/faux (logique combinatoire). Ces deux notions servent ici : un microcontrôleur manipule des nombres, et ses décisions reposent sur des conditions logiques.
Le microcontrôleur et ses entrées-sorties
Un système automatisé a besoin de trois fonctions : acquérir une information, la traiter, agir. Le microcontrôleur assure le traitement : il lit des informations venant de capteurs et commande des actionneurs ou des voyants. Un document de formation de l'académie de Caen consacre une partie de son contenu au rôle du microcontrôleur et à ses entrées-sorties 2.
- AcquérirUn capteur ou un bouton fournit l'entrée
- TraiterLe microcontrôleur applique le programme
- AgirUne LED ou un vérin reçoit la commande
Du cahier des charges à l'algorithme
On ne commence jamais par écrire des lignes de code. On commence par répondre à la question : que doit faire le système ? Un TP publié sur les ressources pédagogiques vise justement à ce que l'élève sache concevoir la logique de son programme, sous forme d'algorithme, à partir de ce qu'exige le cahier des charges 3.
L'algorigramme : dessiner le fonctionnement
Pour passer de l'idée au programme, on utilise un schéma. Dans le TP « niveau laser de chantier », la première partie consiste à compléter l'algorigramme de fonctionnement du laser, la seconde à créer le programme avec le logiciel Flowcode 3. Un autre TD propose de traduire un algorithme en organigramme de programmation, puis de simuler le comportement pour un microcontrôleur PIC 3.
- Cahier des chargesDire ce que le système doit faire
- AlgorigrammeDessiner entrées, tests et actions
- ProgrammeTraduire le schéma en instructions
- SimulationTester avec des valeurs limites
- Essai réelComparer au cahier des charges
La structure d'un programme embarqué
Le programme d'un microcontrôleur n'a généralement pas de fin : tant que le système est alimenté, il doit continuer à surveiller et à agir. D'où une structure en deux temps, que tu retrouveras quel que soit le langage ou le logiciel.
Variables, conditions et boucles
Trois outils suffisent pour la grande majorité des programmes de ce niveau.
| Outil | Rôle | Exemple |
|---|---|---|
| Variable | Garder une valeur | Dernière température |
| Condition | Choisir une action | Si T < 25, LED verte |
| Boucle | Répéter | Surveiller sans fin |
Lire une grandeur analogique et gérer le temps
Beaucoup de capteurs fournissent une tension qui varie de façon continue. Pour que le programme la traite, elle doit être convertie en nombre : c'est le lien avec le codage de l'information vu avant. Les ressources sur les composants « System on Chip » mentionnent d'ailleurs une partie numérique et une partie analogique dans le même système 5.
Le temps. Un microcontrôleur exécute ses instructions très vite. Pour qu'une LED clignote de façon visible, il faut insérer une temporisation, c'est-à-dire une pause de durée choisie. La période d'un clignotement est la durée d'un cycle complet allumé + éteint ; sa fréquence est son inverse : .
Valider : simuler puis tester
Un programme qui compile n'est pas forcément un programme qui fonctionne. Parmi les compétences travaillées dans les projets de première en spécialité SI figurent « traduire un algorithme en un programme exécutable » et « valider un modèle numérique de l'objet simulé » 4. Les deux se complètent : on écrit, puis on vérifie.
Programmation
- Cahier des charges
- Entrées
- Sorties
- Conditions
- Algorithme
- Algorigramme
- Tests
- Boucle
- Programme
- Initialisation
- Boucle principale
- Variables
- Validation
- Simulation
- Valeurs limites
- Essai réel
Exercices corrigés
Exercice 1 Clignotement et fréquence
Une LED doit clignoter avec une fréquence de 2 Hz. Elle reste allumée pendant la moitié de chaque période. Quelle temporisation, en millisecondes, faut-il placer après l'allumage ?
Indice 1
La période est l'inverse de la fréquence.
Indice 2
Convertis les secondes en millisecondes, puis prends la moitié.
Voir la correction pas à pas
Calculer la période : s.
Convertir : ms.
La LED est allumée la moitié de la période : ms.
Programme : allumer, attendre 250 ms, éteindre, attendre 250 ms, recommencer.
La temporisation après l'allumage est de 250 ms, comme celle après l'extinction.
Exercice 2 Lire une tension
Un capteur fournit une tension à un convertisseur analogique-numérique de 10 bits, de tension de référence 5 V. Le programme lit la valeur . En utilisant la relation , calcule la tension mesurée.
Indice 1
Calcule d'abord .
Indice 2
Remplace dans la formule puis simplifie la fraction.
Voir la correction pas à pas
Calculer le nombre de valeurs possibles : .
Écrire la formule avec les données : .
Simplifier : .
Conclure : V.
La tension mesurée est de 3,75 V.
Exercice 3 Durée d'une séquence de clignotements
Un programme fait clignoter une LED 10 fois : à chaque cycle, elle reste allumée 300 ms puis éteinte 200 ms. Une fois les 10 cycles terminés, le programme attend 1 s avant de s'arrêter. Quelle est la durée totale de la séquence, en secondes ?
Indice 1
Calcule la durée d'un cycle en millisecondes.
Indice 2
N'oublie pas l'attente finale, et convertis à la fin.
Voir la correction pas à pas
Durée d'un cycle : ms.
Durée des 10 cycles : ms, soit 5 s.
Ajouter l'attente finale : s.
Vérifier l'unité : le résultat demandé est en secondes.
La séquence dure 6 s.
Quiz
7 questions · correction immédiate · ton score reste sur ton appareil.
-
On commence par savoir ce que le système doit faire : c'est le rôle du cahier des charges, à partir duquel on élabore l'algorithme 3. Choisir le langage ou simuler vient après ; tenter au hasard fait perdre du temps et ne garantit rien.
-
La boucle principale se répète et permet de suivre les changements. Dans l'initialisation, la lecture serait faite une seule fois et le système ne réagirait plus. Le capteur ne « se lit » pas seul : c'est le programme qui l'interroge.
-
Le losange pose une condition et propose deux sorties, « oui » et « non ». Une action est un rectangle. Une boucle se repère par une flèche de retour, non par un symbole particulier.
-
Le bouton et le capteur envoient une information au microcontrôleur : ce sont des entrées. La LED et le distributeur du vérin reçoivent une commande : ce sont des sorties.
-
C'est faux : les valeurs 25 et 40 n'appartiennent à aucun cas. Il faut un cas pour chaque valeur, par exemple et . Penser que ces valeurs « n'arriveront pas » est l'erreur tentante, mais les valeurs limites sont justement les plus testées.
-
V. L'erreur courante est de diviser par 255 ou par 8 (le nombre de bits) au lieu de .
-
Le signe
=affecte une valeur ; pour comparer il faut==. Croire que=teste l'égalité vient de l'usage en mathématiques, mais en programmation les deux notions sont séparées.
Les questions qu'on se pose
Faut-il connaître un langage précis pour réussir ce chapitre ?
Non. La démarche compte plus que la syntaxe : cahier des charges, algorithme, programme, validation. Les ressources pédagogiques utilisent plusieurs outils (Flowcode, Arduino, langage C) pour une même démarche 235. Si tu maîtrises les structures (variable, condition, boucle), tu t'adapteras à n'importe quel outil.
Quelle différence entre un algorithme et un programme ?
L'algorithme décrit la solution de manière indépendante du langage ; le programme est sa traduction dans un langage compris par le microcontrôleur. Cette traduction fait partie des compétences travaillées en spécialité SI 4.
Pourquoi mon programme compile mais le système ne fait pas ce que je veux ?
Compiler signifie seulement que la syntaxe est correcte. L'erreur peut venir d'une condition mal écrite, d'une valeur limite oubliée, d'une unité de temps fausse ou d'un câblage. D'où l'intérêt de la démarche de validation : tests avec valeurs limites, puis essai réel.
À quoi sert un algorigramme si je sais déjà coder ?
Il permet de vérifier la logique avant de coder, de communiquer avec les autres membres d'un projet et de repérer les cas oubliés. Dans les activités proposées, on complète d'abord l'algorigramme, puis on crée le programme 3.
Pourquoi ajouter une temporisation ?
Le microcontrôleur exécute les instructions bien plus vite que l'œil ne perçoit. Sans pause, un clignotement paraît une lumière fixe. La temporisation fixe la durée de chaque état ; vérifie toujours l'unité (ms ou s).
Sources
Programme visé : Programme d'enseignement de spécialité de sciences de l'ingénieur des classes de première et terminale de la voie générale · Ministère de l'Éducation nationale et de la Jeunesse
- Programme d'enseignement de spécialité de sciences de l'ingénieur des classes de première et terminale de la voie générale, Ministère de l'Éducation nationale et de la Jeunesse. Consulté le 6 novembre 2026.
- Académie de Caen — Petit cours sur les microcontrôleurs, Éduscol STI. Consulté le 6 novembre 2026.
- STI2D Activité — Apprentissage à la programmation d'un microcontrôleur (niveau laser de chantier), Éduscol STI. Consulté le 6 novembre 2026.
- Projet en classe de première en Spécialité SI, Éduscol STI. Consulté le 6 novembre 2026.
- Formation « System on Chip » avec les microcontrôleurs CYPRESS PSoC, Éduscol STI. Consulté le 6 novembre 2026.
- Programmes et ressources en sciences de l'ingénieur — Voie générale, Éduscol. Consulté le 6 novembre 2026.
Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.