Raspberry Pi Pico programmation par blocs : capteurs et MicroPython
Raspberry Pi Pico et programmation par blocs : lis une LDR et un HC-SR04 en blocs face au C++, ouvre le moniteur série, puis passe à MicroPython avec Thonny.
La programmation par blocs du Raspberry Pi Pico en MicroPython devient bien plus simple quand tu sais déjà lire un capteur avec des blocs. Lire un capteur avec des blocs, c'est obtenir une valeur sans taper de code : le bloc « lecture analogique A0 » récupère le niveau de lumière d'une LDR, et le bloc « écrire sur le port série » envoie ce nombre au moniteur série de ton ordinateur. Dans cet article, tu vas d'abord lire des capteurs avec des blocs sur Arduino grâce aux projets LDR et HC-SR04, en comparant chaque bloc avec sa ligne analogRead(), Serial.begin(), Serial.println() ou pulseIn(). Ensuite, tu passeras de la programmation par blocs à MicroPython sur le Raspberry Pi Pico et tu verras ce qui change quand les mêmes blocs deviennent du code Python.
Jusqu'ici, tous les programmes de la série agissaient vers l'extérieur : nous avons allumé des LED, lu un bouton et construit un compteur avec une boucle. Lire un capteur fonctionne dans l'autre sens : la carte mesure son environnement et toi, tu vois le nombre. C'est pourquoi le port série entre en jeu ici, car le moyen le plus simple de comprendre ce que mesure un capteur est de suivre sa valeur à l'écran. Dans la seconde moitié, les blocs des projets Raspberry Pi Pico correspondent à du MicroPython au lieu du C++. Tous les projets utilisés sont gratuits dans BlueGrays, et le code cité est exactement celui du projet.
Que veut dire lire un capteur : entrées numériques et analogiques
Un bouton ne signale que deux états : appuyé ou non. Tu le lis avec le bloc de lecture numérique d'une broche (digitalRead) et le résultat vaut 0 ou 1. Des composants comme une LDR, un potentiomètre ou un capteur d'humidité du sol donnent au contraire toutes les valeurs intermédiaires : la tension sur la broche varie en continu entre 0 et 5 V. Le circuit qui transforme cette tension en nombre s'appelle l'ADC (convertisseur analogique-numérique, ou CAN). L'ADC de l'Arduino Uno est sur 10 bits : il découpe la tension en 1024 pas et renvoie un nombre de 0 à 1023, chaque pas valant environ 4,9 mV. L'ESP32 et le Pico ont des ADC 12 bits qui fonctionnent en 3,3 V. Cette différence entre cartes est l'une des sources de confusion les plus fréquentes quand on passe des blocs au code ; tous les détails sont dans l'article ADC et conversion analogique-numérique.
| Carte | ADC | Plage de valeurs | Tension de référence | Code |
|---|---|---|---|---|
| Arduino Uno | 10 bits | 0–1023 | 5 V | analogRead(A0) |
| ESP32 | 12 bits | 0–4095 | Environ 3,3 V | analogRead(34) |
| Raspberry Pi Pico | 12 bits (mis à l'échelle 16 bits par read_u16) | 0–65535 | 3,3 V | ADC(26).read_u16() |
Lire une LDR avec des blocs sur Arduino
Notre premier exemple est le projet Mesurer l'intensité lumineuse avec une LDR. Une LDR est une résistance dont la valeur baisse quand la lumière augmente ; à elle seule, elle ne produit aucune tension. Pour la mesurer, on la place en série avec une résistance fixe de 10 kΩ pour former un pont diviseur de tension, et on relie le point milieu à A0. Avec le câblage ci-dessous, la LDR est côté 5V : plus il y a de lumière, plus la tension sur A0 et la valeur lue augmentent ; si tu inverses la LDR et la résistance, le sens s'inverse. Tu peux calculer la sortie du pont pour différentes valeurs de LDR avec le calculateur de pont diviseur, et voir combien d'ohms fait une LDR dans le noir et en pleine lumière dans l'article capteur de lumière LDR. Nous utiliserons la colonne Pico du tableau dans l'exemple MicroPython de la fin.
| Liaison | Arduino Uno | Raspberry Pi Pico |
|---|---|---|
| Patte 1 de la LDR | 5V | 3V3(OUT), broche physique 36 |
| Patte 2 de la LDR + une extrémité de la 10 kΩ (point milieu) | A0 | GP26 / ADC0, broche physique 31 |
| Autre extrémité de la 10 kΩ | GND | GND, broche physique 38 (ou AGND, broche 33) |
| Plage de lecture | 0–1023 | 0–65535 |

Lis les blocs de haut en bas. Le bloc « déclarer entier (int) value = 0 » dans variables globales (en haut) correspond à la ligne int value; tout en haut du code. La section configuration (une fois) contient un seul bloc, « démarrer le port série à 9600 bauds », c'est-à-dire Serial.begin(9600);. Dans répéter indéfiniment, on trouve d'abord « définir value à lecture analogique A0 », soit la ligne value = analogRead(A0);. Viennent ensuite deux blocs « écrire sur le port série ». Le premier écrit le texte « Value: » avec l'option sans retour et devient Serial.print() ; le second écrit value avec retour à la ligne et devient Serial.println(). Ainsi, chaque mesure s'affiche sur une seule ligne, par exemple « Value: 512 ». Le dernier bloc, « attendre 500 ms », est delay(500);, ce qui donne deux mesures par seconde. Pour convertir la valeur en tension, utilise value × 5,0 / 1023 : 512 correspond à environ 2,5 V. Dans une pièce sombre, la valeur descend à quelques centaines ; avec une lampe torche sur la LDR, elle dépasse 900. Les chiffres exacts dépendent de ta LDR et de la lumière ambiante.
1int value; // Işık değeri / Light reading (0-1023)
2
3void setup() {
4 Serial.begin(9600); // Seri port 9600 baud / Serial at 9600 baud
5}
6
7void loop() {
8 value = analogRead(A0); // LDR gerilimini oku / Read the LDR voltage
9 Serial.print("Value: ");
10 Serial.println(value);
11 delay(500); // 0,5 sn bekle / Wait 0.5 s
12}Ouvrir le moniteur série et suivre les valeurs
- Colle le code dans l'Arduino IDE, choisis la carte et le port, puis clique sur Téléverser.
- Une fois le téléversement terminé, clique sur l'icône de loupe en haut à droite ou ouvre Outils > Moniteur série (raccourci Ctrl+Maj+M).
- Règle la vitesse du moniteur série sur la valeur du code : 9600 bauds pour ce projet.
- Une ligne « Value: … » défile toutes les demi-secondes. Cache la LDR avec ta main et regarde le nombre baisser.
- Pour voir l'évolution sous forme de courbe, ouvre Outils > Traceur série ; les mêmes données sont tracées dans le temps.
- Les réglages de fin de ligne et l'envoi de données du moniteur série vers la carte sont expliqués en détail dans l'article moniteur série Arduino.
Distance avec le HC-SR04 : attendre en µs et durée de l'impulsion

Le deuxième projet de capteur est HC-SR04 Mesure de la distance (affichage en série). Il apporte deux nouveaux blocs. Le trio qui commence par « écrire HAUT sur la broche trigPin » demande au capteur d'émettre une salve d'ultrasons : le bloc « attendre 10 µs » du milieu est delayMicroseconds(10); et correspond à une attente mille fois plus courte que « attendre … ms ». Vient ensuite « définir duration à durée de l'impulsion HAUT sur la broche echoPin (µs) », c'est-à-dire la ligne unsigned long duration = pulseIn(echoPin, HIGH);, qui mesure combien de microsecondes la broche Echo reste à l'état HAUT. Le son parcourt environ 0,034 cm/µs dans l'air, et cette durée couvre l'aller-retour. C'est pourquoi « définir totalPath à duration × 0.034 » calcule le trajet complet et « définir distance à totalPath ÷ 2 » la distance simple. Par exemple, une impulsion de 1000 µs représente 34 cm de trajet, donc 17 cm de distance ; comme distance est un int, les décimales sont supprimées. Enfin, le bloc « si distance > minDistance et distance < maxDistance » devient if (distance > minDistance && distance < maxDistance) et n'affiche que les mesures entre 3 et 100 cm. Si le capteur ne reçoit pas d'écho, pulseIn() renvoie 0, et ce test écarte aussi ces faux zéros de l'écran. Dans le code, les broches sont trigPin = 7 et echoPin = 6. La portée et la précision du capteur sont détaillées dans l'article capteur de distance HC-SR04.
La même idée sur l'ESP32 : un ADC 12 bits
La version ESP32 de la même logique LDR est le projet Mesure de l'intensité lumineuse avec le module LDR ESP32. Les blocs correspondent toujours à du C++ et se lisent comme sur Arduino, avec trois différences. D'abord, setup() fixe l'ADC sur 12 bits avec analogReadResolution(12) : analogRead() renvoie donc 0–4095 au lieu de 0–1023, et un seuil écrit pour Arduino comme « sombre en dessous de 500 » n'a pas le même sens sur l'ESP32. Ensuite, le port série tourne à 115200 bauds au lieu de 9600 : règle aussi le moniteur série sur 115200. Enfin, sur la sortie AO du module LDR, la tension et la valeur brute baissent quand la lumière augmente. C'est pourquoi le code utilise les valeurs d'étalonnage RAW_DARK = 4000 et RAW_LIGHT = 100, maintient la mesure dans cette plage avec constrain() et la transforme avec map() en 0 % pour le noir et 100 % pour la lumière. Sur un ESP32 DevKit classique, la LDR va sur le GPIO 34, une broche d'entrée seule reliée à l'ADC1. Comme les broches de l'ADC2 ne peuvent pas être lues quand le Wi-Fi est actif, brancher les capteurs analogiques sur l'ADC1 est une bonne habitude. Les caractéristiques générales de la carte sont dans l'article ESP32, c'est quoi.
Des blocs au MicroPython sur le Raspberry Pi Pico
Dans les projets Pico, les blocs correspondent à du MicroPython au lieu du C++. Les blocs ont un air familier, mais le langage en dessous est différent : pas d'accolades ni de points-virgules, les blocs de code sont délimités par l'indentation, et il n'y a pas de fonctions setup() et loop(). Faisons la transition avec le projet le plus simple, Allumage d'une LED externe sur le Raspberry Pi Pico (GP14 + plaque d'essai). Le circuit est minuscule : GP14 (broche physique 19) va à la patte longue de la LED à travers une résistance de 220 à 330 Ω, et la patte courte va au GND (par exemple la broche physique 18). Le programme allume la LED une demi-seconde, l'éteint une demi-seconde et écrit une ligne dans la console Shell de Thonny à chaque étape. Si tu découvres le Pico, commence par l'article Raspberry Pi Pico, c'est quoi.

1from machine import Pin
2import time
3
4# ============ PIN / PIN ============
5LED_PIN = 14 # Boştaki herhangi bir GPIO / Any free GPIO
6led = Pin(LED_PIN, Pin.OUT)
7
8print("== BlueGrays: Pico Harici LED Blink ==")
9print("LED pin: GP" + str(LED_PIN))
10print("500ms yakip 500ms sonduruyor / 500ms on 500ms off")
11
12# ============ ANA DÖNGÜ / MAIN LOOP ============
13while True:
14 led.on() # LED'i yak / Turn the LED on
15 print("[LED] ACIK / ON")
16 time.sleep(0.5)
17
18 led.off() # LED'i söndür / Turn the LED off
19 print("[LED] KAPALI / OFF")
20 time.sleep(0.5)| Bloc | MicroPython | Remarque |
|---|---|---|
| variables globales (en haut) → déclarer entier (int) LED_PIN = 14 | LED_PIN = 14 | Python n'écrit pas les types ; le mot int n'apparaît pas dans le code |
| configuration (une fois) | Toutes les lignes avant while True | Il n'y a pas de setup() séparé ; le fichier s'exécute une fois de haut en bas |
| broche led : GP LED_PIN, SORTIE | led = Pin(LED_PIN, Pin.OUT) | Pin vient de la ligne from machine import Pin |
| écrire sur le port série « … » retour à la ligne | print("…") | print() ajoute toujours un retour à la ligne |
| créer un texte avec « LED pin: GP » LED_PIN | "LED pin: GP" + str(LED_PIN) | Un nombre ne peut être collé à un texte qu'une fois converti en texte par str() |
| répéter indéfiniment | while True: | Les lignes à l'intérieur sont indentées de 4 espaces |
| allumer (on) la broche led | led.on() | Met la broche à 3,3 V, la LED s'allume |
| attendre 0.5 secondes | time.sleep(0.5) | La durée est en secondes ; 500 ms = 0.5 |
| éteindre (off) la broche led | led.off() | Met la broche à 0 V, la LED s'éteint |
Quatre points ressortent de ce tableau. Premièrement, les lignes from machine import Pin et import time n'ont pas de bloc : en Python, on importe en haut les modules dont on a besoin, et les blocs le supposent pour toi. Deuxièmement, le bloc Arduino « démarrer le port série à 9600 bauds » n'a pas d'équivalent ici : sur le Pico, la sortie de print() passe directement par l'USB vers la console Shell de Thonny, sans vitesse à régler. Troisièmement, l'unité d'attente a changé : sur Arduino, « attendre 500 ms » est delay(500), alors que sur le Pico, « attendre 0.5 secondes » est time.sleep(0.5). Quatrièmement, et c'est le plus important, l'indentation : chaque bloc emboîté dans « répéter indéfiniment » s'écrit dans le code avec quatre espaces de retrait sous la ligne while True:. Si tu supprimes le retrait d'une ligne, elle sort de la boucle ; en Python, les espaces font le travail des accolades du C++. Tu trouveras les autres règles de base dans l'article les bases de MicroPython.
Les mêmes opérations dans trois langages : blocs, C++ et MicroPython
| Opération | Bloc | Arduino C++ | MicroPython (Pico) |
|---|---|---|---|
| S'exécute une fois | configuration (une fois) | void setup() { … } | Lignes avant while True |
| Répéter sans fin | répéter indéfiniment | void loop() { … } | while True: (indenté) |
| Variable | déclarer entier (int) LED_PIN = 14 | int LED_PIN = 14; | LED_PIN = 14 |
| Broche de sortie | régler la broche … en SORTIE / broche led : GP LED_PIN, SORTIE | pinMode(14, OUTPUT); | led = Pin(14, Pin.OUT) |
| Allumer la LED | écrire HAUT sur la broche … / allumer (on) la broche led | digitalWrite(14, HIGH); | led.on() |
| Attendre | attendre 500 ms / attendre 0.5 secondes | delay(500); | time.sleep(0.5) |
| Attente courte | attendre 10 µs | delayMicroseconds(10); | time.sleep_us(10) |
| Lecture analogique | lecture analogique A0 | analogRead(A0) → 0–1023 | ADC(26).read_u16() → 0–65535 |
| Démarrer le port série | démarrer le port série à 9600 bauds | Serial.begin(9600); | Inutile |
| Écrire avec retour à la ligne | écrire sur le port série … retour à la ligne | Serial.println(x); | print(x) |
| Écrire sans retour | écrire sur le port série … sans retour | Serial.print(x); | print(x, end="") |
| Assembler du texte | créer un texte avec | Deux Serial.print() séparés | "LED pin: GP" + str(x) |
Ton propre exemple : lire une LDR sur le Pico en MicroPython
Transposons maintenant le projet LDR d'Arduino sur le Pico. Le câblage suit la colonne Pico du tableau plus haut : une patte de la LDR sur la broche 3V3(OUT), l'autre à la fois sur GP26 et sur une extrémité de la résistance de 10 kΩ, et l'autre extrémité de la résistance au GND. Le Pico possède trois broches capables de lire des valeurs analogiques : GP26 (ADC0), GP27 (ADC1) et GP28 (ADC2). En MicroPython, tu crées un objet ADC(26) et tu appelles read_u16() ; même si l'ADC du Pico est en 12 bits côté matériel, cette fonction met le résultat à l'échelle 0–65535. Pour obtenir la tension, multiplie la valeur par 3,3 et divise par 65535. Le programme suit le même déroulé que la version Arduino : mesurer, afficher, attendre une demi-seconde. Nous avons ajouté un seuil : quand la pièce s'assombrit, la LED intégrée s'allume. En pensant en blocs, les lignes avant while True forment la section « configuration (une fois) », while True: est « répéter indéfiniment », le if/else est le bloc « si » de la partie 3 de la série, led.on() est « allumer (on) la broche led », time.sleep(0.5) est « attendre 0.5 secondes », et le + str() dans print() est le bloc « créer un texte avec ». La ligne ADC(26).read_u16() fait le travail du bloc Arduino « lecture analogique A0 ». Ajuste THRESHOLD selon les nombres que tu vois dans la console Shell, dans ta propre pièce.
1from machine import Pin, ADC
2import time
3
4# ============ PIN / PIN ============
5ldr = ADC(26) # GP26 = ADC0, bölücünün orta noktası / divider midpoint
6led = Pin(25, Pin.OUT) # Dahili LED; Pico W'de Pin("LED") / Onboard LED; Pico W: Pin("LED")
7THRESHOLD = 20000 # Karanlık eşiği, odana göre ayarla / Darkness threshold, tune for your room
8
9print("== BlueGrays: Pico LDR ==")
10
11# ============ ANA DÖNGÜ / MAIN LOOP ============
12while True:
13 value = ldr.read_u16() # 0-65535
14 voltage = value * 3.3 / 65535 # Volt / Volts
15 print("Value: " + str(value) + " Voltage: " + str(round(voltage, 2)) + " V")
16
17 if value < THRESHOLD: # Az ışık = küçük değer / Little light = small value
18 led.on()
19 else:
20 led.off()
21
22 time.sleep(0.5) # 0,5 sn = 500 ms / 0.5 s = 500 msTéléverser sur le Pico avec Thonny et main.py
- Installe Thonny sur ton ordinateur. Si le Pico n'a pas encore MicroPython, maintiens le bouton BOOTSEL enfoncé en branchant le câble USB ; Thonny propose d'installer MicroPython lors de la première connexion.
- En bas à droite de Thonny, choisis MicroPython (Raspberry Pi Pico) comme interpréteur. Si l'invite >>> s'affiche dans la console Shell en bas, la connexion est établie.
- Copie le code du projet depuis BlueGrays et colle-le dans l'éditeur de Thonny.
- Clique sur le bouton vert Exécuter ou appuie sur F5. Le code tourne sur le Pico et les sorties de print() s'affichent dans la console Shell. Pour l'arrêter, utilise le bouton Stop (Ctrl+F2).
- Pour que le code fonctionne sans ordinateur, choisis Fichier > Enregistrer sous, sélectionne Raspberry Pi Pico dans la fenêtre et nomme le fichier main.py. Le Pico lance ce fichier automatiquement à chaque mise sous tension : un chargeur USB ou une batterie externe suffit.
- Si Thonny ne voit pas la carte, vérifie le câble et les pilotes dans l'ordre de l'article Raspberry Pi Pico non reconnu.
D'autres projets Pico en blocs gratuits
- Clignotement LED intégrée Raspberry Pi Pico (GP25) : aucun câblage ; la LED de la carte clignote avec LED_PIN = 25. Le code est presque identique à celui du projet précédent : ouvre-les côte à côte et tu verras que seul le numéro de broche change. Sur le Pico W, la LED intégrée est reliée à la puce Wi-Fi, on utilise donc Pin("LED").
- Raspberry Pi Pico Deux LEDs alternées (GP14 + GP13) : il part d'états opposés avec led1.value(1) et led2.value(0), puis applique toggle() aux deux LED dans la boucle. Comme le code écrit from time import sleep, l'attente apparaît sous la forme sleep(0.5) au lieu de time.sleep(0.5).
- Simulateur de feu de circulation Raspberry Pi Pico (GP11/GP12/GP13) : une fonction all_off() éteint toutes les LED ; le vert reste allumé 4 secondes, l'orange 1,5 et le rouge 3, puis vient une phase de démarrage rouge+orange d'une seconde.
- Raspberry Pi Pico Effet gyrophare police (GP11 + GP12) : cette fois, l'attente se fait en millisecondes avec sleep_ms(WAIT_MS), où WAIT_MS = 300. Voir les fonctions en secondes et en millisecondes dans deux projets différents est le meilleur moyen d'éviter l'erreur la plus fréquente ci-dessous.
Erreurs fréquentes et solutions
| Erreur | Symptôme | Solution |
|---|---|---|
| Écrire time.sleep(500) | La LED s'allume et reste ainsi plus de 8 minutes | En MicroPython, la durée est en secondes : écris time.sleep(0.5) ou time.sleep_ms(500) |
| Décaler l'indentation | IndentationError ou lignes qui ne s'exécutent pas dans la boucle | Commence chaque ligne sous while True: par les mêmes 4 espaces, sans mélanger tabulations et espaces |
| Coller un nombre à un texte sans str() | TypeError: can't convert 'int' object to str implicitly | Écris "LED pin: GP" + str(LED_PIN) |
| Envoyer 5 V sur une broche ADC du Pico | Mesures fausses, risque de dégât permanent | Le Pico fonctionne en logique 3,3 V ; alimente le pont depuis la broche 3V3(OUT) |
| Reprendre un seuil Arduino sur le Pico | La condition « value < 500 » donne toujours le même résultat | Tiens compte de la plage : Uno 0–1023, ESP32 0–4095, Pico read_u16() 0–65535 |
| Vitesse du moniteur série différente | Caractères incompréhensibles | Règle le moniteur sur la vitesse du code : 9600 ou 115200 |
| Utiliser une broche ADC2 sur l'ESP32 | La lecture ne marche plus quand le Wi-Fi est actif | Branche les capteurs analogiques sur des broches ADC1, comme les GPIO 32 à 39 |
| Ne pas enregistrer le fichier sous main.py | Le code tourne depuis Thonny mais plus après avoir débranché l'USB | Enregistre le fichier sur le Pico sous le nom main.py |
Continuer avec les blocs dans l'application BlueGrays
Tous les projets de cet article sont gratuits dans l'application BlueGrays. Active l'interrupteur Voir en blocs dans la partie code d'un projet : le code est remplacé par le même programme en blocs, et un appui sur l'image l'ouvre en plein écran. L'onglet Comprendre les blocs explique le programme étape par étape et n'affiche à chaque étape que les blocs concernés et ce qu'ils font. C'est là que tu peux voir précisément ce que mesure le bloc de durée d'impulsion dans le projet HC-SR04, ou pourquoi la partie configuration d'un projet Pico vient avant while True. Tous les exemples de commandes Arduino et MicroPython du Guide du code existent aussi en blocs. Pour tester tes connaissances, les Questions du jour proposent 5 questions par jour du niveau A1 au niveau C2, un classement hebdomadaire et des badges. N'oublie pas que les blocs ne sont jamais téléversés directement sur la carte : la carte reçoit toujours le vrai code du projet, que tu copies dans l'Arduino IDE pour Arduino et ESP32, ou dans Thonny pour le Pico. Tu peux filtrer la liste des projets par badge blocs et retrouver tous les projets en blocs pour Arduino, ESP32 et Pico sur la page programmation par blocs.
Avec le port série et la lecture de capteurs, tu sais désormais lire toutes les briques de base d'un projet, en blocs comme en code. La dernière partie de la série emmène ces étapes en classe : un plan de cours de robotique en programmation par blocs pour les enseignants. D'ici là, tu peux parcourir pas à pas dans l'application BlueGrays les schémas et le code des projets LDR, HC-SR04 et LED sur Pico, passer à la version en blocs du même programme avec Voir en blocs, et suivre ce que fait chaque étape avec Comprendre les blocs.
Questions fréquentes
Comment passer de la programmation par blocs à MicroPython ?
Le plus simple est de regarder côte à côte les blocs d'un programme et son code MicroPython. Une fois que tu as vu dans quelques projets que « répéter indéfiniment » correspond à while True:, « allumer (on) la broche led » à led.on() et « attendre 0.5 secondes » à time.sleep(0.5), tu commences à lire le code sans les blocs. Modifie ensuite toi-même de petits détails comme la durée d'attente ou le numéro de broche.
Peut-on programmer le Raspberry Pi Pico avec des blocs ?
Dans BlueGrays, 10 projets Pico ont une version en blocs, et ces blocs correspondent ligne à ligne au code MicroPython ; 5 d'entre eux sont entièrement gratuits. Ce qui est chargé sur la carte, c'est le code MicroPython du projet, pas les blocs : tu le colles dans Thonny et tu l'exécutes. Tu comprends ainsi la logique avec les blocs et tu programmes la carte avec du vrai code.
Pourquoi analogRead sur Arduino renvoie-t-il des valeurs de 0 à 1023 ?
L'ADC de l'Arduino Uno est sur 10 bits et découpe la plage 0–5 V en 1024 pas. 0 V donne 0 et 5 V donne 1023, chaque pas valant environ 4,9 mV. Pour convertir la valeur en tension, utilise value × 5,0 / 1023.
Pourquoi read_u16 monte-t-il jusqu'à 65535 sur le Raspberry Pi Pico ?
L'ADC du Pico est en 12 bits côté matériel, mais read_u16() de MicroPython met le résultat à l'échelle 16 bits pour que la plage soit la même d'une carte à l'autre. Ainsi, 0 V donne 0 et 3,3 V environ 65535. Les seuils repris d'un code Arduino doivent être recalculés pour cette plage.
En MicroPython, time.sleep est-il en secondes ou en millisecondes ?
time.sleep() fonctionne en secondes : time.sleep(0.5) attend une demi-seconde. Pour des millisecondes, utilise time.sleep_ms(500), et pour des microsecondes time.sleep_us(10). Si tu confonds avec le delay(500) d'Arduino et écris time.sleep(500), le programme attend plus de 8 minutes.
Comment faire tourner mon code Thonny en permanence sur le Pico ?
Enregistre le code sur le Raspberry Pi Pico sous le nom main.py avec Fichier > Enregistrer sous. Le Pico exécute main.py automatiquement à chaque mise sous tension, sans ordinateur. Si tu cliques seulement sur Exécuter, le code n'est pas enregistré sur le Pico et ne tournera plus après un redémarrage.
Projets à réaliser après cet article
Voir tous les projets
Mesurer l'intensité lumineuse avec une LDR
Envie de voir en chiffres à quel point ta chambre est lumineuse ? Le LDR, une petite pièce sensible à la lumière, mesure la lumière ambiante, et l'Arduino écrit la valeur sur l'écran de ton ordinateur

HC-SR04 Mesure de la distance (affichage en série)
Le capteur HC-SR04 fonctionne comme une chauve-souris qui trouve son chemin dans le noir : il envoie un son que tu ne peux pas entendre, écoute l'écho et mesure à quelle distance se trouve l'objet dev

Mesure de l'intensité lumineuse avec le module LDR ESP32
Suivi en temps réel sur le moniteur série de la valeur brute de l'ADC du module LDR et du pourcentage relatif de luminosité calculé à partir de références dans l'obscurité et à la lumière. Ce pourcentage n'est pas une mesure en lux. Permet de comprendre le principe de calibrage du module. Il est préférable de réaliser cet exercice avant le projet 10, car il sert à déterminer la valeur seuil.

Allumage d'une LED externe sur le Raspberry Pi Pico (plaque d'essai)
Après la LED intégrée du Pico : connecter une LED externe à la maquette et la contrôler via la broche GP14. Ce projet vous permet d’apprendre comment utiliser n’importe quelle broche GPIO à usage général du Pico en sortie, de comprendre la polarité de la LED (grande patte = anode/+, petite patte = cathode/–) et de découvrir pourquoi une résistance de limitation de courant (220 Ω) est indispensable. Si vous n'installez pas cette résistance, un courant excessif traversera la LED et celle-ci risque

Clignotement LED Intégrée Raspberry Pi Pico (Pico et Pico W)
Le projet d'ouverture de la série Raspberry Pi Pico ! Nous faisons clignoter la LED verte intégrée pour vérifier que la carte fonctionne — une première expérience classique "Hello World". AUCUN composant externe, juste Pico et câble USB. Le code est écrit en MicroPython (le langage officiellement soutenu par la Raspberry Pi Foundation). Apprends la classe machine.Pin, le mode Pin.OUT, les méthodes led.on()/off() et time.sleep() dans Thonny IDE. Suis chaque basc

Raspberry Pi Pico Deux LEDs alternées (Flip-Flop)
L'étape suivante après la LED unique sur le Pico : deux LEDs clignotent alternativement dans un motif flip-flop classique. Deux LEDs de couleurs différentes (rouge sur GP14, verte sur GP13) échangent leur état toutes les 500ms. Pin.toggle() de MicroPython rend le code court. Base des feux de circulation, gyrophares.

Simulateur de Feu de Circulation Raspberry Pi Pico (3 LEDs séquentielles)
Nous simulons un vrai feu de circulation avec des LEDs rouge, jaune et verte. Vert 4 sec "passez", jaune 1,5 sec "préparez", rouge 3 sec "arrêtez" et rouge+jaune 1 sec "départ" (motif européen). Apprends la définition de fonction, la logique de machine à états et la synchronisation multi-GPIO. Circuit simple : 3 LEDs sur GP11/GP12/GP13, chacune avec 220Ω.

Raspberry Pi Pico Effet Gyrophare Police (Rouge + Bleu Stroboscope)
Nous simulons la rampe lumineuse d'une voiture de police avec un Raspberry Pi Pico, dans sa version la plus simple ! Les LED rouge et bleue s'allument à tour de rôle (flip-flop) : quand la rouge est allumée, la bleue est éteinte, et elles s'échangent toutes les 0,3 seconde, sans fin. Le code écrit les deux étapes directement dans une seule boucle while True ; la vitesse se règle avec la constante WAIT_MS.
Autres articles
Application BlueGrays
Réalise ce montage pas à pas sur ton téléphone
Schéma, code et liste des composants sur un seul écran. Plus de 200 projets Arduino, ESP32 et Pico à réaliser.
Scanne avec ton téléphone
Pointe l’appareil photo vers le code : la boutique d’applications de ton téléphone s’ouvre.
ou ouvre la boutique

