Composants · 17 min de lecture

Brochage Arduino Uno : broches numériques, PWM et analogiques

Brochage de l'Arduino Uno en un tableau : broches numériques 0–13, PWM ~3, 5, 6, 9, 10, 11, analogiques A0–A5, Vin, 5V, 3.3V, I2C, SPI, interruptions et 20 mA.

Le brochage de l'Arduino Uno regroupe 32 points de connexion alignés sur les connecteurs femelles noirs des deux grands côtés de la carte : 14 broches numériques d'entrée/sortie (0–13), dont 6 peuvent fournir du PWM (~3, 5, 6, 9, 10, 11), 6 entrées analogiques (A0–A5) et les broches d'alimentation qui alimentent la carte ou fournissent du courant à d'autres composants (Vin, 5V, 3.3V, GND, IOREF, AREF, RESET). Chaque broche a une fonction principale, mais beaucoup en ont une seconde : A4 et A5 forment aussi le bus I2C, 10 à 13 le bus SPI, 2 et 3 sont des broches d'interruption, et 0 et 1 sont la liaison série qui dialogue avec ton ordinateur.

Choisir la bonne broche fait la différence entre un projet qui marche du premier coup et des heures de dépannage. Grâce aux tableaux de cet article, tu comprendras facilement pourquoi le PWM des broches 9 et 10 s'arrête dès que tu branches un servo, pourquoi le téléversement échoue quand un module Bluetooth est connecté ou pourquoi quelques LED peuvent surcharger la carte. À la fin, tu trouveras aussi un programme de test qui utilise tous les types de broches à la fois, un exemple de plan de câblage et les différences de broches entre l'Uno R3 et le R4.

Carte Arduino Uno R3 et ses broches
Arduino Uno R3 : broches numériques (0–13) sur le bord supérieur, broches d'alimentation et entrées analogiques (A0–A5) sur le bord inférieur, connecteur ICSP 2×3 sur le bord droit.

Schéma de brochage de l'Arduino Uno : où se trouve chaque broche ?

Pose la carte devant toi avec la prise USB et le jack d'alimentation à gauche. Les deux connecteurs du bord supérieur portent les broches numériques ; les numéros augmentent de droite à gauche, donc la broche la plus à droite est la 0 (RX) et la broche numérique la plus à gauche est la 13. Sur le bord inférieur, le connecteur de gauche porte les broches d'alimentation et celui de droite les entrées analogiques. Le ~ (tilde) à côté d'un numéro indique que la broche peut fournir du PWM. Le groupe de 2×3 broches mâles sur le bord droit de la carte est le connecteur ICSP.

