Bases · 14 min de lecture

Commandes Arduino : liste en 36 fiches, C++ et MicroPython

Commandes Arduino : liste dans l'ordre d'apprentissage, 18 fiches de pinMode à tone, équivalents MicroPython, code côte à côte, plan sur 4 semaines, 8 erreurs.

La façon la plus sûre d'apprendre les commandes Arduino n'est pas de mémoriser une longue liste, mais de les parcourir dans l'ordre, chacune avec un petit exemple et un vrai projet. C'est le rôle du Guide du code, dans la section Leçons de l'onglet Apprendre de l'application BlueGrays : 18 fiches dans le parcours Arduino C++, de pinMode à tone, et 18 fiches dans le parcours MicroPython, de import à I2C, soit 36 fiches. Chaque fiche suit le même plan : À quoi ça sert ?, Pourquoi ?, Syntaxe, Exemple (avec les onglets Blocs, Arduino et MicroPython), Erreur fréquente, Astuce, Voir dans les projets et un Mini-test de deux questions. L'ordre est fixé lui aussi : d'abord les broches (pinMode, digitalWrite, digitalRead, analogRead, analogWrite), puis le temps (delay, millis), ensuite variables, conditions, boucles et fonctions, et pour finir Serial, map, random et tone. Si tu utilises une Raspberry Pi Pico, tu apprends les mêmes notions dans le parcours MicroPython avec Pin, Pin.value, time.sleep, ADC.read_u16 et PWM.

Cet article est une carte du guide. Tu verras d'abord ce que contient une fiche, puis les 18 fiches de chaque parcours dans leur ordre réel dans l'application, avec l'équivalent dans l'autre langage. Viennent ensuite trois courts exemples qui mettent côte à côte la version C++ et la version MicroPython d'un même programme, le fonctionnement du mini-test et du suivi de progression, un ordre d'apprentissage sur 4 semaines, une routine quotidienne de 20 minutes et les 8 erreurs les plus fréquentes avec ces commandes. Si tu cherches une explication détaillée de chaque commande, l'article commandes Arduino : syntaxe et exemples consacre une section à chacune ; celui-ci explique dans quel ordre les apprendre et comment t'entraîner.

Carte Arduino Uno : broches numériques, broches PWM marquées ~ et entrées analogiques A0–A5
Les cinq premières fiches du parcours Arduino C++ portent sur les trois groupes de broches de cette carte : broches numériques, broches PWM marquées ~ et entrées analogiques A0–A5.

Où se trouve le Guide du code et comment fonctionne-t-il ?

Tu ouvres le guide depuis l'onglet Apprendre, en bas de l'écran : dans la section Leçons, en haut, touche la tuile Guide du code. À l'ouverture, tu vois deux onglets en haut : Arduino C++ et MicroPython ; l'application retient le dernier parcours ouvert. Juste en dessous se trouvent le compteur Ce que tu as appris et la ligne Fiche suivante, pour ne jamais chercher où tu t'es arrêté. Les fiches sont regroupées par thème : Broches, Temps, Variables, Conditions, Boucles, Fonctions, Port série, Maths et Son ; le parcours MicroPython ajoute Structure de base et Gestion des erreurs. Le Guide du code est gratuit : pas besoin de Premium pour lire les fiches, voir les exemples ou faire les mini-tests. Les fiches existent en 10 langues, tu lis donc les explications dans la langue de ton application.

Que contient une fiche ?

Toutes les fiches ont la même structure, donc dès la troisième tu sais où regarder. Le tableau présente les sections à partir de la 7e fiche du parcours Arduino, millis ; la colonne de droite résume ce que dit la fiche. L'ordre des sections est déjà un ordre d'apprentissage : d'abord tu découvres en une phrase ce que fait la commande, puis tu comprends à quoi elle sert grâce à une comparaison de la vie courante, tu vois comment elle s'écrit, tu lis un exemple qui fonctionne, tu découvres le piège le plus courant et tu te testes avec deux questions.

SectionCe qu'elle expliqueSur la fiche millis
À quoi ça sert ?Le rôle de la commande en une phraseTe dit combien de millisecondes se sont écoulées depuis le démarrage de la carte.
Pourquoi ?Pourquoi tu en as besoin, avec une comparaison de la vie couranteComme un gâteau au four : tu jettes un œil à l'horloge de temps en temps et tu fais autre chose en attendant.
SyntaxeLa façon d'écrire la commandeunsigned long now = millis();
ExempleUn court programme qui fonctionne ; onglets Blocs, Arduino et MicroPythonUn code qui inverse une LED toutes les 500 ms ; sur la Pico, la même chose avec time.ticks_ms
Erreur fréquenteLe piège dans lequel les débutants tombent le plusStocker millis dans un int : le nombre devient faux au bout d'environ 33 secondes.
AstuceUne petite règle qui simplifie le travailÉcris toujours le test sous la forme maintenant - précédent >= intervalle.
Voir dans les projetsLes projets qui utilisent la commande, du plus facile au plus difficilePlus de 50 projets ; la liste commence par un projet ESP32 gratuit avec bouton
Mini-testDeux questions, une courte explication après chaque réponseQue renvoie millis() ? Dans quel type dois-tu stocker millis ?

