Initiation à la programmation (Arduino/Python)
Variables, boucles, conditions, entrées/sorties numériques et analogiques
🏭 Application industrielle : La programmation est au cœur des systèmes embarqués : elle permet de commander des robots, des drones, des objets connectés et des automates industriels. L'Arduino est la plateforme de référence pour l'apprentissage.
La programmation permet de donner des instructions à un microcontrôleur pour qu'il exécute des tâches automatiquement. L'Arduino Uno (microcontrôleur ATmega328P) est la carte la plus utilisée en enseignement de SI.
Un programme Arduino comporte toujours deux fonctions obligatoires :
—void setup(): exécutée une seule fois au démarrage (configuration des broches) ;
—void loop(): exécutée en boucle infinie (logique principale).
Les briques fondamentales de la programmation sont :
— les variables (stockent des données :int,float,bool) ;
— les conditions (if/else: exécutent un bloc selon un test) ;
— les boucles (for,while: répètent un bloc).
Fonctions d'entrée/sortie essentielles :
—digitalRead(pin): lit un état binaire ( ou ) ;
—digitalWrite(pin, HIGH/LOW): écrit un état binaire ;
—analogRead(pin): lit une tension analogique (retourne à ).
📖 Vocabulaire clé
Variable
:
Espace mémoire nommé qui stocke une valeur modifiable. Types courants :
int (entier), float (décimal), bool (vrai/faux). Exemple : int compteur = 0;
Condition (if/else)
:
Exécute un bloc si la condition est vraie, un autre sinon. Exemple :
if (analogRead(A0) > 500) { digitalWrite(13, HIGH); } else { digitalWrite(13, LOW); }
Boucle for
:
Répète un bloc un nombre connu de fois. Syntaxe :
for (init; condition; incrément) { ... }. Exemple : for (int i = 0; i < 10; i++) exécute le bloc fois.
Boucle while
:
Répète un bloc tant qu'une condition est vraie. Le nombre de répétitions n'est pas connu à l'avance. Exemple :
while (digitalRead(2) == LOW) { /* attendre */ }
📋 Analyser un programme en 3 étapes
-
1
Identifier les variables et leurs valeurs initiales : Repérer chaque déclaration et noter la valeur de départ. Suivre chaque modification au fil du programme.
Exemple :int x = 5;→ commence à . Si on écritx = x + 3;, alors passe à . -
2
Dérouler les boucles itération par itération : Pour
for (i = 0; i < n; i++), le bloc s'exécute fois. Noter la valeur de chaque variable à chaque itération.
Exemple :int s = 0; for (int i = 1; i <= 3; i++) { s = s + i; }
Itération 1 : . Itération 2 : . Itération 3 : . -
3
Évaluer les conditions avec les valeurs courantes : Pour chaque
if, tester la condition avec les valeurs du moment. Si vraie → blocif; sinon → blocelse.
Exemple : Si et la condition estif (s > 5), la condition est vraie → on exécute le blocif.
✅ Exemple résolu
Énoncé : On considère le programme Arduino suivant. Quelle est la valeur finale de
s ?
int s = 0;
for (int i = 1; i <= 4; i++) {
s = s + i * i;
}
Démarche :
- Initialisation : .
- Itération : .
- Itération : .
- Itération : .
- Itération : .
- La boucle s'arrête car . Valeur finale : .
Réponse : La valeur finale de est . C'est la somme des carrés : .
📏 Relations fondamentales
Boucle
for (i = a; i < b; i++) → nombre d'itérations Boucle
for (i = a; i <= b; i++) → nombre d'itérations Somme des entiers de à :
Après itérations d'un incrément constant : valeur
analogRead() retourne un entier entre et (CAN bits)🎨 Illustration
Algorigramme
Une boucle for pas à pas : calculer s = 1² + 2² + 3² + 4²
Le même programme que dans l'exemple du cours (int s = 0; for (int i = 1; i <= 4; i++) { s = s + i * i; }), sous forme d'organigramme normalisé : rectangles pour les traitements, losange pour le test de la boucle, terminaux arrondis pour le début et la fin.
- 1 Initialisation : s ← 0 puis i ← 1, avant d'entrer dans la boucle.
- 2 Tant que i ≤ 4 (branche « Oui ») : on exécute s ← s + i × i puis i ← i + 1, et on revient tester la condition.
- 3 Dès que i ≤ 4 devient faux, c'est-à-dire à i = 5 (branche « Non ») : on sort de la boucle et on affiche s.
Ce qu'il faut lire : Suis la boucle « Oui » qui revient sur le losange tant que i ≤ 4 ; dès qu'elle devient fausse, la branche « Non » mène à l'affichage du résultat.
int s = 0; for (int i = 1; i <= 4; i++) { s = s + i * i; }, ce qui donne .❌ Une erreur, une suggestion
L'erreur fréquente
Attention à la borne de la boucle !
La suggestion
for (i = 0; i < 5; ...) fait itérations (), tandis que for (i = 0; i <= 5; ...) en fait (). La différence entre < et <= change le résultat — c'est une source d'erreur très fréquente en programmation !
💡 À retenir
- Un programme Arduino est structuré en
setup()(initialisation) etloop()(boucle infinie). for (i = 0; i < n; i++)s'exécute exactement fois. Attention :< net<= nne donnent pas le même résultat !- Pour trouver la valeur finale d'une variable, dérouler le programme itération par itération.
digitalRead/Write= binaire (/).analogRead= valeur –.
🏭 Application industrielle
Où retrouve-t-on ce principe en ingénierie ?
La programmation est au cœur des systèmes embarqués : elle permet de commander des robots, des drones, des objets connectés et des automates industriels. L'Arduino est la plateforme de référence pour l'apprentissage.
Mots-clés associés : VariableBoucleConditionFonctionArduino
La programmation est au cœur des systèmes embarqués : elle permet de commander des robots, des drones, des objets connectés et des automates industriels. L'Arduino est la plateforme de référence pour l'apprentissage.
Mots-clés associés : VariableBoucleConditionFonctionArduino