ConnecteurBroches (de gauche à droite)Rôle
En haut à gauche (10 broches)SCL, SDA, AREF, GND, 13, 12, ~11, ~10, ~9, 8Copie de l'I2C, référence analogique, SPI et broches numériques
En haut à droite (8 broches)7, ~6, ~5, 4, ~3, 2, TX→1, RX←0Broches numériques, broches d'interruption et liaison série
En bas à gauche (8 broches)Libre (NC), IOREF, RESET, 3.3V, 5V, GND, GND, VinBroches d'alimentation
En bas à droite (6 broches)A0, A1, A2, A3, A4, A5Entrées analogiques (A4/A5 servent aussi à l'I2C)
Bord droit (2×3)1 MISO, 2 5V, 3 SCK, 4 MOSI, 5 RESET, 6 GNDConnecteur de programmation ICSP
CaractéristiqueArduino Uno R3
MicrocontrôleurATmega328P, 16 MHz
Tension de fonctionnement (logique)5 V
Tension d'entrée (jack / Vin)Recommandée 7–12 V, limite 6–20 V
Entrées/sorties numériques14 broches (D0–D13)
Sorties PWM6 broches : 3, 5, 6, 9, 10, 11
Entrées analogiques6 broches (A0–A5), 10 bits (0–1023)
Courant par broche20 mA recommandés, 40 mA maximum absolu
Courant total (VCC/GND)200 mA
Courant de la broche 3.3V50 mA maximum
Mémoire32 Ko de flash (0,5 Ko de bootloader), 2 Ko de SRAM, 1 Ko d'EEPROM

Le grand tableau des broches : D0–D13 et A0–A5

BrochePortFonction principaleFonction supplémentaireRemarque
D0 (RX)PD0E/S numériqueUART RX (Serial)Reliée à la puce USB-série, à laisser libre
D1 (TX)PD1E/S numériqueUART TX (Serial)Reliée à la puce USB-série, à laisser libre
D2PD2E/S numériqueInterruption externe INT0Boutons, encodeurs, comptage de tours
D3 ~PD3E/S numérique, PWM 490 HzInterruption externe INT1, Timer2PWM perturbé pendant tone()
D4PD4E/S numérique-Aucune fonction supplémentaire, libre
D5 ~PD5E/S numérique, PWM 980 HzTimer0Même timer que millis()
D6 ~PD6E/S numérique, PWM 980 HzTimer0Même timer que millis()
D7PD7E/S numérique-Aucune fonction supplémentaire, libre
D8PB0E/S numérique-Aucune fonction supplémentaire, libre
D9 ~PB1E/S numérique, PWM 490 HzTimer1La bibliothèque Servo désactive son PWM
D10 ~PB2E/S numérique, PWM 490 HzSPI SS, Timer1Doit rester une sortie avec le SPI
D11 ~PB3E/S numérique, PWM 490 HzSPI MOSI, Timer2Aussi sur le connecteur ICSP
D12PB4E/S numériqueSPI MISOAussi sur le connecteur ICSP
D13PB5E/S numériqueSPI SCKLa LED L de la carte est sur cette broche
A0PC0Entrée analogiqueNumérique 14-
A1PC1Entrée analogiqueNumérique 15-
A2PC2Entrée analogiqueNumérique 16-
A3PC3Entrée analogiqueNumérique 17-
A4PC4Entrée analogiqueI2C SDA, numérique 18Pas de lecture analogique avec l'I2C actif
A5PC5Entrée analogiqueI2C SCL, numérique 19Pas de lecture analogique avec l'I2C actif
Au besoin, les broches analogiques fonctionnent aussi comme des broches numériques ordinaires : A0 = 14, A1 = 15 … A5 = 19. Tu peux écrire pinMode(A2, OUTPUT) pour allumer une LED ou lire un bouton avec digitalRead(A3) ; tu disposes ainsi de 20 broches numériques au total sur l'Uno. La colonne « Port » du tableau est le vrai nom de la broche dans l'ATmega328P (numérique 13 = PB5) ; elle sert quand tu écris du code rapide avec un accès direct aux ports. A6 et A7 n'existent que sur des cartes comme le Nano et le Pro Mini.

Comment fonctionnent les broches numériques (0–13) ?

Chaque broche numérique est configurée en entrée ou en sortie avec pinMode(). En sortie, digitalWrite(pin, HIGH) amène la broche à environ 5 V et LOW à 0 V. En entrée, digitalRead() compare la tension à un seuil : avec l'ATmega328P alimenté en 5 V, tout ce qui dépasse 3,0 V est un HIGH garanti, tout ce qui est sous 1,5 V un LOW garanti, et l'intervalle entre les deux est une zone indéterminée. C'est pourquoi la sortie d'un capteur 3,3 V est généralement lue comme HIGH par l'Uno ; en revanche, la sortie 5 V de l'Uno ne doit pas aller directement sur l'entrée d'un module 3,3 V, il faut un convertisseur de niveau logique entre les deux.

Une broche d'entrée reliée à rien est flottante et lit HIGH et LOW au hasard, même quand tu approches la main. La solution consiste à tirer la broche vers un niveau fixe avec une résistance : pinMode(pin, INPUT_PULLUP) active la résistance de 20 à 50 kΩ intégrée à la puce, et le bouton se branche entre la broche et GND. Les détails sont dans Comment brancher un bouton-poussoir sur Arduino. La broche 13 est reliée à la LED L de la carte ; sur un R3 d'origine, cette LED est pilotée par un amplificateur opérationnel monté en tampon, donc utiliser la broche en entrée ne pose pas de problème, mais sur certains clones la LED et sa résistance sont branchées directement sur la broche et peuvent fausser la lecture d'un bouton avec le pull-up interne.

Broches PWM (~3, 5, 6, 9, 10, 11) et timers

L'Uno ne sait pas produire une vraie sortie analogique ; ces six broches fournissent à la place du PWM, un signal carré qui s'allume et s'éteint très vite. Avec analogWrite(pin, valeur), tu règles entre 0 et 255 la durée pendant laquelle le signal reste allumé : 0 correspond à éteint, 127 à environ la moitié et 255 à allumé en permanence. C'est ainsi qu'on règle la luminosité d'une LED, la vitesse d'un moteur ou celle d'un ventilateur. Les six broches PWM sont reliées deux par deux à trois timers matériels, et c'est la cause des conflits avec certaines bibliothèques. Le principe du PWM et le calcul du rapport cyclique sont expliqués dans Qu'est-ce que le PWM ?.

TimerBroches PWMFréquenceQui utilise ce timer ?
Timer0 (8 bits)5, 6Environ 980 Hzmillis(), delay() et micros()
Timer1 (16 bits)9, 10Environ 490 HzBibliothèque Servo
Timer2 (8 bits)3, 11Environ 490 Hztone() et des bibliothèques comme IRremote
Dès que tu utilises la bibliothèque Servo, analogWrite() ne fonctionne plus sur les broches 9 et 10, même si aucun servo n'y est branché. Pendant qu'un buzzer joue avec tone(), le PWM des broches 3 et 11 est lui aussi perturbé. Si ton projet comporte un servo et un buzzer, les broches PWM sûres sont la 5 et la 6. Comme le PWM de ces deux broches vient du même timer que millis(), les valeurs très faibles (0–10) peuvent rester allumées un peu plus longtemps que prévu.

Broches analogiques (A0–A5) et AREF

Les broches analogiques mesurent une tension entre 0 et 5 V avec une résolution de 10 bits, et analogRead() renvoie un nombre de 0 à 1023. Un pas vaut environ 4,9 mV ; pour convertir ce nombre en volts, utilise tension = valeur × 5,0 / 1023 : une lecture de 512 correspond donc à environ 2,5 V. Les six broches partagent à tour de rôle un seul convertisseur analogique-numérique (CAN), et une lecture dure environ 100 µs, soit environ 10 000 lectures par seconde. Pour des mesures justes, l'impédance de sortie du capteur ne doit pas dépasser 10 kΩ ; au-delà, deux broches lues coup sur coup peuvent se mélanger, et ignorer la première lecture pour garder la seconde règle le problème. Pour mesurer des tensions supérieures à 5 V, choisis les bonnes résistances avec le calculateur de pont diviseur de tension.

La broche AREF permet de changer la limite haute de la mesure analogique. analogReference(DEFAULT) utilise 5 V, analogReference(INTERNAL) la référence interne de 1,1 V de la puce, et analogReference(EXTERNAL) la tension que tu appliques sur AREF (0–5 V) comme pleine échelle. Avec un capteur qui sort 0 à 1 V, la référence de 1,1 V réduit un pas à environ 1,1 mV et rend la mesure environ 4,5 fois plus fine. Les potentiomètres, les LDR et les capteurs d'humidité du sol se branchent sur ces broches ; les détails de la conversion analogique-numérique sont dans l'article sur le CAN, et un exemple concret dans l'article sur le potentiomètre.

Si tu appliques une tension externe sur la broche AREF, écris toujours analogReference(EXTERNAL) avant le premier analogRead(). Sinon, la référence interne de la puce et la tension externe se retrouvent en court-circuit et le microcontrôleur peut être endommagé. Et n'applique jamais plus de 5 V ni une tension négative sur les broches analogiques.

Broches d'alimentation : Vin, 5V, 3.3V, GND, IOREF et RESET

BrocheQue fait-elle ?Limites et précautions
VinFournit la tension venant du jack ou alimente la carte en 7–12 VContourne la diode de protection contre l'inversion, attention à la polarité
5VSortie 5 V du régulateur ou de l'USBFusible de 500 mA sur l'USB ; de l'extérieur, uniquement du 5 V régulé
3.3VSortie 3,3 V du régulateur de la carte50 mA maximum ; pour de petits modules comme le RC522
GNDMasse commune (2 en bas, 1 en haut)La masse de toutes les sources externes doit être reliée ici
IOREFIndique aux shields la tension logique de la carteReliée au 5V sur l'Uno, pas faite pour alimenter
RESETRedémarre la carte quand elle passe à LOWUtilisée par les boutons reset des shields
AREFEntrée de référence externe pour les mesures analogiques0–5 V ; d'abord analogReference(EXTERNAL)
NC (broche sans nom)Réservée à un usage futur sur le R3Reliée à rien

L'Uno peut être alimenté de trois façons. Par USB, la carte prend le 5 V directement sur l'ordinateur, et un fusible réarmable de 500 mA protège le port. Si tu fournis 7 à 12 V par le jack DC ou par Vin, le régulateur de la carte les abaisse à 5 V ; si les deux sont branchés, la carte bascule automatiquement sur l'alimentation externe dès que Vin dépasse environ 6,6 V. Comme le régulateur transforme la tension en trop en chaleur, il chauffe vite avec 12 V en entrée si tu tires quelques centaines de mA sur la broche 5V. Le plus sain est d'alimenter les charges comme les servos, les moteurs et les rubans LED avec une source séparée et de relier seulement les masses. Pour choisir une batterie et estimer l'autonomie, utilise le calculateur d'autonomie de batterie, et découvre toutes les méthodes d'alimentation dans Comment alimenter un Arduino.

N'injecte jamais plus de 5 V sur la broche 5V : le régulateur est contourné et toute tension au-dessus de 6 V peut détruire l'ATmega328P. Brancher par erreur une pile 9 V sur la broche 5V est l'une des façons les plus courantes de griller sa carte quand on débute. Branche toujours une pile sur le jack DC ou sur la broche Vin.

Pourquoi laisser libres les broches 0 et 1 ?

Les broches 0 (RX) et 1 (TX) constituent le seul port série matériel de l'ATmega328P et, sur la carte, elles sont reliées par des résistances de 1 kΩ à la puce de conversion USB-série (ATmega16U2). Ton ordinateur utilise ces deux broches pour téléverser le code et pour envoyer du texte au moniteur série. Si la sortie TX d'un module Bluetooth ou un autre signal est branché sur la broche 0, les deux sources se disputent la même ligne et le téléversement s'arrête avec avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00. De plus, la broche 1 change rapidement d'état à chaque Serial.print() ; une LED ou un relais branché dessus s'active alors au hasard.

Laisse donc 0 et 1 libres tant qu'il te reste d'autres broches. Si tu dois brancher un module série comme un HC-05, un GPS ou un lecteur MP3, la bibliothèque SoftwareSerial crée un second port série sur deux autres broches. Le programme ci-dessous relie le module aux broches 8 (RX) et 7 (TX) : il transmet au module ce que tu tapes dans le moniteur série et à l'ordinateur ce qu'envoie le module. Avec les modules en logique 3,3 V comme le HC-05, relie la sortie TX de l'Uno (broche 7) à l'entrée RX du module à travers un pont diviseur de tension. Toutes les solutions aux problèmes de téléversement sont dans Arduino : le téléversement échoue, et le principe de la liaison série dans Communication série UART.

C++ (Arduino IDE)
1#include <SoftwareSerial.h>
2
3SoftwareSerial moduleSerial(8, 7);   // RX = 8, TX = 7; 0 ve 1 boş kalır / 0 and 1 stay free
4
5void setup() {
6  Serial.begin(9600);                // USB üzerinden bilgisayar / computer over USB
7  moduleSerial.begin(9600);          // HC-05 veri modu hızı / HC-05 data mode baud rate
8  Serial.println(F("Seri kopru hazir / Serial bridge ready"));
9}
10
11void loop() {
12  if (moduleSerial.available()) {
13    Serial.write(moduleSerial.read());   // modülden bilgisayara / module to computer
14  }
15  if (Serial.available()) {
16    moduleSerial.write(Serial.read());   // bilgisayardan modüle / computer to module
17  }
18}

Broches de communication : I2C (A4/A5), SPI (10–13) et interruptions (2, 3)

L'I2C permet de brancher des dizaines d'appareils sur le même bus avec seulement deux fils (SDA et SCL) ; les écrans LCD, les OLED, les modules d'horloge RTC et les capteurs comme le BME280 l'utilisent. Sur l'Uno, SDA = A4 et SCL = A5. Sur les cartes R3, les broches SDA et SCL situées à côté d'AREF ne forment pas un bus distinct : elles sont reliées en interne à A4 et A5, donc tant que tu utilises l'I2C, A4 et A5 ne peuvent pas servir aux mesures analogiques. La bibliothèque Wire fonctionne à 100 kHz par défaut et monte à 400 kHz avec Wire.setClock(400000). Les adresses, les résistances de pull-up et un scanner I2C sont présentés dans Qu'est-ce que l'I2C ?, et un exemple pratique dans Écran LCD I2C.

Le SPI est plus rapide mais demande plus de fils : MOSI = 11, MISO = 12, SCK = 13 et SS (CS) = 10. Les modules carte SD, les lecteurs RFID et les écrans TFT utilisent le SPI. Plusieurs appareils peuvent partager le bus : MOSI, MISO et SCK sont communs et chaque appareil reçoit sa propre broche CS. Détail important : en mode maître (master), la broche 10 doit rester une sortie ; si tu la passes en entrée et qu'elle est tirée à LOW, l'ATmega328P bascule en mode esclave (slave) et le SPI s'arrête. MISO, MOSI et SCK sont aussi présents sur le connecteur ICSP, d'où certains shields récupèrent le SPI. Pour en savoir plus, consulte Qu'est-ce que le SPI ? et RFID RC522.

Une interruption te permet de capter instantanément un changement sur une broche, quoi que loop() soit en train de faire. Sur l'Uno, les interruptions externes n'existent que sur les broches 2 (INT0) et 3 (INT1) : tu écris attachInterrupt(digitalPinToInterrupt(2), fonction, FALLING), et le mode de déclenchement peut être LOW, CHANGE, RISING ou FALLING. Les encodeurs, capteurs de vitesse de rotation, débitmètres et boutons qu'il ne faut jamais rater vont sur ces broches. Les autres broches disposent aussi d'« interruptions sur changement d'état » (PCINT), mais les broches d'un même port partagent une seule fonction d'interruption et ton code doit déterminer laquelle a changé. Les règles et les exemples sont dans Les interruptions Arduino.

FonctionArduino UnoESP32 (DevKit)Raspberry Pi Pico
I2C SDA / SCLA4 / A5GPIO 21 / 22GP4 / GP5
SPI MOSI / MISO / SCK / CS11 / 12 / 13 / 10GPIO 23 / 19 / 18 / 5GP19 / GP16 / GP18 / GP17
UART TX / RX1 / 0GPIO 1 / 3 (reliées à l'USB)GP0 / GP1
Interruption externeSeulement 2 et 3Toutes les GPIOToutes les GPIO
PWM6 brochesPresque toutes les broches capables de sortieToutes les GPIO
Entrée analogique6 broches, 10 bitsADC1 : GPIO 32–39, 12 bitsGP26, GP27, GP28 ; 12 bits
Niveau logique5 V3,3 V (ne tolère pas le 5 V)3,3 V (ne tolère pas le 5 V)
Courant par broche20 mA (40 mA max.)Environ 20 mA recommandés4 mA par défaut, 12 mA max.

En passant à l'ESP32 ou au Pico, la plus grande différence est la tension : les deux cartes fonctionnent en 3,3 V et leurs broches ne tolèrent pas le 5 V, donc les modules 5 V que tu branches directement sur l'Uno peuvent nécessiter un convertisseur de niveau. En contrepartie, ces cartes offrent des interruptions et du PWM sur presque toutes les broches, et leurs bus I2C et SPI peuvent être déplacés sur d'autres broches. Pour comparer les cartes, lis Arduino Uno ou ESP32 ?, et pour voir les brochages, utilise l'outil de brochage ; les cartes elles-mêmes sont présentées dans Qu'est-ce que l'ESP32 ? et Qu'est-ce que le Raspberry Pi Pico ?.

À quoi sert le connecteur ICSP ?

L'ICSP (In-Circuit Serial Programming) est un connecteur 2×3 qui sert à programmer le microcontrôleur directement par les lignes SPI, sans USB ni bootloader. L'ICSP du bord droit appartient à l'ATmega328P, tandis que le petit ICSP1 à côté de la prise USB appartient à la puce USB-série (ATmega16U2). Au quotidien, tu n'y touches pas ; l'ICSP entre en jeu quand le bootloader est corrompu, quand tu graves un bootloader sur un ATmega328P neuf ou quand tu téléverses du code avec un programmateur comme l'USBasp. Si tu transformes un second Uno en programmateur avec l'exemple ArduinoISP, ses broches 10, 11, 12 et 13 vont sur RESET, MOSI, MISO et SCK de la carte cible, et un condensateur de 10 µF entre RESET et GND sur l'Uno programmateur empêche sa réinitialisation automatique. Pour savoir si ta carte est endommagée, jette un œil à Mon Arduino est-il grillé ?.

Broche ICSPSignalÉquivalent sur l'Uno
1MISOD12
2VCC (+5 V)5V
3SCKD13
4MOSID11
5RESETRESET
6GNDGND

20 mA par broche, 200 mA au total : les limites de courant

Une broche de l'Uno fonctionne en toute sécurité jusqu'à 20 mA. Les 40 mA de la fiche technique de l'ATmega328P sont le maximum absolu, c'est-à-dire le seuil au-delà duquel la puce peut être endommagée de façon permanente, pas une valeur de fonctionnement. Le courant total qui traverse les broches VCC et GND de la puce ne doit pas dépasser 200 mA. La fiche technique répartit aussi les broches en groupes : en fournissant du courant (HIGH), D0–D4 avec A0–A5, et D5–D13 entre elles, doivent chacun rester sous 150 mA ; en absorbant du courant (LOW), les groupes D0–D4, D5–D13 et A0–A5 doivent chacun rester sous 100 mA. Si tu alimentes une LED rouge en 5 V avec une résistance de 220 Ω, le courant vaut (5 − 2) / 220 ≈ 13,6 mA. Dix LED allumées en même temps font 136 mA ; c'est sous les 200 mA, mais si elles sont toutes dans le même groupe, on frôle la limite de 150 mA du groupe. Si les LED s'allument quand la broche est à LOW (résistance du 5V vers la broche) et que la plupart sont dans le même groupe, la limite de 100 mA est dépassée. Répartis les LED entre les groupes ou monte la résistance à 330–470 Ω. Trouve la bonne résistance avec le calculateur de résistance pour LED ou le calculateur de loi d'Ohm.

  • Moteurs : Même un petit moteur à courant continu consomme des centaines de mA et produit des pics de tension ; utilise un driver de moteur comme le L298N ou un transistor.
  • Bobine de relais : La bobine d'un relais 5 V consomme environ 70 à 90 mA ; utilise un module relais avec transistor et diode.
  • Servomoteurs : Le fil de signal peut aller sur une broche, mais l'alimentation du servo doit venir d'une source séparée, pas de la broche 5V ; les détails sont dans l'article sur le servomoteur.
  • Rubans LED et LED de puissance : Les rubans 12 V et les LED de 1 W demandent un MOSFET à niveau logique.
  • Courts-circuits : Relier directement à GND une sortie à l'état HIGH tire bien plus de 40 mA sur la broche et la détruit définitivement.

Programme de test : broches numériques, PWM, analogiques et interruptions ensemble

  1. Branche une LED sur la broche 9 avec une résistance de 220 Ω : patte longue vers la résistance, patte courte vers GND.
  2. Relie les deux pattes extérieures d'un potentiomètre au 5V et à GND, et la patte du milieu à A0.
  3. Branche un bouton entre la broche 2 et GND ; aucune résistance supplémentaire n'est nécessaire, car le pull-up interne est utilisé.
  4. Téléverse le programme, ouvre le moniteur série et règle-le sur 9600 bauds.
  5. Tourne le potentiomètre : la luminosité de la LED de la broche 9 change, la LED L de la carte (broche 13) s'allume dès que la tension dépasse 2,5 V, et le compteur augmente de un à chaque appui.
C++ (Arduino IDE)
1const byte BUTTON_PIN = 2;    // kesme pini INT0 / interrupt pin INT0
2const byte PWM_LED    = 9;    // ~9: PWM çıkışı / PWM output
3const byte STATUS_LED = 13;   // kart üzerindeki L LED'i / onboard L LED
4const byte POT_PIN    = A0;   // analog giriş / analog input
5
6volatile unsigned int pressCount = 0;   // ISR içinde değişir / changed inside the ISR
7
8void onButton() {
9  static unsigned long lastPressMs = 0;
10  unsigned long now = millis();
11  if (now - lastPressMs > 50) {         // 50 ms sıçrama filtresi / 50 ms debounce
12    pressCount++;
13    lastPressMs = now;
14  }
15}
16
17void setup() {
18  Serial.begin(9600);                   // 0 ve 1 numaralı pinleri kullanır / uses pins 0 and 1
19  pinMode(STATUS_LED, OUTPUT);
20  pinMode(PWM_LED, OUTPUT);
21  pinMode(BUTTON_PIN, INPUT_PULLUP);    // dahili pull-up direnci / internal pull-up resistor
22  attachInterrupt(digitalPinToInterrupt(BUTTON_PIN), onButton, FALLING);
23}
24
25void loop() {
26  int raw = analogRead(POT_PIN);        // 0-1023 arası ham değer / raw value 0-1023
27  float volts = raw * 5.0 / 1023.0;     // volta çevir / convert to volts
28  analogWrite(PWM_LED, raw / 4);        // 0-255 arası PWM / PWM from 0 to 255
29  digitalWrite(STATUS_LED, volts > 2.5 ? HIGH : LOW);   // 2,5 V eşiği / 2.5 V threshold
30
31  noInterrupts();                       // sayacı güvenle kopyala / copy the counter safely
32  unsigned int presses = pressCount;
33  interrupts();
34
35  Serial.print(F("A0: "));
36  Serial.print(raw);
37  Serial.print(F("  V: "));
38  Serial.print(volts, 2);
39  Serial.print(F("  Buton / Button: "));
40  Serial.println(presses);
41  delay(200);
42}

Le programme utilise quatre types de broches de l'Uno en même temps. analogRead(A0) lit une valeur de 0 à 1023, et raw / 4 la ramène à la plage 0–255 attendue par analogWrite(). Pour ne pas compter les rebonds du bouton, la fonction d'interruption ignore les signaux qui arrivent moins de 50 ms après le dernier appui. Le compteur modifié dans l'interruption est déclaré volatile, et loop() le copie en suspendant brièvement les interruptions : l'Uno, un 8 bits, lit un nombre de 16 bits en deux étapes, et une interruption survenant entre les deux pourrait donner une valeur fausse. Les broches 0 et 1 ne servent qu'à Serial, rien d'autre n'y est branché.

Exemple de plan de câblage : quel composant sur quelle broche ?

Répartir les broches au hasard dans un projet à plusieurs composants mène aux conflits. Place d'abord les composants à fonction spéciale (I2C, SPI, interruptions, PWM) sur leurs broches, puis distribue les tâches numériques simples sur les broches libres. Voici un exemple de plan pour une serrure à badge RFID : lecteur RC522, LCD I2C, servo, buzzer, bouton et deux LED. Comme le servo et tone() sont utilisés ensemble, le PWM des broches 3, 9, 10 et 11 est déjà hors jeu, et le plan en tient compte.

ComposantBroche de l'UnoPourquoi cette broche ?
RC522 SDA (SS)10Broche SS du SPI ; doit rester une sortie
RC522 SCK / MOSI / MISO13 / 11 / 12Les broches SPI matérielles ne se changent pas
RC522 RST9N'importe quelle broche numérique convient ; le PWM de la 9 est de toute façon inutilisable à cause du servo
RC522 VCC3.3VLe module fonctionne en 3,3 V et consomme moins que la limite de 50 mA
LCD I2C SDA / SCLA4 / A5Le seul bus I2C de l'Uno
Signal du servo6La bibliothèque Servo fonctionne sur toute broche ; alimentation par un 5 V externe
Buzzer8tone() fonctionne sur toute broche, aucune broche PWM n'est gaspillée
Bouton2Broche d'interruption ; pas de résistance avec INPUT_PULLUP
LED verte / rouge4 / 7Broches numériques simples sans fonction supplémentaire
Laissées libres0, 1, 3, 5, A0–A3Liaison série libre ; 3 pour une seconde interruption, 5 pour le PWM, A0–A3 pour des capteurs

Différences de broches entre l'Arduino Uno R3 et le R4

CaractéristiqueUno R3Uno R4 (Minima / WiFi)
MicrocontrôleurATmega328P, 8 bits, 16 MHzRenesas RA4M1, 32 bits, 48 MHz
Disposition des brochesUno standardIdentique ; les shields s'adaptent
Courant par broche20 mA8 mA
Résolution analogique10 bits10 bits par défaut, jusqu'à 14 bits
Vraie sortie analogique (DAC)AucuneDAC 12 bits sur A0
Broches 0 et 1Partagées avec l'USB (Serial)Séparées de l'USB (Serial1)
Plage de Vin7–12 V recommandés6–24 V
USBUSB-B, via l'ATmega16U2USB-C ; directement sur le processeur sur le Minima, via un pont ESP32-S3 sur le WiFi

En bref, sur le R4 les numéros et les fonctions des broches restent les mêmes (PWM ~3, 5, 6, 9, 10, 11 ; I2C A4/A5 ; SPI 10–13 ; interruptions 2, 3), mais le courant par broche tombe à 8 mA. Une LED que tu pilotais directement depuis une broche sur le R3 demande sur le R4 une résistance plus grande (par exemple 1 kΩ pour environ 3 mA) ou un transistor. La comparaison détaillée se trouve dans Arduino Uno R4. Si tu cherches une carte plus petite, Brochage de l'Arduino Nano et Quel Arduino choisir ? t'aideront.

Erreurs fréquentes et solutions

SymptômeCauseSolution
Le téléversement échoue, erreur « not in sync »Un module est branché sur la broche 0 ou 1Débranche le module pendant le téléversement ou déplace-le sur d'autres broches avec SoftwareSerial
La luminosité de la LED ne varie plus après l'ajout d'un servoLa bibliothèque Servo a désactivé le PWM de 9 et 10Déplace la LED sur 3, 5, 6 ou 11
La vitesse du moteur se dérègle quand le buzzer jouetone() utilise le Timer2, qui perturbe 3 et 11Déplace le PWM sur 5, 6, 9 ou 10
La valeur analogique varie toute seuleBroche flottante ou impédance de source trop élevéeBranche bien le capteur, lis deux fois si besoin
Le bouton semble appuyé au hasardBroche d'entrée flottanteUtilise INPUT_PULLUP ou ajoute une résistance de 10 kΩ
A4/A5 lisent faux avec un écran I2C branchéA4/A5 sont partagées avec le bus I2CBranche le capteur analogique sur A0–A3
Le module SPI ne répond pasLa broche 10 est en entrée ou le CS est fauxGarde la broche 10 en sortie, donne à chaque appareil son propre CS
La carte chauffe ou redémarre seuleTrop de courant tiré sur les broches ou la broche 5VAlimente les charges à part et relie les masses
Avant de commencer un projet, dessine un petit plan de câblage sur papier : composant, broche, rôle. En haut de ton code, définis les broches avec des constantes nommées comme const byte LED_PIN = 9; ; ainsi, déplacer un composant sur une autre broche ne demande de modifier qu'une ligne. Si ta carte redémarre de façon inattendue, suis les étapes de diagnostic de Arduino qui redémarre tout seul.

Une fois que tu connais les broches de l'Arduino Uno, tu n'as plus besoin de retenir par cœur où va chaque composant : tu regardes ce dont il a besoin et tu choisis toi-même la bonne broche. Pour revoir les bases, commence par Qu'est-ce qu'Arduino ?. Dans l'application BlueGrays, tu trouveras des projets comme allumer une LED, lire un bouton, mesurer la lumière avec une LDR, une LED RGB en PWM, un LCD I2C, le RFID et deux Arduino qui communiquent par liaison série, chacun pas à pas avec des schémas qui montrent pourquoi chaque broche a été choisie et du code prêt à l'emploi.

Questions fréquentes

Combien de broches a l'Arduino Uno ?

L'Arduino Uno R3 possède 14 broches numériques d'entrée/sortie (0–13) et 6 entrées analogiques (A0–A5) ; comme les broches analogiques peuvent aussi servir en numérique, cela fait 20 broches de signal au total. Six des broches numériques fournissent du PWM. S'y ajoutent des broches d'alimentation et de contrôle comme Vin, 5V, 3.3V, GND, IOREF, AREF et RESET, ainsi que le connecteur ICSP à 6 broches.

Quelles sont les broches PWM de l'Arduino Uno ?

Les broches PWM sont les 3, 5, 6, 9, 10 et 11 ; sur la carte, leur numéro est accompagné d'un ~. Les broches 5 et 6 fonctionnent à environ 980 Hz, les autres à environ 490 Hz. Le PWM des broches 9 et 10 est affecté quand la bibliothèque Servo est utilisée, celui des broches 3 et 11 quand tone() est utilisé.

Peut-on utiliser les broches analogiques de l'Arduino en numérique ?

Oui. Sur l'Uno, les broches A0–A5 fonctionnent comme des broches numériques normales avec pinMode, digitalWrite et digitalRead et correspondent aux numéros 14 à 19. Tu peux donc brancher une LED sur A0 ou un bouton sur A3. Seule exception : quand tu utilises l'I2C, A4 et A5 sont réservées au bus.

Quel courant peut fournir une broche de l'Arduino Uno ?

Une broche peut fournir 20 mA en toute sécurité ; 40 mA est le maximum absolu, et le dépasser peut endommager la broche de façon permanente. Le total de toutes les broches ne doit pas dépasser 200 mA. C'est pourquoi on branche les LED avec une résistance, et qu'on pilote les charges comme les moteurs et les relais avec un transistor, un MOSFET ou un module driver.

Peut-on utiliser les broches 0 et 1 de l'Arduino Uno ?

C'est possible, mais déconseillé. Ces broches sont reliées à la puce USB-série, et l'ordinateur utilise cette ligne pour téléverser le code et pour le moniteur série. Avec un module branché sur la broche 0, le téléversement peut échouer avec l'erreur « not in sync » ; utilise donc ces broches en dernier ou passe sur d'autres broches avec SoftwareSerial.

Où sont les broches SDA et SCL sur l'Arduino Uno ?

Sur l'Uno, la ligne SDA du bus I2C est la broche A4 et SCL la broche A5. Les cartes R3 ont aussi deux broches marquées SDA et SCL à côté d'AREF, mais elles sont reliées en interne à A4 et A5 et ne forment pas un bus distinct. Sur l'ESP32, les broches I2C par défaut sont GPIO 21 et 22 ; sur le Raspberry Pi Pico, l'I2C peut être placé sur de nombreuses broches, et on utilise le plus souvent GP4 (SDA) et GP5 (SCL).

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
Mesurer l'intensité lumineuse avec une LDR
#11Débutant

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

4.6(81)
139
HC-SR04 Mesure de la distance (affichage en série)
#27Débutant

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

4.6(46)
71
Transition douce des couleurs avec une LED RVB
#40Débutant
Premium

Transition douce des couleurs avec une LED RVB

Une seule LED RGB glisse doucement du rouge au vert, du vert au bleu, puis revient au rouge, dans une boucle arc-en-ciel qui ne s'arrête jamais. Chaque transition dure environ deux secondes et demie,

4.8(58)
76
Utilisation de l'écran LCD avec I2C
#32Débutant
Premium

Utilisation de l'écran LCD avec I2C

Offre un écran à ton Arduino et fais-lui écrire son premier message. L'écran LCD à deux lignes se branche avec seulement quelques fils ; un bonjour s'affiche sur la ligne du haut, puis un deuxième tex

4.8(53)
70
Lecture des valeurs RFID
#53Débutant
Premium

Lecture des valeurs RFID

Le badge de ton immeuble ou ta carte d'accès cache un numéro d'identité secret, et ce projet le lit. Approche la carte du lecteur RFID, et l'Arduino écrit son numéro sur l'écran de ton ordinateur. La

4.7(47)
61
Communication unidirectionnelle entre 2 Arduino
#57Intermédiaire
Premium

Communication unidirectionnelle entre 2 Arduino

Tu fais discuter deux Arduino par un seul fil : appuie sur le bouton de l'un et la LED de l'autre s'allume, appuie encore et elle s'éteint. La carte qui envoie signale l'appui par un court message, et

4.4(37)
50