La section Exemple s'ouvre sur le parcours de la fiche : sur une fiche Arduino, l'onglet Arduino vient en premier, sur une fiche MicroPython, l'onglet MicroPython. Mais l'autre onglet est toujours là, et c'est ce qui transforme le guide en dictionnaire. Sur la fiche Broche en sortie : Pin(15, Pin.OUT) du parcours MicroPython, par exemple, l'onglet Arduino contient un code qui fait la même chose avec pinMode et digitalWrite, et les commentaires indiquent quelle ligne correspond à quoi (comme la ligne qui remplace led.toggle()). Presque toutes les fiches ont aussi un troisième onglet, Blocs, qui montre le programme d'exemple sous forme de blocs. Si tu passes d'Arduino à la Pico, la méthode la plus rapide est la suivante : ouvre une fiche que tu connais, change d'onglet et fais correspondre les deux programmes ligne par ligne.

Parcours Arduino C++ : 18 fiches et leurs équivalents MicroPython

Le tableau reprend l'ordre réel du parcours Arduino dans l'application ; la dernière colonne montre comment faire la même chose en MicroPython sur une Raspberry Pi Pico. Les numéros de broches correspondent aux exemples des fiches : pour une LED, 13 ou 9 sur l'Uno et GP15 sur la Pico ; pour un bouton, 2 sur l'Uno et GP14 sur la Pico ; pour la lecture analogique, A0 sur l'Uno et GP26 sur la Pico. Les cinq premières fiches portent sur les broches, la 6 et la 7 sur le temps, de la 8 à la 14 sur les bases de la programmation, et les quatre dernières sur le port série, la mise à l'échelle, les nombres aléatoires et le son. L'ordre est voulu : tu apprends d'abord comment la carte agit sur le monde extérieur, puis tu pilotes ces actions avec des variables, des conditions et des boucles.

N°FicheÀ quoi ça sert ?Équivalent MicroPython
1pinModeIndique si une broche est une sortie (LED, buzzer) ou une entrée (bouton, capteur)Pin(15, Pin.OUT) · Pin(14, Pin.IN, Pin.PULL_UP)
2digitalWriteAllume (HIGH, 5 V) ou éteint (LOW, 0 V) une broche de sortieled.value(1) · led.on() · led.off()
3digitalReadLit si une broche d'entrée est à HIGH ou à LOWbutton.value() → 1 ou 0
4analogReadConvertit la tension sur A0–A5 en un nombre de 0 à 1023ADC(26).read_u16() → 0–65535
5analogWrite (PWM)Baisse l'intensité d'une LED ou ralentit un moteur avec une valeur de 0 à 255 sur une broche ~PWM(Pin(15)) · freq(1000) · duty_u16(0–65535)
6delayMet le code en pause pendant le nombre de millisecondes indiquétime.sleep(0.5) · time.sleep_ms(500)
7millisMillisecondes depuis le démarrage ; temporiser sans arrêter le codetime.ticks_ms() · time.ticks_diff()
8Variables et typesStocke des valeurs avec des types comme int, float, bool, unsigned longOn n'écrit pas le type : count = 0, volts = 3.3
9if / else if / elseExécute un code ou un autre selon une conditionif / elif / else
10Opérateurs de comparaison et logiquesConstruit des conditions avec ==, !=, <, >, &&, ||, !==, !=, <, > · and, or, not
11Boucle forRépète une tâche un nombre fixe de foisfor i in range(10):
12Boucle whileRépète tant qu'une condition est vraiewhile condition:
13Fonctions (void, paramètres, return)Découpe le code en morceaux nommés et réutilisablesdef blink(times): … return
14TableauxRange des valeurs du même type sous un seul nomListe : pins = [2, 3, 4] · len(pins)
15Serial.begin / print / printlnEnvoie du texte et des valeurs à l'ordinateur (moniteur série)print(x) · f-string ; pas besoin de Serial.begin
16mapConvertit une plage de nombres en une autrePas de commande toute prête : raw * 255 // 1023 ou ta propre fonction
17random / randomSeedGénère des nombres aléatoiresimport random · random.randint(1, 6)
18tone / noToneFait sonner un buzzer à une fréquence donnée, puis l'arrêtePWM : freq(440) · duty_u16(32768) ; duty_u16(0) pour le faire taire
Les équivalences ne sont pas strictes, et la plus grande différence concerne les plages de nombres. Sur l'Uno, analogRead renvoie 0–1023 et analogWrite attend 0–255 ; sur la Pico, ADC.read_u16 et PWM.duty_u16 utilisent tous deux 0–65535. Sur la Pico, seules GP26, GP27 et GP28 lisent des valeurs analogiques, et elles mesurent au plus 3,3 V : branche donc le potentiomètre sur 3V3 (OUT), pas sur 5 V. MicroPython n'a pas non plus de commande toute prête comme map ou tone : tu changes d'échelle avec une simple multiplication et division, et tu produis un son avec le réglage freq du PWM.

