🎓 Accès élèves S'abonner — 7,99 €/mois Connexion 👤 Mon compte 🎨 Ma personnalisation 📖 Mode d'emploi 🔒 Se déconnecter 🚪 Sortir

Espace professeur

Connectez-vous pour accéder à vos ressources

Identifiants incorrects. Veuillez réessayer.
Mot de passe oublié ?
Technologie 3e › La porte automatique du 7-Eleven › De l'algorithme au programme › Séance 2 / 3
🚪 La porte automatique du 7-Eleven

De l'algorithme au programme

⏱ ~1h30
👤 3e · Binôme ou groupe
📚 MakeCode · Variables · Python

🎯 Où en est le projet ?

La séance dernière, vous avez lu le cahier des charges du client et construit la carte des données. Vous savez donc quelles données le système manipule. Aujourd'hui, vous allez écrire le programme qui les utilise vraiment.
Le client attend un système qui fonctionne. À la fin de cette séance, votre porte doit s'ouvrir au contact du doigt et se refermer après un délai que l'installateur peut régler au potentiomètre.
Questions
Q1 Le potentiomètre renvoie un nombre entre 0 et 1023. La pause du programme s'exprime en millisecondes. Comment passe-t-on de l'un à l'autre ?
Q2 Dans la carte des données, vous aviez écrit que duree_maintien était calculée. Où ce calcul va-t-il apparaître dans le programme ?
Q3 Un programme peut s'écrire en blocs ou en texte. Est-ce le même programme ? Qu'est-ce qui change ?
💡 Aujourd'hui : tu écris ton algorithme, tu le programmes en blocs, tu le testes sur la carte, puis tu découvres le même programme écrit en Python.
L'installateur règle le délai — clique pour agrandir

Ma progression

1
Écrire
l'algorithme
2
Programmer
les blocs
3
Tester
et régler
4
Passer
au Python
✓
Trace
réalisée

La progression se met à jour automatiquement — valide les étapes manuelles avec les boutons dans les consignes

📚 Lexique — Les mots clés

Cinq mots pour aujourd'hui. Les trois premiers, tu les utilises déjà sans le savoir !

📜 Algorithme

La suite d'actions à faire, écrite en français, avant de programmer.

📦 Variable

Une boîte avec un nom, qui garde une valeur pour la réutiliser plus tard.

🔄 Boucle

Une partie du programme qui se répète sans fin. Ici : le bloc toujours.

🔢 Condition

Un test : si quelque chose est vrai, alors on fait telle action.

↦ Indentation

Le décalage vers la droite d'une ligne de code. En Python, il dit ce qui est dedans.

📋 Travail à faire

📋
① Écris ton algorithme en français sur le dossier, avant de toucher à l'ordinateur.
② Programme les blocs dans MakeCode et téléverse sur la carte.
③ Teste et règle : vérifie que le potentiomètre change vraiment le temps d'attente.
④ Passe au Python et retrouve tes blocs dans le code écrit.
⑤ Réponds à la trace écrite, puis fais le quiz.

Dossier projet

