Matières ⚙️ Sciences de l'Ingénieur Lycée Initiation à la programmation (Arduino/Python)
💻

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 (00 ou 11) ;
digitalWrite(pin, HIGH/LOW) : écrit un état binaire ;
analogRead(pin) : lit une tension analogique (retourne 00 à 10231023).

📖 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 1010 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. 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;xx commence à 55. Si on écrit x = x + 3;, alors xx passe à 88.
  2. 2 Dérouler les boucles itération par itération : Pour for (i = 0; i < n; i++), le bloc s'exécute nn 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 : s=0+1=1s = 0 + 1 = 1. Itération 2 : s=1+2=3s = 1 + 2 = 3. Itération 3 : s=3+3=6s = 3 + 3 = 6.
  3. 3 Évaluer les conditions avec les valeurs courantes : Pour chaque if, tester la condition avec les valeurs du moment. Si vraie → bloc if ; sinon → bloc else.
    Exemple : Si s=6s = 6 et la condition est if (s > 5), la condition est vraie → on exécute le bloc if.

✅ 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 :
  1. Initialisation : s=0s = 0.
  2. Itération i=1i = 1 : s=0+12=0+1=1s = 0 + 1^2 = 0 + 1 = 1.
  3. Itération i=2i = 2 : s=1+22=1+4=5s = 1 + 2^2 = 1 + 4 = 5.
  4. Itération i=3i = 3 : s=5+32=5+9=14s = 5 + 3^2 = 5 + 9 = 14.
  5. Itération i=4i = 4 : s=14+42=14+16=30s = 14 + 4^2 = 14 + 16 = 30.
  6. La boucle s'arrête car i=5>4i = 5 > 4. Valeur finale : s=30=12+22+32+42s = 30 = 1^2 + 2^2 + 3^2 + 4^2.
Réponse : La valeur finale de ss est 3030. C'est la somme des carrés : 12+22+32+42=301^2 + 2^2 + 3^2 + 4^2 = 30.

📏 Relations fondamentales

Boucle for (i = a; i < b; i++) → nombre d'itérations =ba= b - a
Boucle for (i = a; i <= b; i++) → nombre d'itérations =ba+1= b - a + 1
Somme des entiers de 11 à nn : S=n(n+1)2S = \dfrac{n(n+1)}{2}
Après kk itérations d'un incrément constant +c+c : valeur =init+k×c= \text{init} + k \times c
analogRead() retourne un entier entre 00 et 10231023 (CAN 1010 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.

Algorigramme de la boucle for calculant une somme de carrés Organigramme : debut, s recoit 0, i recoit 1, puis tant que i est inferieur ou egal a 4 on execute s recoit s plus i au carre et i recoit i plus 1 en bouclant sur le test, sinon on affiche s et on termine. Le deroulement donne s egal a 30. Début s ← 0 i ← 1 i ≤ 4 ? Oui s ← s + i × i i ← i + 1 Non Afficher s 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.
Algorigramme de l'exemple du cours : int s = 0; for (int i = 1; i <= 4; i++) { s = s + i * i; }, ce qui donne s=12+22+32+42=30s = 1^2 + 2^2 + 3^2 + 4^2 = 30.

❌ Une erreur, une suggestion

L'erreur fréquente

Attention à la borne de la boucle !

La suggestion

for (i = 0; i < 5; ...) fait 55 itérations (i=0,1,2,3,4i = 0, 1, 2, 3, 4), tandis que for (i = 0; i <= 5; ...) en fait 66 (i=0,1,2,3,4,5i = 0, 1, 2, 3, 4, 5). 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) et loop() (boucle infinie).
  • for (i = 0; i < n; i++) s'exécute exactement nn fois. Attention : < n et <= n ne 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 (00/11). analogRead = valeur 0010231023.

🏭 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