Parcours MicroPython : 18 fiches et leurs équivalents Arduino

Le parcours MicroPython a été pensé pour la Raspberry Pi Pico ; les exemples des fiches sont de courts programmes que tu peux exécuter sur une Pico, par exemple avec Thonny. L'ordre diffère un peu du parcours Arduino, car en Python il faut d'abord s'habituer aux règles du langage : ajouter des modules avec import, afficher avec print, et la règle de l'indentation et des deux-points. L'onglet Arduino de chaque fiche MicroPython contient aussi la version C++ du même programme ; si tu connais déjà Arduino, tu peux donc lire le tableau de droite à gauche. Si c'est ta première Pico, l'article qu'est-ce que la Raspberry Pi Pico est une bonne préparation pour l'installation et les broches.

N°FicheÀ quoi ça sert ?Équivalent Arduino
1import et from … importAjoute au programme des modules comme machine et time#include pour les bibliothèques ; les commandes de base comme pinMode et delay sont intégrées
2print et f-stringsAffiche du texte et des valeurs dans la console de ThonnySerial.begin(9600) + Serial.println()
3Broche en sortie : Pin(15, Pin.OUT)Met une broche GP en sortie ; value(), on(), off(), toggle()pinMode(13, OUTPUT) + digitalWrite()
4Broche en entrée : Pin.IN, PULL_UP, PULL_DOWNMet une broche en entrée, choisit la résistance interne, la lit avec value()pinMode(2, INPUT_PULLUP) + digitalRead()
5time.sleep et sleep_msMet le programme en pause en secondes ou en millisecondesdelay()
6while True: la boucle infinieRépète les lignes en dessous tant que la Pico est alluméeloop()
7Indentation et deux-points (:)Détermine à quel bloc appartient chaque ligneAccolades { } et point-virgule ;
8Variables : int, float, str, boolStocke des valeurs ; le type est déterminé tout seulint, float, String, bool
9if / elif / else, and / or / notChoisit une branche selon des conditions et les combineif / else if / else · &&, ||, !
10for et rangeRépète un nombre fixe de fois ; range(0, 10) compte de 0 à 9for (int i = 0; i < 10; i++)
11Listes : [ ], indice, lenGarde plusieurs valeurs dans l'ordre ; le premier élément est à l'indice 0Tableaux : int pins[] = {2, 3, 4};
12def et return (fonctions)Nomme du code réutilisable et renvoie un résultatFonctions void ou typées, return
13ADC : lecture analogique avec read_u16Lit la tension sur GP26, GP27, GP28 sous forme de 0–65535analogRead() → 0–1023
14PWM : freq et duty_u16Baisse l'intensité d'une LED, joue des notes sur un buzzeranalogWrite() et tone()
15time.ticks_ms et ticks_diffMesure le temps écoulé sans arrêter le codemillis()
16Pin.irq : boutons avec interruptionsExécute une fonction à l'instant où l'on appuie sur un boutonattachInterrupt()
17try / except (attraper les erreurs)Empêche le programme de s'arrêter en cas d'erreurPas d'équivalent courant sur Arduino ; on vérifie les valeurs renvoyées
18I2C et scan()Trouve les adresses des appareils sur le bus I2CWire.begin() + code de scanner I2C

Le même programme dans deux langages : 3 exemples côte à côte

Le premier exemple est le « hello world » de tout langage : faire clignoter la LED de la carte toutes les demi-secondes. Sur l'Uno, la LED intégrée est reliée à la broche 13 : aucun circuit à monter. Sur la Pico, c'est un peu différent : sur la Pico classique, la LED intégrée est sur GP25, mais sur la Pico W elle est reliée à la puce sans fil et Pin(25) ne l'allume pas. C'est pourquoi il est plus sûr d'écrire Pin("LED", Pin.OUT) en MicroPython ; dans les versions actuelles de MicroPython, ce nom trouve la LED intégrée sur la Pico comme sur la Pico W. Si le firmware de ta carte ne reconnaît pas le nom "LED", installe un MicroPython récent sur la Pico. Le projet gratuit Clignotement LED Intégrée Raspberry Pi Pico (Pico et Pico W) explique justement cette différence.

