feat(inovmicro-exao): porte la fiche t04 prise en main de VS Code#176
Conversation
There was a problem hiding this comment.
Pull request overview
Ajoute une nouvelle fiche I-NOVMICRO (i04) pour démarrer avec la STeaMi en MicroPython via VS Code, et référence cette fiche dans le catalogue des ressources afin qu’elle apparaisse dans la section “Ressources”.
Changes:
- Ajout d’une entrée
i04-vscodedansresources.ts(catalogue/landing des ressources). - Création de
site/docs/inovmicro-exao/i04-vscode.mdavec le pas-à-pas (installation VS Code, firmware MicroPython, premier programme, usage dempremote).
Reviewed changes
Copilot reviewed 2 out of 6 changed files in this pull request and generated 6 comments.
| File | Description |
|---|---|
| site/src/data/resources.ts | Ajoute l’entrée catalogue pour exposer la nouvelle fiche VS Code dans la liste des ressources. |
| site/docs/inovmicro-exao/i04-vscode.md | Nouvelle fiche détaillant l’installation/configuration et un premier workflow MicroPython sur STeaMi avec VS Code. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| <span className="badge badge--primary">Sciences</span> | ||
| <span className="badge badge--info">SteaMi</span> | ||
| <span className="badge badge--warning">MicroPython</span> | ||
| <span className="badge badge--secondary">Thonny</span> |
| </div> | ||
| | Projet | Durée | Difficulté | Âge | Logiciel STeaMi testé | | ||
| | ------------- | ------- | ---------- | --------- | --------------------- | | ||
| | I-Novmicro #2 | 40 min | Intermédiaire | 11-99 ans | 0.23.1 | |
| </figcaption> | ||
| </figure> | ||
|
|
||
| Pour programmer en MicroPython avec VS Code, vous n'avez besoin d'aucune extension. Pour créer un nouveau projet, vous devrez simplement créer un nouveau dossier pour votre projet et y ajouter un fichier `.py` qui contiendra votre code MicroPython. |
| <figure style={{textAlign: 'center', margin: '1rem auto'}}> | ||
| <img | ||
| src="/img/ressources/inovmicro-exao/i04-vscode/installer.png" | ||
| alt="Fenêtre principale de Visual Studio Code au premier démarrage" |
| - Si ce n'est pas déjà fait, ouvrez le terminal intégré de VS Code (Menu `Terminal > New Terminal` ou raccourci `Ctrl+J`). | ||
| - Dans le terminal, lancez la commande `mpremote connect auto fs cp chemin/projet.py :main.py` puis `mpremote connect auto reset` pour exécuter le programme. | ||
|
|
||
| **Programme temporaire :** | ||
| - Ouvrez le terminal intégré de VS Code (Menu `Terminal > New Terminal` ou raccourci `Ctrl+J`). | ||
| - Dans le terminal, lancez la commande `mpremote connect auto run chemin/projet.py` pour exécuter le programme sans le copier sur la carte. |
| - Ouvrez le terminal intégré de VS Code (Menu `Terminal > New Terminal` ou raccourci `Ctrl+J`). | ||
| - Dans le terminal, lancez la commande `mpremote connect auto run chemin/projet.py` pour exécuter le programme sans le copier sur la carte. | ||
|
|
||
| :::tip[info Un programme est déjà en cours d'exécution] |
Rebase de la fiche initialement nommée i04-vscode sur main et renommage en t04-vscode pour respecter la convention iNN-/tNN- : - t = fiches enseignant·es éditeurs (t01-t05), i = ports Let's STEAM - i04 est déjà pris (i04-capteur-lumiere) - le dossier images t04-vscode/ existait déjà comme placeholder Renommages mécaniques appliqués : - nom de fichier i04-vscode.md → t04-vscode.md - frontmatter id, slug - 4 src d'images i04-vscode/ → t04-vscode/ - entrée catalogue resources.ts (id, slug, thumbnail, section: 'Prise en main') Corrections complémentaires mécaniques : - src cassé i03-thonny/02-drag-drop-firmware.gif → t03-decouverte-thonny/... (le GIF de glisser-déposer du firmware a déménagé lors du refactor #102) - badge mal cassé « vsCode » → « VS Code » - typo « REPLet revenir » → « REPL et revenir » Reste à compléter côté Aline avant merge (cf. revue) : - ajouter la section ## Aller plus loin (Pour comprendre / Pour s'inspirer) - recapturer page.png pour masquer le panneau « Recent » (chemins persos) Closes #21
4acc00b to
96fd500
Compare
|
Images automagically compressed by Calibre's image-actions ✨ Compression reduced images by 67.3%, saving 280.8 KB.
|
nedseb
left a comment
There was a problem hiding this comment.
Merci pour la fiche Aline, le contenu est bien. Comme la branche avait été ouverte avant le refactor de renumérotation #102 (14 mai), elle accumulait un retard structurel qui rendait le merge bloqué. Je viens de pousser un commit qui fait le rebase + renommage mécanique (96fd500, force-push). Tu vas devoir refaire un git pull --force ou un fresh clone sur ta branche locale (l'historique a été réécrit).
Ce que le commit a fait
- Rebase sur main actuel (résolution du conflit dans
resources.ts, prise en compte du dossier images renommé t04-vscode/). - Renommage i04 → t04 partout :
site/docs/inovmicro-exao/i04-vscode.md→t04-vscode.mdsite/static/img/ressources/inovmicro-exao/i04-vscode/*→t04-vscode/*frontmatter.id, les 4src=du markdown, l'id/slug/thumbnaildu catalogue
- Image cassée corrigée :
i03-thonny/02-drag-drop-firmware.gif→t03-decouverte-thonny/02-drag-drop-firmware.gif(le GIF de glisser-déposer du firmware a déménagé lors du refactor #102 et ton lien pointait dans le vide). - Badge mal cassé :
<span>vsCode</span>→<span>VS Code</span>. - Typo :
Quitter le REPLet revenir au terminal→REPL et revenir.
format:check, lint:md, lint:spell, lint:crosslinks et site:build passent tous au vert localement.
…s, captures) - Ajoute la section ## Aller plus loin obligatoire (Pour comprendre / Pour s'inspirer / Pour approfondir) suivant le modèle t03 et la convention CONVENTIONS.md - Renomme icone.png → VSCode.png pour rester cohérent avec les autres fiches éditeur (Thonny.png, Mu_editor.png, Vittascience_editor.png) - Supprime le placeholder Vs_code.png laissé par le refactor #102 (non référencé) - Floute la zone « Recent » de page.png pour masquer les chemins personnels exposés - « VS Code version 1.60.0 ou supérieure » → « VS Code récent » (la version exacte n'est pas vraiment vérifiable et VS Code se met à jour automatiquement) - Rend les figcaptions plus actives (instructions plutôt que descriptions neutres) Refs #21
|
J'ai poussé un commit complémentaire fd1cdb2 qui adresse les points restants de ma revue :
Tous les checks locaux passent ( Tu peux faire un |
L'image montrait la page de téléchargement officielle de VS Code, ce qui n'apportait pas d'information par rapport au lien vers le site officiel déjà présent dans le paragraphe au-dessus. Refs #21
…dans t04-vscode La section « Exécution » d'origine se limitait à « tapez pip install mpremote » et se heurtait à plusieurs cas réels d'environnement : - PEP 668 sur Ubuntu 24.04+, Debian 12+, Fedora 38+, Homebrew Python macOS : pip install global refusé (externally-managed-environment). - PATH après pip install --user : commande mpremote introuvable. - Postes verrouillés sans droits administrateur en salle informatique. Restructuration en deux sous-sections : - « Installer mpremote » : pipx en headline (cohérent avec t03 qui utilise déjà pipx pour Thonny), prérequis Python 3 mentionné, lignes d'install de pipx par OS. Deux callouts pour les cas particuliers PEP 668 et PATH non trouvé. Repli venv détaillé pour les postes verrouillés sans droits admin. - « Exécuter le programme » : programme persistant / programme temporaire (inchangé), callout pour les permissions /dev/ttyACM* sur Linux pointant vers depannage. Ajoute pipx, venv et ensurepath au dictionnaire cspell. Refs #21
VS Code traite par défaut les fichiers .py comme du texte brut : sans Python+Pylance il n'y a ni coloration enrichie ni autocomplétion. Et même avec, Pylance ne connaît pas les modules MicroPython (machine, time.sleep_ms, etc.) sans stubs. Ajouts : - Étape 1, nouvelle sous-section « Installer les extensions VS Code essentielles » : Python par Microsoft (ms-python.python) avec Pylance bundlée, point d'entrée incontournable. - Étape 2, nouvelle sous-section « Variante : workflow intégré avec MicroPico » : présente l'extension MicroPico comme alternative graphique à mpremote en CLI (boutons Run / Upload / Toggle REPL), avec un callout qui explique pourquoi la fiche garde quand même mpremote en headline (automatisation, compréhension, SSH). - Étape 3, nouvelle sous-section « Activer l'autocomplétion sur les modules MicroPython » : explique l'installation de micropython-stdlib-stubs dans un venv projet, mentionne le repo josverl/micropython-stubs pour les stubs par port (stm32 pour STeaMi), et un callout sur la limite des modules spécifiques STeaMi avec deux contournements (typings/ + extraPaths, ou ignorer). Ajoute « stdlib » au dictionnaire cspell. Refs #21
Le paragraphe limite pointe désormais vers la feature request ouverte chez steamicc/micropython-steami-lib qui suit la publication d'un paquet micropython-steami-stubs sur PyPI. En attendant, les deux contournements (typings/ + extraPaths, ou ignorer) restent valides. Refs #21
|
|
||
| ### Pour comprendre | ||
|
|
||
| - **[VS Code (Wikipédia)](https://fr.wikipedia.org/wiki/Visual_Studio_Code)** : lancé par Microsoft en 2015, VS Code est un éditeur **libre** (licence MIT) qui repose sur le framework Electron, la même technologie qui fait tourner Slack, Discord ou Spotify. Une application web déguisée en application de bureau, qui peut ajouter des fonctionnalités via des extensions écrites en JavaScript. |
Met la fiche en conformité avec les CONVENTIONS.md : Objectifs d'apprentissage : remet l'intro obligatoire « À la fin de cette activité, l'élève sera capable de... », chaque puce commence maintenant par un verbe d'action observable en gras (Installer, Distinguer, Écrire, Utiliser, Faire le lien, Adapter), et la dernière ouvre sur la transposition à d'autres cartes MicroPython. De quoi parle-t-on : remplace l'ouverture technique par trois situations concrètes (série TV, YouTubeur, Word/Google Docs) avant d'introduire le concept d'éditeur de code. Ajoute le callout :::info[Composants intégrés, rien à câbler] pour la LED RGB et les boutons A/B (équivalent du pattern « Capteurs intégrés » des autres fiches I-NOVMICRO). Identifiants Python en français explicite ASCII selon le tableau de renommage de CONVENTIONS.md : - led_r/g/b → led_rouge/verte/bleue - btn_a/b → bouton_a/b - set_rgb → regler_led(rouge, verte, bleue) - a_pressed → bouton_a_appuye, idem b Les noms de broches firmware (LED_RED, A_BUTTON, etc.) restent en anglais comme la convention le précise. Tableau « Brochage utilisé » mis à jour pour distinguer broche STeaMi et variable Python. « Firmware » retiré de la prose visible (titre H3, paragraphe d'introduction, alt text de l'image hex.png) : remplacé par « MicroPython » directement comme la convention le demande. Conservé dans les noms de fichiers releases (steami-micropython-firmware-...hex) et dans le commentaire de tête du code Python où le mot est toléré. Vouvoiement appliqué à l'ouverture concrète (« Vous avez déjà vu... »). Refs #21
|
Suite de la revue (relecture plus exhaustive après ton merci pour le rebase + Aller plus loin). Commit 1cc8836 pousse les conformités CONVENTIONS.md restantes :
Tous les checks locaux passent ( À ce stade je ne vois plus de violation de convention restante. La PR est techniquement prête à merger côté contenu et structure. Si tu valides ces choix de refonte (notamment les nouveaux identifiants Python, et l'ouverture concrète qui change le ton du « De quoi parle-t-on »), je peux dismisser ma revue |
Deux correctifs ciblés après lecture des inline comments du copilot-pull-request-reviewer : 1. Raccourci pour ouvrir le terminal VS Code : Ctrl+J n'est pas le raccourci « New Terminal » mais le « Toggle Panel » (qui peut afficher Terminal, Output ou Problems selon l'état). Remplacé par le raccourci correct par OS : Ctrl+` sur Windows/Linux, Cmd+` sur macOS, avec fallback Menu Terminal > New Terminal. 2. Licence VS Code : la formulation « éditeur libre (licence MIT) » était inexacte. Code-OSS (le code source amont) est sous MIT, mais la distribution officielle « Visual Studio Code » (depuis code.visualstudio.com) ajoute télémétrie, marque et extensions propriétaires (debugger C++ notamment), donc tombe sous licence Microsoft. Reformulation qui distingue les deux et renvoie vers VSCodium comme variante 100 % libre. Les autres comments Copilot (badge Thonny, difficulté incohérente fiche/catalogue, phrase « aucune extension », alt installer.png, syntaxe :::tip[info]) étaient déjà résolus par les commits précédents ou par les ajustements d'Aline. Refs #21
|
Relecture des 7 inline comments du Adressés par 6e249cd
Déjà résolus par les commits précédents ou par les ajustements d'Aline
Avec ce commit, je considère que tous les retours de revue (les miens + les 7 de Copilot) sont adressés. |
… liens, conventions) P1 — Paquet stubs corrigé. micropython-stdlib-stubs ne contient pas machine.pyi (vérifié dans un venv frais) : Pylance continuait à souligner « Import "machine" could not be resolved » malgré la procédure documentée. Remplacement par micropython-stm32-stubs qui contient effectivement machine.pyi pour le port STM32 (STeaMi = STM32WB55) et tire micropython-stdlib-stubs comme dépendance. P2a — Portée de MicroPico recadrée. La page Marketplace (paulober.pico-w-go) cible officiellement Raspberry Pi Pico / Pico W, les autres cartes n'étant qu'en support expérimental. La fiche affirmait à tort que MicroPico marche avec « n'importe quelle carte MicroPython ». Renommage de la section en « Variante à tester », ajout d'un callout :::caution[Périmètre officiel limité au Raspberry Pi Pico] explicite, et softening des deux autres mentions (objectif d'apprentissage et paragraphe d'intro Étape 1). mpremote en CLI reste positionné comme le chemin garanti. P2b — Deux liens cassés corrigés (la PR affirmait « liens externes vérifiés », ce qui n'était pas le cas) : - code.visualstudio.com/learn/collaboration/live-share → 404 remplacé par visualstudio.microsoft.com/services/live-share/ (200) - fr.wikipedia.org/wiki/Guerre_des_éditeurs → 404 (la page FR n'existe pas) remplacé par en.wikipedia.org/wiki/Editor_war (200), avec mention que la page n'existe qu'en anglais. P3 — Conventions : - :::tip[Un programme déjà en cours d'exécution] → :::info[...] (la convention réserve :::tip aux ressources imprimables, pas au dépannage non imprimable) - 4 em-dashes (l.58, 198, 389, 391) remplacés par « : », « ; » ou parenthèses selon le contexte (convention interdit em/en-dashes) - Lien Electron qui utilisait la syntaxe interdite ](<https://...>) pour gérer les parenthèses dans l'URL : URL-encodées en %28/%29 à la place, comme la convention le préconise. Refs #21
…ct test) Tests pratiques sur la STeaMi montrent que MicroPico (paulober.pico-w-go 4.3.4) est inutilisable en classe sans patch invasif du bundle : - Connect : refuse par filtre VID/PID hardcodé même avec manualComDevice défini. Bug upstream paulober/MicroPico#285 ouvert sans résolution depuis février 2025. - Avec patch des arrays ht/gt de extension.js (ajout VID 0x0d28 et PID 0x0204) : Connect/Run/REPL fonctionnent, mais Upload échoue silencieusement avec « Failed to execute script on Pico » — la fonctionnalité phare pour la classe (install persistante en un clic) reste cassée. - Patch réécrit à chaque mise à jour de l'extension. Refonte de la section « Variante à tester : workflow intégré avec MicroPico » en callout :::caution explicite qui détaille les résultats empiriques et déconseille le déploiement. mpremote en CLI reste positionné comme le chemin garanti. Nettoyage des deux mentions résiduelles MicroPico dans l'Étape 1 (objectif d'apprentissage et paragraphe d'introduction) pour cohérence. Pylance + stubs micropython-stm32-stubs restent recommandés (indépendants de MicroPico, validés en pratique : tooltip « (constant) OUT: int = 1 » s'affiche sur Pin.OUT). Ajoute « Pymakr » et « paulober » au dictionnaire cspell. Refs #21
…e stm32python Relecture éditoriale de la fiche pour resserrer le ton et simplifier la structure : - Étape 1 absorbe la mise en place complète : installer mpremote (auparavant en Étape 2) est désormais regroupé avec « Installer MicroPython sur la STeaMi », plus logique car il s'agit d'outils de préparation avant d'écrire le moindre code. - Étape 2 ne contient plus que ce qui touche au programme : explication matérielle, code, exécution. Plus court et plus focus. - Section « Extensions MicroPython graphiques : déconseillées » et son :::caution MicroPico retirés. Une mention courte reste dans l'intro d'Étape 1 (« Les extensions VS Code pour MicroPython (MicroPico, Pymakr...) ne supportent pas la STeaMi à ce jour »), suffisante pour prévenir un·e enseignant·e curieux·se sans alourdir la fiche. - Callout :::info[La commande mpremote n'est pas reconnue ?] retiré (cas particulier mineur, l'utilisateur·rice avancé·e saura diagnostiquer un PATH manquant). - Plusieurs resserrements de prose ; reformulations qui s'éloignent du jargon vague (« presque pas » → « pas », « une résistance présente » → « des résistances présentes », « Brochage utilisé » → « Broches utilisées »). Ajout dans « Pour approfondir » du guide francophone mpremote sur stm32python.gitlab.io, qui complète utilement la doc officielle pour les enseignant·es. Refs #21
Rebase de la PR initiale (branche feat/inovmcro-python pré-datant le merge de #176) sur main actuel, renommage et ajout propre : - Fichier nommé conformément à la convention iNN/tNN : t06-base-language.md → t06-bases-langage.md (le dossier images était déjà t06-bases-langage/). - Frontmatter id corrigé en t06-bases-langage. - Nouvelle entrée resources.ts insérée à côté de t04-vscode dans la section « Prise en main », sans détruire t04 (la PR d'origine écrasait l'entrée t04 dans le catalogue par effet de bord du rebase). - package-lock.json non touché (les -32 lignes du diff initial étaient un effet de bord d'un npm install local non maitrisé). - .cspell/wikilab.txt non touché (les -9 lignes du diff initial étaient l'annulation involontaire des ajouts cspell de #176). Le contenu de la fiche est conservé tel quel à ce stade. Les corrections de conformité aux CONVENTIONS.md (objectifs d'apprentissage, identifiants Python en français, callouts, section Aller plus loin, intro REPL/firmware) suivent dans un commit séparé. Refs #23
…#178) * feat(inovmicro-exao): ajoute la fiche t06 bases du langage MicroPython Rebase de la PR initiale (branche feat/inovmcro-python pré-datant le merge de #176) sur main actuel, renommage et ajout propre : - Fichier nommé conformément à la convention iNN/tNN : t06-base-language.md → t06-bases-langage.md (le dossier images était déjà t06-bases-langage/). - Frontmatter id corrigé en t06-bases-langage. - Nouvelle entrée resources.ts insérée à côté de t04-vscode dans la section « Prise en main », sans détruire t04 (la PR d'origine écrasait l'entrée t04 dans le catalogue par effet de bord du rebase). - package-lock.json non touché (les -32 lignes du diff initial étaient un effet de bord d'un npm install local non maitrisé). - .cspell/wikilab.txt non touché (les -9 lignes du diff initial étaient l'annulation involontaire des ajouts cspell de #176). Le contenu de la fiche est conservé tel quel à ce stade. Les corrections de conformité aux CONVENTIONS.md (objectifs d'apprentissage, identifiants Python en français, callouts, section Aller plus loin, intro REPL/firmware) suivent dans un commit séparé. Refs #23 * docs(inovmicro-exao): refonte t06-bases-langage selon CONVENTIONS.md Réécriture complète du contenu pour mise en conformité avec les CONVENTIONS.md et enrichissement pédagogique : Intro REPL et découverte du firmware (idée du reviewer, source stm32python.gitlab.io/fr/docs/Micropython/firmware) : - Nouvelle sous-section « Explorer la STeaMi via le REPL » en tête d'Étape 1 : présente le REPL, l'explore avec dir() / help() / import, montre l'inspection des modules disponibles (machine, time, random, steami_screen, drivers internes), donne quelques commandes à tester (LED + arithmétique + concaténation), et liste les raccourcis essentiels. - Callout :::info qui explique le `>>>` (l'invite, pas du code à recopier) — pattern de la convention pour les blocs REPL. - Callout :::info qui contextualise REPL vs fichier `main.py` (exploration vs persistance). Objectifs d'apprentissage : remet l'intro obligatoire « À la fin de cette activité, l'élève sera capable de... », chaque puce démarre par un verbe d'action en gras (Distinguer, Écrire, Construire, Définir, Explorer, Adapter), la dernière ouvre sur la transposition à d'autres petits programmes interactifs. De quoi parle-t-on : ouverture concrète (Python à la NASA / dans les séries / sur Instagram) avant d'introduire le concept de microcontrôleur. Ajoute le callout :::info[Composants intégrés, rien à câbler] pour la LED RGB et les boutons. Identifiants Python francisés selon CONVENTIONS.md : - Variables d'exemple : x/y/name/is_active → age/prix/prenom/vivant - Code du jeu : led_r/b → led_rouge/bleue, btn_a/b → bouton_a/b, choice() → lire_choix_joueur(), user_choice → choix_joueur, card_choice → choix_carte, valeurs 'red'/'blue' → 'rouge'/'bleu'. - Fonction d'exemple : greet(name) → saluer(prenom), print(f"Hello, {name}!") → print(f"Bonjour, {prenom} !"). - Ajout d'une seconde fonction annoncer_carte() pour montrer la factorisation en deux responsabilités. Tableau « Composant / Nom dans le programme » scindé en trois colonnes (broche STeaMi / variable Python / comportement), comme t04 corrigée. Commentaire `# Testée avec firmware STeaMi 0.23.1` ajouté en tête du code (toléré dans les commentaires de code par la convention). Callout :::warning[variables] (type non standard, titre minuscule) remplacé par :::info[Typage dynamique : un atout à manier avec prudence] avec un texte plus directif. Section « Exécution du programme (Thonny) » rendue éditeur- agnostique : ne mentionne plus Thonny en dur, parle de « lancer depuis l'IDE » et d'enregistrer sous `main.py`. Aller plus loin restructuré selon la convention : trois sous-sections « Pour comprendre » (histoire de Python, MicroPython, REPL, Zen de Python), « Pour s'inspirer » (Astro Pi, Python à la NASA/SpaceX, Advent of Code, France-IOI), « Pour approfondir » (docs techniques avec lien vers la page firmware stm32python qui a inspiré l'intro). Plus quelques resserrements et reformulations mineures de prose, suppression de l'espace en début de ligne 10 du SVG. Refs #23 * docs(inovmicro-exao): ajoute help('modules') dans l'exploration REPL t06 Complète la sous-section « Inspecter ce qui est déjà chargé » de l'Étape 1 avec une troisième commande exploratoire : - `dir()` (sans argument) : ce qui est déjà chargé au démarrage, pour distinguer chargé vs disponible. - `help('modules')` (nouveau) : tout ce qui est disponible à l'import, incluant les drivers spécifiques STeaMi figés dans le firmware (apds9960, bq27441, hts221, ism330dl, lis2mdl, mcp23009e, ssd1327, steami_screen, vl53l1x, etc.). Pédagogiquement utile pour matérialiser que les drivers ne sont pas magiques mais sont des modules Python embarqués. - `dir(machine)` puis `help(machine.Pin)` : zoom sur un module choisi. La sortie `help('modules')` collée provient d'une exécution réelle sur une STeaMi 0.23.1. Refs #23 * docs(inovmicro-exao): enrichit t06 avec listes, opérateurs, f-strings, conversion Quatre ajouts pédagogiques dans l'Étape 1, motivés par des lacunes repérées à la relecture : - f-strings : la fiche utilisait `f"Bonjour, {prenom} !"` dans l'exemple `saluer()` sans avoir présenté la syntaxe. Ajout d'un paragraphe dans « Les variables » avec deux exemples, juste après le premier `print(...)`. - Conversion de type : suite logique du callout sur le typage dynamique. `int("15")`, `float("3.14")`, `str(15)`, `bool(0)`, et mention que les conversions impossibles lèvent une erreur qu'on attrapera plus tard avec `try / except`. - Nouvelle sous-section « Les opérateurs » entre Variables et Conditions : tableau des quatre familles (arithmétique, comparaison, logique, affectation), exemples REPL avec les pièges habituels (`/` vs `//`, `=` vs `==`). - Nouvelle sous-section « Les listes » : c'était la lacune la plus gênante puisque le programme final utilise `['rouge', 'bleu']` et `random.choice([...])` sans que les listes aient jamais été présentées. Couvre la création, l'accès par index (positif et négatif), `len()`, `append()`, `in`, et l'itération `for ... in ...`, avec le lien explicite vers `random.choice` qu'on retrouvera à l'Étape 2. Objectif d'apprentissage n°1 mis à jour pour mentionner les listes et les opérateurs : « Distinguer les principaux types de variables Python (entier, décimal, chaîne de caractères, booléen, liste) et les combiner avec les opérateurs du langage (arithmétiques, de comparaison, logiques) ». Refs #23 * docs(inovmicro-exao): renomme t06-bases-langage → t06-bases-micropython Le slug `t06-bases-langage` était ambigu (« langage de quoi ? »). Le nouveau `t06-bases-micropython` est explicite sur la cible. Renommages mécaniques : - Fichier : t06-bases-langage.md → t06-bases-micropython.md - Dossier images : t06-bases-langage/ → t06-bases-micropython/ - Frontmatter id, src de l'image dans le markdown - Entrée catalogue resources.ts : id, slug, thumbnail Le titre affiché (« Bases du langage : Prise en main de MicroPython ») et le sidebar_label (« Bases du langage ») restent inchangés : c'est l'identifiant technique qui devient explicite, pas la présentation. Suppression au passage du .gitkeep résiduel du dossier images (devenu inutile puisque icone.png y est désormais présent). Refs #23 * chore(inovmicro-exao): retire .gitkeep résiduel du dossier t06-bases-micropython Le fichier .gitkeep était là pour préserver le dossier vide à l'époque où il n'avait pas encore d'icone. Maintenant qu'icone.png est en place, il n'a plus d'utilité. Refs #23 * fix(inovmicro-exao): met à jour les références internes au slug t06-bases-micropython Le commit de rename précédent (8416e8e) n'avait inclus que les renommages de fichiers/dossier (stagés par git mv) mais pas les modifications de contenu qui mettent à jour les références internes : - Frontmatter `id` dans le markdown (encore t06-bases-langage) - `src` de l'image dans le header - Champs `id`, `slug`, `thumbnail` de l'entrée catalogue Sans ce fix la fiche ne se serait pas affichée correctement (chemin d'image cassé) et l'`id` du frontmatter serait incohérent avec le nom de fichier. Build local revérifié vert. Refs #23 * fix(inovmicro-exao): clarifie 'pull-up externes' pour les boutons t06 Suite au commentaire Copilot : la fiche disait « résistance interne câblée sur la carte » dans le commentaire de fonctionnement de l'Étape 2. C'est techniquement ambigu : "interne" prête à confusion avec la pull-up interne du microcontrôleur (différente, désactivée en convention STeaMi). Reformulation alignée sur CONVENTIONS.md §« Boutons : pas de Pin.PULL_UP » : « Les boutons disposent de résistances pull-up externes câblées directement sur la carte STeaMi (à ne pas confondre avec la pull-up interne du microcontrôleur) : elles maintiennent leur valeur à 1 au repos, donc on ne déclare rien de plus côté code. » Refs #23 --------- Co-authored-by: Sébastien NEDJAR <sebastien@nedjar.com>
Rebase de la PR initiale (qui pré-datait les merges de #176 et #178) sur main actuel et insertion de t04-vscode et t06-bases-micropython qui manquaient. Retire le sous-classement par `section` des 17 fiches inovmicro-exao : la `ProjectPage` repasse automatiquement en liste plate (le composant gère déjà ce cas avec `hasSections = projectResources.some((r) => r.section)`). Ordre final, progressif : 1. Découverte decouverte-steami 2. Éditeur Thonny t03-decouverte-thonny 3. Éditeur VS Code t04-vscode 4. Bases du langage t06-bases-micropython 5-16. Fiches élèves (ordre Let's STEAM) i01-led → i03-boutons → i04-capteur-lumiere → i06-code-morse → i07-musique → i08-theremine → i09-inclinaison-accelerometre → i10-texte-oled → i11-thermometre-lisible → i12-alarme-mouvement → i14-minuteur-electronique → i15-collecter-donnees 17. Transverse depannage t04 (VS Code) se range après t03 (Thonny) car même catégorie « éditeur ». t06 (bases du langage) s'insère entre les éditeurs et les fiches élèves comme transition pédagogique naturelle. Closes #182
…et (#183) Rebase de la PR initiale (qui pré-datait les merges de #176 et #178) sur main actuel et insertion de t04-vscode et t06-bases-micropython qui manquaient. Retire le sous-classement par `section` des 17 fiches inovmicro-exao : la `ProjectPage` repasse automatiquement en liste plate (le composant gère déjà ce cas avec `hasSections = projectResources.some((r) => r.section)`). Ordre final, progressif : 1. Découverte decouverte-steami 2. Éditeur Thonny t03-decouverte-thonny 3. Éditeur VS Code t04-vscode 4. Bases du langage t06-bases-micropython 5-16. Fiches élèves (ordre Let's STEAM) i01-led → i03-boutons → i04-capteur-lumiere → i06-code-morse → i07-musique → i08-theremine → i09-inclinaison-accelerometre → i10-texte-oled → i11-thermometre-lisible → i12-alarme-mouvement → i14-minuteur-electronique → i15-collecter-donnees 17. Transverse depannage t04 (VS Code) se range après t03 (Thonny) car même catégorie « éditeur ». t06 (bases du langage) s'insère entre les éditeurs et les fiches élèves comme transition pédagogique naturelle. Closes #182 Co-authored-by: Sébastien NEDJAR <sebastien@nedjar.com>
Rebase de la PR initiale sur main actuel (la branche pré-datait les merges de #176, #177, #178, #181, #183, #185, #186, #188, #190). Si on avait mergé brut, on aurait supprimé t04-vscode.md, t06-bases- micropython.md, les modifs de callouts de #185, les tableaux d'en-tête projets-du-lab de #190, les 3 photos i14 de #177, etc. Approche : reset hard sur main, reposer juste le markdown + 4 images référencées, ajouter une nouvelle entrée resources.ts entre t04 et t06 (et non pas à la place de l'une d'elles). Détails : - Markdown : t05-vittascience.md (276 lignes) inchangé tel que poussé par Aline. - Images : block.png, icone.png, installation.png, ligne.png (4 images référencées par le markdown). - L'image vittascience_editor.png poussée par Aline (en minuscules) est ignorée : elle n'est pas référencée par le markdown, et le placeholder Vittascience_editor.png déjà sur main (depuis le refactor #102) reste intact. - .gitkeep retiré du dossier (devenu inutile avec icone.png en place). - Entrée resources.ts insérée entre t04 et t06 (ordre logique t03/t04/ t05/t06), SANS champ `section` pour cohérence avec le ménage de #183. - package-lock.json et .cspell/wikilab.txt non touchés (les diffs initiaux étaient des effets de bord pré-mergeurs, à abandonner). Le contenu de la fiche est conservé tel quel à ce stade. Les corrections de conformité aux CONVENTIONS.md suivent dans un commit séparé. Refs #22
#179) * feat(inovmicro-exao): ajoute la fiche t05 Vittascience (rebase) Rebase de la PR initiale sur main actuel (la branche pré-datait les merges de #176, #177, #178, #181, #183, #185, #186, #188, #190). Si on avait mergé brut, on aurait supprimé t04-vscode.md, t06-bases- micropython.md, les modifs de callouts de #185, les tableaux d'en-tête projets-du-lab de #190, les 3 photos i14 de #177, etc. Approche : reset hard sur main, reposer juste le markdown + 4 images référencées, ajouter une nouvelle entrée resources.ts entre t04 et t06 (et non pas à la place de l'une d'elles). Détails : - Markdown : t05-vittascience.md (276 lignes) inchangé tel que poussé par Aline. - Images : block.png, icone.png, installation.png, ligne.png (4 images référencées par le markdown). - L'image vittascience_editor.png poussée par Aline (en minuscules) est ignorée : elle n'est pas référencée par le markdown, et le placeholder Vittascience_editor.png déjà sur main (depuis le refactor #102) reste intact. - .gitkeep retiré du dossier (devenu inutile avec icone.png en place). - Entrée resources.ts insérée entre t04 et t06 (ordre logique t03/t04/ t05/t06), SANS champ `section` pour cohérence avec le ménage de #183. - package-lock.json et .cspell/wikilab.txt non touchés (les diffs initiaux étaient des effets de bord pré-mergeurs, à abandonner). Le contenu de la fiche est conservé tel quel à ce stade. Les corrections de conformité aux CONVENTIONS.md suivent dans un commit séparé. Refs #22 * docs(inovmicro-exao): refonte t05-vittascience selon CONVENTIONS.md Mise en conformité du contenu : De quoi parle-t-on : ouverture concrète sur ce que les élèves connaissent déjà (Scratch, code.org, blocs sur calculatrice) avant d'introduire Vittascience. Ajout du callout :::info[Composants intégrés, rien à câbler] pour la LED RGB et les boutons. Objectifs d'apprentissage : « Comprendre » (non observable selon la convention) remplacé par « Expliquer ». Ajout de deux objectifs : « Téléverser » + faire la différence éphémère/persistant, et « Adapter » à un autre éditeur (verbe de transposition demandé par la convention). 4 → 6 puces. Code Python : passage de l'API `pyb` (ancien style MicroPython) à l'API `machine` qui est la convention adoptée dans toutes les fiches I-NOVMICRO : pyb.LED(1)/(2)/(3) → Pin('LED_RED'/'LED_GREEN'/'LED_BLUE', Pin.OUT) pyb.Pin('A_BUTTON') → Pin('A_BUTTON', Pin.IN) Identifiants Python francisés selon le tableau de renommage des CONVENTIONS.md : led1_blue / led2_green / led3_red → led_bleue / led_verte / led_rouge a_button / b_button → bouton_a / bouton_b blink(led) → regler_led(rouge, verte, bleue) (factorisé en un seul appel) Logique de la boucle réécrite pour matcher exactement la table descriptive : A seul = rouge, B seul = vert, A+B = bleu. L'ancienne version inversait les couleurs et ne couvrait pas le cas « aucun bouton appuyé ». Ajout d'un commentaire de tête expliquant le mapping. Tableau « Brochage utilisé » → « Broches utilisées », scindé en quatre colonnes (composant / broche STeaMi / variable Python / comportement) comme dans t04 et t06. Section « Fonctionnement du programme » → « Comment ça fonctionne ? » réécrite pour décrire le nouveau code avec un focus sur le pattern qui sera réutilisé ailleurs (factorisation en fonction). REPL d'exemple : aligné sur l'API `machine` + identifiants français (led_rouge, bouton_a). Étape 3 : sous-sections « Déboguer pas-à-pas », « Dépanner les erreurs courantes » repassées de `## H2` à `### H3` (elles sont dans Étape 3, pas au niveau supérieur). La limite Web Serial API (Chrome / Edge uniquement) reformulée en callout :::info dédié et complétée par la mention que la version bureau de Vittascience contourne cette limite. Listes `* item` → `- item` pour cohérence avec le reste de la fiche. Aller plus loin : restructuré en trois sous-sections selon les CONVENTIONS.md (Pour comprendre / Pour s'inspirer / Pour approfondir). « Pour comprendre » étoffé avec deux entrées (programmation visuelle par blocs sur Wikipédia, Blockly de Google) qui contextualisent la dualité blocs/texte propre à Vittascience. Les liens techniques (Wiki STeaMi, drivers, doc MicroPython) déplacés vers « Pour approfondir » comme la convention le prévoit. Mention « résistances pull-up externes » alignée sur le §« Boutons : pas de Pin.PULL_UP » des CONVENTIONS.md (au lieu d'« interne », qui prêtait à confusion avec la pull-up interne du microcontrôleur). Ajout de « regler » au dictionnaire cspell (nom de fonction utilisé dans t04, t05 et t06). Refs #22 --------- Co-authored-by: Sébastien NEDJAR <sebastien@nedjar.com>
Résumé
site/docs/inovmicro-exao/t04-vscode.md) au catalogue I-Novmicro [EPIC] Intégration STeaMi/MicroPython — Phase 1 (Let's STEAM + enseignants) #2.mpremote(pipxrecommandé,venvpour postes verrouillés, callouts PEP 668 et PATH), un premier programme LED RGB + boutons A/B, l'usage du REPL, et l'activation de l'autocomplétion MicroPython via des stubs.CONVENTIONS.md: structure H2 Introduction → Phases, header flex avec icône SVG, callouts standard et custom, identifiants Python en français ASCII (led_rouge,bouton_a,regler_led), objectifs d'apprentissage avec verbes d'action en gras + transposition, section « Aller plus loin » (Pour comprendre / Pour s'inspirer / Pour approfondir), footer CC BY-SA et attribution Wiki@LAB.steamicc/micropython-steami-libpour publier des stubs des modules spécifiques STeaMi : steamicc/micropython-steami-lib#427.Type de changement
resources.tsouprojects.tsTest plan
npm run site:buildpasse sans erreurnpm run site:typecheckpassenpm run format:check,npm run lint:md,npm run lint:spell,npm run lint:crosslinksCONVENTIONS.md(header, structure, callouts, identifiants Python en français, vouvoiement, objectifs d'apprentissage, Aller plus loin, vocabulaire sans « firmware » dans la prose)Issues liées
Closes #21