📄 PDF 📄 Word
1
Écrire l'algorithme
⏱ 15 min · Dossier projet
On n'écrit jamais un programme directement. On décrit d'abord en français ce que la machine doit faire : c'est l'algorithme. Ensuite seulement, on le traduit en blocs.
①  Reprends les exigences E1 et E2 du cahier des charges.
②  Écris la suite des actions dans l'ordre, en commençant par : « au démarrage, la porte est fermée ».
③  Utilise les mots TOUJOURS, SI … ALORS et ATTENDRE.
④  N'oublie pas le calcul de la durée : d'où vient-elle ?
💡 Piste : ton algorithme tient en six lignes. S'il en fait quinze, tu es en train d'écrire le programme au lieu de le préparer.
📋 Écris ton algorithme dans le cadre prévu du dossier (page 5), puis complète le tableau 7 et réponds à la question 5. La question 6 se traite dans la trace écrite : inutile d'y répondre deux fois.
2
Programmer les blocs dans MakeCode
⏱ 30 min · MakeCode
Ton programme tient en sept blocs. Pas un de plus. S'il en faut davantage, c'est que quelque chose ne va pas.
Les blocs dont tu as besoin, et où les trouver
Le bloc Sa catégorie
régler position servo broche … à … Avancé → Broches
lire la broche numérique … Avancé → Broches
lire la broche analogique … Avancé → Broches
définir … à … Variables
si … alors  ·  le signe = Logique
le signe × (multiplication) Maths
pause (ms) Base
💡 La catégorie Broches est cachée : clique sur Avancé, tout en bas de la liste des catégories, pour la faire apparaître.
Crée d'abord ta variable
①  Catégorie Variables → Créer une variable…
②  Nomme-la exactement duree_maintien — le même nom que dans ta carte des données.
📋 Rien à noter dans le tableau 8 du dossier : les catégories sont dans le tableau des blocs ci-dessus.
🔌 Nouveau branchement : branche le servomoteur sur le port P2 du shield. Le capteur tactile et le potentiomètre restent sur P0 et P1.
📥 Charger puis tester
① En bas à gauche de MakeCode, clique sur Télécharger : le fichier arrive dans ton dossier Téléchargements.
② Glisse-le sur MICROBIT, comme en séance 1. La LED jaune clignote quelques secondes, puis c'est chargé.
③ Débranche le câble de la carte micro:bit et branche-le sur le port USB du shield.
⚠ Deux branchements différents : le câble sur la carte micro:bit sert à charger le programme, le câble sur le shield le fait fonctionner. Si tu oublies l'étape ③, ton programme sera juste mais le servomoteur ne bougera pas.
💾 Sauvegarde ton programme avant de partir. En bas à gauche de MakeCode, clique sur Télécharger et garde le fichier : tu en auras besoin à la séance 3, et ton projet ne te suivra pas forcément d'un poste à l'autre.
3
Tester et comprendre le calcul
⏱ 15 min · Banc d'essai
Ton programme calcule la durée avec une simple multiplication : durée = valeur du potentiomètre × 5.
✎ Ces trois calculs se font sur le papier, sans toucher au banc d'essai. On te donne une valeur, tu cherches le résultat.
1.  Si le potentiomètre envoie la valeur 200, quelle durée le programme calcule-t-il ?
ms
2.  La valeur maximale que peut envoyer le potentiomètre est 1023. Combien de secondes la porte reste-t-elle ouverte à ce réglage ? (arrondis à l'unité)
secondes
3.  L'installateur veut exactement 3 secondes. Quelle valeur le potentiomètre doit-il envoyer ?
(valeur du potentiomètre)
💡 Vérifie sur la carte : Potentiomètre au minimum, la porte se referme presque tout de suite. Potentiomètre à fond, elle reste ouverte environ 5 secondes. Si ce n'est pas le cas, relis ton bloc définir.
4
Le même programme, écrit en Python
⏱ 20 min · MakeCode, onglet Python
En haut de MakeCode, à côté de Blocs, clique sur la petite flèche et choisis Python. Ton programme ne change pas : il s'affiche autrement. Tu peux revenir aux blocs quand tu veux.
1duree_maintien = 0
2pins.servo_write_pin(AnalogPin.P2, 0)
3
4def on_forever():
5 global duree_maintien
6 duree_maintien = pins.analog_read_pin(AnalogReadWritePin.P1) * 5
7 if pins.digital_read_pin(DigitalPin.P0) == 1:
8 pins.servo_write_pin(AnalogPin.P2, 180)
9 basic.pause(duree_maintien)
10 pins.servo_write_pin(AnalogPin.P2, 0)
11basic.forever(on_forever)
Retrouve tes blocs dans le code

Pour chaque bloc, choisis la ligne Python qui lui correspond.

lire la broche numérique P0
lire la broche analogique P1
régler position servo P2 à 180
pause (ms)
toujours (la boucle)
Deux observations à faire
Observation 1.  Les lignes 8, 9 et 10 sont surlignées en vert. Qu'est-ce qui, dans leur écriture, montre qu'elles sont à l'intérieur du if ?
Observation 2.  Deux lignes se terminent par le signe : — les lignes 4 et 7. Que veut dire ce signe ?
📋 Rien à recopier dans le dossier : tes correspondances et tes observations partent dans ton PDF, et la trace écrite remplace la question 7. Laisse le tableau 9.

✍️ Trace écrite

1. POURQUOI UTILISE-T-ON UNE VARIABLE DUREE_MAINTIEN PLUTÔT QUE DE METTRE LE CALCUL DIRECTEMENT DANS LA PAUSE ?

Es-tu sûr(e) d'avoir besoin d'aide ?

Es-tu sûr(e) d'avoir terminé cette question ?

🟩 Aide — Imagine les deux versions

Écris mentalement la ligne pause avec le calcul complet dedans, puis compare-la à pause (duree_maintien).

  • Laquelle se lit le plus vite ?
  • Si tu voulais réutiliser cette durée ailleurs dans le programme, laquelle t'arrangerait ?
✕ Fermer
🔵 Défi — La panne invisible

Un collègue a écrit son programme sans variable, avec le calcul directement dans la pause. Son système fonctionne. Le client demande maintenant d'afficher la durée sur la matrice de LED. Pourquoi son choix va-t-il lui poser problème ?

✕ Fermer
2. EXPLIQUE CE QUE FAIT LE CALCUL VALEUR DU POTENTIOMÈTRE × 5. POURQUOI MULTIPLIER PAR 5 ET PAS PAR AUTRE CHOSE ?

Es-tu sûr(e) d'avoir besoin d'aide ?

Es-tu sûr(e) d'avoir terminé cette question ?

🟩 Aide — Regarde les deux extrêmes

Que vaut le calcul quand le potentiomètre est à 0 ? Et quand il est à 1023 ? Compare le second résultat à l'exigence E2 du cahier des charges.

✕ Fermer
🔵 Défi — Changer le réglage

Le client change d'avis : il veut maintenant un réglage de 0 à 10 secondes. Par combien faut-il multiplier ? Et s'il voulait de 0 à 2 secondes ? Écris la règle générale.

✕ Fermer
3. POURQUOI LE PYTHON A-T-IL BESOIN D'UNE RÈGLE D'ÉCRITURE POUR MONTRER CE QUI EST À L'INTÉRIEUR D'UN SI, ALORS QUE LES BLOCS N'EN AVAIENT PAS BESOIN ?

Es-tu sûr(e) d'avoir besoin d'aide ?

Es-tu sûr(e) d'avoir terminé cette question ?

🟩 Aide — Regarde la forme

Dans MakeCode, un bloc placé à l'intérieur d'un si est encastré dedans : c'est sa forme qui le montre, et on ne peut pas se tromper.

En Python, toutes les lignes ont exactement la même forme. Demande-toi ce qu'il reste alors pour dire où commence et où finit l'intérieur du si.

✕ Fermer
🔵 Défi — L'erreur invisible

Dans le code Python, un élève décale la ligne basic.pause(duree_maintien) complètement à gauche, au même niveau que le if. Le programme fonctionne encore, mais il ne fait plus la même chose. Décris ce que fait la porte après cette modification.

✕ Fermer
4. PENDANT QUE LA PORTE EST OUVERTE, LE PROGRAMME NE LIT PLUS LE CAPTEUR TACTILE. QUE SE PASSE-T-IL SI UN CLIENT TOUCHE LE BOUTON À CE MOMENT-LÀ ?

Es-tu sûr(e) d'avoir besoin d'aide ?

Es-tu sûr(e) d'avoir terminé cette question ?

🟩 Aide — Teste-le

Fais l'expérience sur ton banc d'essai : règle le potentiomètre au maximum, touche le capteur, puis touche-le encore pendant que la porte est ouverte. Observe.

Pendant la pause, la carte ne fait rien d'autre : elle attend.

✕ Fermer
🔵 Défi — Le client qui arrive trop tard

Un client arrive juste avant la refermeture et touche le bouton. La porte se referme quand même, puis se rouvre. C'est désagréable et ça use le moteur. Comment faudrait-il modifier le programme pour que le contact relance le délai au lieu d'être ignoré ? Décris l'idée, sans écrire le programme.

✕ Fermer
✓ Sauvegardé !

❓ Quiz — Vérifie tes connaissances

Question 1 / 4
Si le potentiomètre envoie la valeur 400, quelle durée le programme calcule-t-il ?
Question 2 / 4
Pourquoi multiplie-t-on la valeur du potentiomètre par 5 ?
Question 3 / 4
En Python, l'indentation (le décalage des lignes vers la droite)…
Question 4 / 4
Dans le code Python, comment sait-on que basic.pause(duree_maintien) ne s'exécute que lorsqu'on touche le capteur ?

🏆 J'ai réussi si…

🏆
✔ J'ai écrit mon algorithme avant de toucher à l'ordinateur.
✔ J'ai monté les sept blocs et téléversé le programme sur la carte.
✔ J'ai vérifié que le potentiomètre change vraiment le temps d'attente.
✔ Je sais dire ce que contient duree_maintien et d'où vient sa valeur.
✔ J'ai retrouvé dans le code Python les lignes correspondant à mes blocs.

🎬🎙️ Vidéo & Podcast

Algorithmique et programmation
➡️
Prochaine séance · Séance 3 / 3
Ça marche vraiment ?
→
🎓 Espace professeur S2 / 3

💻 Matériel

💻 1 ordi/groupe 🤖 micro:bit + shield Grove 🤖 Touch P0, potentiomètre P1, SG90 P2 💻 MakeCode

🎯 Compétences abordées

  • ►Programmer un algorithme lié à une nouvelle fonctionnalité
  • ►Associer les blocs de texte en langage Python aux blocs du programme initial qui remplissent les mêmes rôles
  • ►Réaliser et mettre au point un programme commandant un système réel incluant une interaction entre un humain et une machine
  • ►Associer des grandeurs analogiques issues d'un OST à des données exploitables
  • ►Socle commun (AFM5) — Élaborer un processus de conception et de réalisation dans un délai prescrit, avec des tâches identifiées
  • ►Socle commun (ECC11) — Disposer d'une culture du numérique, en maîtriser les usages et en apprécier les enjeux

⚠️ Points de vigilance pédagogiques

► Alimentation : le servomoteur entre en jeu cette séance. Le câble USB se branche sur la carte pour téléverser, puis sur le port du shield pour que le servo tourne. Oublié, le programme est bon et rien ne bouge. ► Sens du capteur tactile : le programme teste = 1 au contact. Si vos modules sont en logique inversée, remplacez par = 0 ici et dans le corrigé. Les deux sens sont justes, seule la cohérence compte. ► Erreur fréquente : la lecture du potentiomètre est placée au démarrage au lieu de la boucle. Le réglage semble alors ignoré alors que tout le reste est juste : c'est exactement la panne A de la séance 3. ► Bloc « cartographier » : il n'est pas utilisé ici. La conversion se fait par une simple multiplication par 5, plus accessible et suffisante pour couvrir l'exigence E2. Vérifiez que votre .hex corrigé applique bien la même formule. ► Lien avec la suite : pendant la pause, la carte ne lit plus le capteur : un contact à ce moment est ignoré. Ce n'est pas un bug, c'est le point de départ de la séance 3. Gardez le .hex corrigé en secours pour les groupes dont le programme ne tourne pas.
Clique n'importe où pour fermer

Cette séance vous a plu ?

Elle fait partie de l’abonnement collège : 96 séances de la 5e à la 3e, 20 évaluations de séquence, déroulements et corrections en .docx modifiables.

Sans engagement, résiliable en un clic. Un seul code classe pour toutes vos classes.

Retour en haut