C++ (Arduino IDE)
1// Örnek 1: dahili LED'i yakıp söndür / Example 1: blink the built-in LED
2void setup() {
3  pinMode(13, OUTPUT);     // Uno'da dahili LED 13. pinde / built-in LED is on pin 13 on the Uno
4}
5
6void loop() {
7  digitalWrite(13, HIGH);  // LED yanar / LED on
8  delay(500);              // 500 ms bekle / wait 500 ms
9  digitalWrite(13, LOW);   // LED söner / LED off
10  delay(500);              // 500 ms bekle / wait 500 ms
11}
MicroPython
1# Örnek 1: dahili LED'i yakıp söndür / Example 1: blink the onboard LED
2from machine import Pin
3import time
4
5led = Pin("LED", Pin.OUT)  # Pico ve Pico W'de dahili LED / onboard LED on Pico and Pico W
6# Pin(25, Pin.OUT) yalnız düz Pico'da çalışır / Pin(25, Pin.OUT) works only on the plain Pico
7
8while True:                # Arduino'daki loop() gibi / like loop() in Arduino
9    led.on()               # LED yanar / LED on
10    time.sleep_ms(500)     # 500 ms bekle / wait 500 ms
11    led.off()              # LED söner / LED off
12    time.sleep_ms(500)     # 500 ms bekle / wait 500 ms

Le deuxième exemple ajoute une entrée : la LED reste allumée tant que le bouton est enfoncé. Le bouton se branche entre la broche 2 et GND sur l'Uno, et entre GP14 et GND sur la Pico. Sur l'Uno, on reprend la LED intégrée de la broche 13 ; sur la Pico, branche une LED externe sur GP15 avec une résistance de 220 Ω (l'outil Résistance de LED calcule la valeur pour ta propre LED). Dans les deux langages, on active la résistance de tirage interne : INPUT_PULLUP sur Arduino, Pin.PULL_UP en MicroPython. Avec ce câblage, la logique est inversée : un appui relie la broche à GND, l'Arduino lit LOW et la Pico lit 0. La pause de 20 ms à la fin ne règle pas complètement les rebonds mécaniques du bouton, mais elle réduit les clignotements très brefs. Les détails du câblage sont dans l'article brancher un bouton sur Arduino.

C++ (Arduino IDE)
1// Örnek 2: butona basılıyken LED yanar / Example 2: LED on while the button is pressed
2const int BUTTON_PIN = 2;  // buton: 2. pin ile GND arasında / button between pin 2 and GND
3const int LED_PIN = 13;    // dahili LED / built-in LED
4
5void setup() {
6  pinMode(BUTTON_PIN, INPUT_PULLUP);  // iç pull-up direnci açık / internal pull-up on
7  pinMode(LED_PIN, OUTPUT);
8}
9
10void loop() {
11  if (digitalRead(BUTTON_PIN) == LOW) {  // basılıyken LOW okunur / reads LOW while pressed
12    digitalWrite(LED_PIN, HIGH);
13  } else {
14    digitalWrite(LED_PIN, LOW);
15  }
16  delay(20);  // kısa bekleme / short pause
17}
MicroPython
1# Örnek 2: butona basılıyken LED yanar / Example 2: LED on while the button is pressed
2from machine import Pin
3import time
4
5button = Pin(14, Pin.IN, Pin.PULL_UP)  # buton: GP14 ile GND arasında / button between GP14 and GND
6led = Pin(15, Pin.OUT)                 # LED: GP15 + 220 ohm direnç / LED on GP15 with 220 ohm
7
8while True:
9    if button.value() == 0:            # basılıyken 0 okunur / reads 0 while pressed
10        led.value(1)
11    else:
12        led.value(0)
13    time.sleep_ms(20)                  # kısa bekleme / short pause

Le troisième exemple montre la différence la plus importante entre les deux langages : les plages de nombres. La patte du milieu du potentiomètre va sur A0 sur l'Uno et sur GP26 sur la Pico ; les pattes extérieures vont sur 5V et GND sur l'Uno, et sur 3V3 (OUT) et GND sur la Pico. La LED se branche sur la broche 9 (marquée ~) de l'Uno et sur GP15 de la Pico, chaque fois avec une résistance de 220 Ω. Sur Arduino, analogRead renvoie 0–1023 mais analogWrite attend 0–255 : d'où le map(raw, 0, 1023, 0, 255) entre les deux. Sur la Pico, read_u16 et duty_u16 utilisent tous deux 0–65535, tu peux donc passer la mesure directement au PWM. Le fonctionnement du PWM est expliqué dans l'article qu'est-ce que le PWM, et l'affichage des valeurs en direct dans le guide du moniteur série.

C++ (Arduino IDE)
1// Örnek 3: potansiyometreyle LED parlaklığı / Example 3: LED brightness with a potentiometer
2const int POT_PIN = A0;  // potansiyometrenin orta ucu / potentiometer wiper
3const int LED_PIN = 9;   // ~ işaretli PWM pini / PWM pin marked with ~
4
5void setup() {
6  pinMode(LED_PIN, OUTPUT);
7  Serial.begin(9600);
8}
9
10void loop() {
11  int raw = analogRead(POT_PIN);               // 0-1023
12  int brightness = map(raw, 0, 1023, 0, 255);  // 0-255 aralığına ölçekle / scale to 0-255
13  analogWrite(LED_PIN, brightness);
14  Serial.println(raw);                         // Seri Monitör'de izle / watch in the Serial Monitor
15  delay(50);
16}
MicroPython
1# Örnek 3: potansiyometreyle LED parlaklığı / Example 3: LED brightness with a potentiometer
2from machine import Pin, ADC, PWM
3import time
4
5pot = ADC(26)            # GP26 = ADC0, orta uç / wiper on GP26 (ADC0)
6led = PWM(Pin(15))       # LED: GP15 + 220 ohm direnç / LED on GP15 with 220 ohm
7led.freq(1000)           # saniyede 1000 aç-kapa / 1000 cycles per second
8
9while True:
10    raw = pot.read_u16()     # 0-65535
11    led.duty_u16(raw)        # aynı aralık, ölçekleme gerekmez / same range, no scaling needed
12    print(raw)               # Thonny kabuğunda izle / watch in the Thonny shell
13    time.sleep_ms(50)
NotionArduino C++MicroPython (Pico)
S'exécute une foisvoid setup() { … }Les lignes avant while True:
Se répète sans finvoid loop() { … }while True: et les lignes indentées en dessous
Bloc de codeAccolades { } et ; en fin de ligne: en fin de ligne et indentation de 4 espaces
Commentaire// commentaire# commentaire
Broche en sortiepinMode(13, OUTPUT); digitalWrite(13, HIGH);led = Pin(15, Pin.OUT) · led.value(1)
Broche en entréepinMode(2, INPUT_PULLUP); digitalRead(2)Pin(14, Pin.IN, Pin.PULL_UP) · button.value()
Lecture analogiqueanalogRead(A0) → 0–1023ADC(26).read_u16() → 0–65535
Sortie PWManalogWrite(9, 0–255)PWM(Pin(15)).duty_u16(0–65535)
Attendredelay(500)time.sleep_ms(500) ou time.sleep(0.5)
AfficherSerial.begin(9600); Serial.println(x);print(x)

Mini-test, « Compris » et ta progression dans Mon niveau

  • Mini-test : Chaque fiche se termine par deux questions, et le titre indique Mini-test · 1 / 2. Quand tu touches une réponse, tu obtiens tout de suite Exact. ou Pas tout à fait. avec une courte explication ; tu continues avec Question suivante.
  • Score : Une fois les deux questions faites, tu vois un score comme 2 / 2 bonnes réponses. La fiche ne peut pas être terminée sans le test ; à la place du bouton s'affiche Fais le mini-test pour terminer la fiche.
  • Compris : Le test terminé, le bouton Compris, fiche suivante apparaît (sur la dernière fiche d'un parcours, seulement Compris). En le touchant, la fiche est enregistrée comme apprise sur ton compte, une petite célébration affiche ta progression, par exemple Super ! 5 / 18 fiches, et la fiche suivante s'ouvre.
  • Badge et compteur : Les fiches apprises portent la mention Apprise dans la liste, et le compteur Ce que tu as appris en haut du guide augmente. Quand tu as terminé toutes les fiches d'un parcours, le message Tu as appris toutes les fiches de ce parcours s'affiche.
  • Mon niveau : Sur l'écran Mon niveau de la section Apprendre, sous le titre Guide du code et la mention Fiches apprises, il y a deux barres séparées : Arduino C++ x/18 et MicroPython x/18. Ces barres ne comptent que les fiches du guide du code.
  • Une règle honnête avec toi-même : L'application ne te bloque pas après une mauvaise réponse ; le bouton Compris apparaît dès que le test est fini. Avant de le toucher, assure-toi donc de pouvoir expliquer à voix haute pourquoi les deux réponses sont correctes ; sinon, reviens à la section Exemple et relis le code ligne par ligne.

Voir dans les projets : retrouver la commande dans du vrai code

La dernière étape pour apprendre une commande, c'est de la reconnaître dans un projet qui fonctionne et qu'une autre personne a écrit. Dans la section Voir dans les projets, la fiche présente quelques projets choisis et, en dessous, une phrase qui indique dans combien de projets la commande apparaît ; le lien Tous ouvre la liste complète. Elle est triée du plus facile au plus difficile et se filtre avec Tous, Gratuit et Premium. millis, par exemple, apparaît dans le code de plus de 50 projets : la liste commence par le projet gratuit ESP32 Contrôle de LED avec bouton (Toggle), continue avec des projets Pico pour débutants comme Piano à boutons avec Raspberry Pi Pico (5 boutons + buzzer + enregistreur) et Radar de recul avec Raspberry Pi Pico (HC-SR04 + 3 LED + buzzer), puis monte vers des projets de niveau intermédiaire comme Feu de signalisation Raspberry Pi Pico avec sélecteur à 4 modes (machine à états, GP11-13 + GP4), qui associent un bouton et une temporisation. Notre conseil : ouvre un projet gratuit de la liste, cherche la commande dans le code, change une valeur et prédis le résultat avant de tester. Pour voir ce que fait chaque ligne, l'onglet Comprendre le code du projet est l'étape suivante naturelle.

Ordre d'apprentissage conseillé : un plan sur 4 semaines

Supposons que tu peux consacrer environ 20 minutes par jour, 5 jours par semaine. Pour terminer un parcours en 4 semaines, une fiche suffit la plupart des jours ; les autres jours, tu révises et tu travailles sur un projet au lieu d'une nouvelle fiche. Si tu as un Arduino, suis seulement la colonne Arduino ; si tu as une Pico, la colonne MicroPython. Si tu as les deux cartes, termine d'abord le parcours Arduino et passe à MicroPython le deuxième mois ; les notions sont les mêmes, le second parcours va donc beaucoup plus vite. Tous les projets du tableau sont gratuits sur BlueGrays. Pour un plan plus large, la feuille de route sur 30 jours de l'article application pour apprendre Arduino se combine bien avec ce tableau ; si tu enseignes avec la Pico, le cours Raspberry Pi Pico répartit les fiches MicroPython sur 6 semaines de cours.

SemaineFiches Arduino C++Fiches MicroPythonProjets gratuits de la semaineCe que tu sais faire en fin de semaine
11–5 : pinMode, digitalWrite, digitalRead, analogRead, analogWrite1–5 : import, print, broche en sortie, broche en entrée, time.sleepClignotement d'une LED, Allumer une LED avec un bouton-poussoir (Push) ; Pico : Clignotement LED Intégrée Raspberry Pi Pico (Pico et Pico W)Faire clignoter une LED, lire un bouton ; sur Arduino, voir une valeur analogique
26–10 : delay, millis, variables, if / else, opérateurs6–9 : while True, indentation, variables, if / elif / elseVeilleuse avec LDR, ESP32 Contrôle de LED avec bouton (Toggle) ; Pico : Raspberry Pi Pico Deux LEDs alternées (Flip-Flop, GP14 + GP13)Décider selon une mesure, temporiser sans arrêter le programme
311–14 : for, while, fonctions, tableaux10–13 : for et range, listes, def, ADCChenillard K2000 à LED, Chenillard à LED ; Pico : Simulateur de Feu de Circulation Raspberry Pi Pico (3 LEDs séquentielles, GP11/GP12/GP13)Mettre les répétitions dans des boucles, les broches dans des tableaux et les tâches dans des fonctions
415–18 : Serial, map, random, tone14–18 : PWM, ticks_ms, Pin.irq, try / except, I2CUtilisation du buzzer, Mesurer l'intensité lumineuse avec une LDR ; Pico : Feu de signalisation Raspberry Pi Pico avec sélecteur à 4 modes (machine à états, GP11-13 + GP4)Afficher des valeurs, régler le son et la luminosité, monter un petit projet de A à Z

Une routine quotidienne de 20 minutes

  1. 3 minutes, échauffement : Réponds aux questions du jour dans la section Apprendre ou refais le mini-test d'hier. L'objectif est de vérifier que tu te souviens encore aujourd'hui de la commande d'hier.
  2. 5 minutes, nouvelle fiche : Lis les sections À quoi ça sert ?, Pourquoi ? et Syntaxe. Recopie la syntaxe à la main sur une feuille ; en l'écrivant, tu laisses beaucoup moins passer les parenthèses et les points-virgules.
  3. 3 minutes, exemple : Explique-toi l'exemple ligne par ligne, puis change d'onglet. Sur une fiche Arduino, regarde l'onglet MicroPython, sur une fiche MicroPython l'onglet Arduino, et fais correspondre les lignes qui font la même chose dans les deux programmes.
  4. 2 minutes, mini-test : Réponds aux deux questions et lis l'explication de celle que tu as ratée. Jette à ce moment-là un nouveau coup d'œil aux encadrés Erreur fréquente et Astuce.
  5. 6 minutes, projet : Ouvre un projet gratuit et facile depuis la liste Voir dans les projets, trouve la commande dans le code et change une seule valeur : une attente, un numéro de broche ou un seuil. Si ton circuit est prêt, téléverse le code sur la carte ; sinon, prédis le résultat et vérifie-le avec Comprendre le code.
  6. 1 minute, note : Écris une ligne dans ton cahier : le nom de la commande, son sens en une phrase et son équivalent dans l'autre langage. Au bout de quatre semaines, cette page devient ton propre dictionnaire de commandes.

8 erreurs fréquentes avec ces commandes

ErreurSymptômeSolutionFiche
Oublier pinModeLa LED ne s'allume pas ou brille très faiblementÉcris pinMode(pin, OUTPUT) dans setup() ; sur la Pico, crée la broche avec Pin(15, Pin.OUT)pinMode · broche en sortie
Écrire = au lieu de == dans une conditionif (x = 5) est toujours vrai, le programme passe toujours dans la même brancheUtilise == pour comparer ; en Python, if x = 5 provoque directement une SyntaxErrorif / else · opérateurs
Bloquer le code avec un long delayTu appuies sur le bouton, mais la réaction arrive tard ou jamaisFais l'attente avec millis ; sur la Pico, utilise time.ticks_ms et ticks_diffdelay · millis · ticks_ms
Confondre la plage d'analogReadUn seuil copié d'Arduino ne se déclenche jamais sur la PicoSur l'Uno analogRead donne 0–1023, sur la Pico read_u16 donne 0–65535 ; recalcule le seuil pour la nouvelle plageanalogRead · ADC
Reprendre une valeur d'analogWrite dans duty_u16Sur la Pico, avec duty_u16(255) la LED reste presque éteinteduty_u16 attend 0–65535 : mi-luminosité 32768, pleine luminosité 65535analogWrite · PWM
Stocker millis dans un intSur l'Uno, la temporisation se dérègle au bout d'environ 33 secondesDéclare les variables de temps en unsigned long et écris le test sous la forme maintenant - précédent >= intervallemillis
Attendre la logique INPUT_PULLUP à l'enversTu attends HIGH ou 1 en appuyant, mais tu obtiens LOW ou 0Avec un pull-up, appuyé vaut LOW (0) et relâché HIGH (1)digitalRead · broche en entrée
Écrire sleep(500) sur la PicoLa Pico attend 500 secondes, plus de 8 minutes, au lieu d'une demi-secondesleep prend des secondes : écris sleep(0.5) ou sleep_ms(500)time.sleep

L'onglet Blocs : comprendre une commande en la voyant

Blocs en français du projet Clignotement d'une LED : régler la broche 9 en SORTIE, puis dans répéter indéfiniment, écrire HAUT sur la broche 9, attendre 100 ms, écrire BAS sur la broche 9, attendre 100 ms
Blocs du projet gratuit Clignotement d'une LED : le bloc « configuration (une fois) » correspond à setup() et « répéter indéfiniment » à loop().

L'onglet Blocs te montre ce que fait une commande sans écrire de code, surtout sur les premières fiches d'un parcours. Dans l'image ci-dessus, pinMode devient le bloc « régler la broche 9 en SORTIE », digitalWrite devient « écrire HAUT sur la broche 9 » et delay « attendre 100 ms » ; sur la fiche pinMode, une note sous la vue en blocs rappelle aussi les options du menu déroulant : SORTIE, ENTRÉE et ENTRÉE (PULLUP). Les blocs s'affichent dans la langue de l'application et servent à lire : dans l'application, tu ne fais pas glisser de blocs pour écrire un programme, et la carte reçoit toujours le vrai code. La méthode conseillée : prédis d'abord dans l'onglet Blocs ce que fera le programme, puis passe à l'onglet Arduino et retrouve à quelle ligne correspond chaque bloc. Dans les projets qui ont une vue en blocs, l'interrupteur Voir en blocs de la page du projet te permet de faire la même correspondance sur un projet entier ; les bases sont dans l'article qu'est-ce que la programmation par blocs.

En bref, pas besoin d'une longue liste pour apprendre les commandes Arduino : il suffit du bon ordre, d'un petit exemple qui fonctionne pour chaque commande, d'une vérification en deux questions et d'un vrai projet qui utilise la commande. Si tu commences aujourd'hui par la fiche pinMode, dans quatre semaines tu auras terminé les 18 fiches et vu chaque commande de tes propres yeux dans au moins un projet ; quand tu passeras à la Pico, tu parcourras les mêmes notions dans le parcours MicroPython beaucoup plus vite. Si tu veux essayer les fiches et les projets qu'elles contiennent, installe BlueGrays sur ton téléphone et ouvre la première fiche dans la section Apprendre.

Questions fréquentes

Quelles sont les commandes Arduino de base ?

Les commandes Arduino les plus utilisées sont celles des broches (pinMode, digitalWrite, digitalRead, analogRead, analogWrite), celles du temps (delay, millis), celles du port série avec Serial, et des aides comme map, random et tone. À côté, des structures C++ comme if, for et while, ainsi que les fonctions, construisent le déroulement du programme. Le parcours Arduino C++ du Guide du code de BlueGrays aborde ces thèmes dans l'ordre sur 18 fiches.

Par quelle commande Arduino commencer ?

Commence par pinMode et digitalWrite : ces deux commandes suffisent pour allumer une LED et tu vois le résultat tout de suite. Ajoute ensuite la temporisation avec delay et la lecture d'un bouton avec digitalRead. analogRead, millis, if et for s'appuient tous sur ces quatre commandes.

Quelle différence entre les commandes Arduino et MicroPython ?

Les notions sont les mêmes, l'écriture change : Pin(15, Pin.OUT) et led.value(1) remplacent pinMode et digitalWrite, time.sleep_ms remplace delay et while True remplace loop(). Les plages de nombres changent aussi ; analogRead renvoie 0–1023 sur l'Uno, read_u16 renvoie 0–65535 sur la Pico. En Python, l'indentation et les deux-points prennent la place des accolades et des points-virgules du C++.

Existe-t-il une commande delay en MicroPython ?

Il n'y a pas de commande nommée delay ; sleep (secondes), sleep_ms (millisecondes) et sleep_us (microsecondes) du module time font le même travail. Le delay(500) d'Arduino devient time.sleep_ms(500) ou time.sleep(0.5) sur la Pico. Pour temporiser sans arrêter le code, time.ticks_ms et time.ticks_diff remplacent millis.

Sur quelle broche est la LED intégrée de la Raspberry Pi Pico ?

Sur la Pico classique, la LED intégrée est reliée à GP25. Sur la Pico W, cette LED est reliée à la puce sans fil, donc Pin(25) ne l'allume pas. Dans les versions actuelles de MicroPython, Pin("LED", Pin.OUT) trouve la LED intégrée sur les deux cartes.

Le Guide du code de BlueGrays est-il gratuit ?

Oui, le Guide du code est gratuit : tu peux lire les 36 fiches, voir les exemples et faire les mini-tests. Les listes Voir dans les projets contiennent des projets gratuits et Premium ; le filtre Gratuit n'affiche que les projets gratuits.

Voir tous les projets
Clignotement d'une LED
#1Débutant

Clignotement d'une LED

Le tout premier bonjour de l'électronique : allumer et éteindre une seule LED. L'Arduino allume et éteint la LED à intervalles très courts, la lumière clignote donc rapidement. Tu vois de la façon la

4.6(188)
1127
Allumer une LED avec un bouton-poussoir (Push)
#9Débutant

Allumer une LED avec un bouton-poussoir (Push)

Comme une sonnette : la lumière reste allumée tant que tu appuies et s'éteint quand tu relâches. L'Arduino surveille le bouton en permanence ; tant qu'il est enfoncé la LED est allumée, et dès que tu

4.8(113)
229
Veilleuse avec LDR
#12Débutant

Veilleuse avec LDR

Une petite veilleuse qui s'allume toute seule quand il fait nuit et s'éteint au matin. Un capteur de lumière mesure la clarté de la pièce, et l'Arduino allume la LED quand il fait assez sombre puis l'

4.8(102)
205
ESP32 Contrôle de LED avec bouton (Toggle)
#105Débutant

ESP32 Contrôle de LED avec bouton (Toggle)

Chaque fois que l'on appuie sur le bouton, la LED change d'état : si elle est allumée, elle s'éteint, si elle est éteinte, elle s'allume. Modèle classique de basculement. Avec le debounce, nous nettoyons le bruit mécanique du bouton-poussoir pour garantir un seul basculement avec une seule pression.

4.6(39)
57
Chenillard K2000 à LED
#6Intermédiaire

Chenillard K2000 à LED

Le fameux balayage lumineux : un point de lumière glisse d'un bout à l'autre de six LED, puis revient. L'Arduino allume chaque LED un dixième de seconde avant de passer à la suivante, fait demi-tour à

4.8(106)
202
Clignotement LED Intégrée Raspberry Pi Pico (Pico et Pico W)
#147Débutant

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

5.0(1)
10
Raspberry Pi Pico Deux LEDs alternées (Flip-Flop)
#149Débutant

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.

5.0(2)
19
Simulateur de Feu de Circulation Raspberry Pi Pico (3 LEDs séquentielles)
#150Débutant

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Ω.

4.0(1)
12