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.

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.
| Connecteur | Broches (de gauche à droite) | Rôle |
|---|---|---|
| En haut à gauche (10 broches) | SCL, SDA, AREF, GND, 13, 12, ~11, ~10, ~9, 8 | Copie 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←0 | Broches numériques, broches d'interruption et liaison série |
| En bas à gauche (8 broches) | Libre (NC), IOREF, RESET, 3.3V, 5V, GND, GND, Vin | Broches d'alimentation |
| En bas à droite (6 broches) | A0, A1, A2, A3, A4, A5 | Entrées analogiques (A4/A5 servent aussi à l'I2C) |
| Bord droit (2×3) | 1 MISO, 2 5V, 3 SCK, 4 MOSI, 5 RESET, 6 GND | Connecteur de programmation ICSP |
| Caractéristique | Arduino Uno R3 |
|---|---|
| Microcontrôleur | ATmega328P, 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ériques | 14 broches (D0–D13) |
| Sorties PWM | 6 broches : 3, 5, 6, 9, 10, 11 |
| Entrées analogiques | 6 broches (A0–A5), 10 bits (0–1023) |
| Courant par broche | 20 mA recommandés, 40 mA maximum absolu |
| Courant total (VCC/GND) | 200 mA |
| Courant de la broche 3.3V | 50 mA maximum |
| Mémoire | 32 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
| Broche | Port | Fonction principale | Fonction supplémentaire | Remarque |
|---|---|---|---|---|
| D0 (RX) | PD0 | E/S numérique | UART RX (Serial) | Reliée à la puce USB-série, à laisser libre |
| D1 (TX) | PD1 | E/S numérique | UART TX (Serial) | Reliée à la puce USB-série, à laisser libre |
| D2 | PD2 | E/S numérique | Interruption externe INT0 | Boutons, encodeurs, comptage de tours |
| D3 ~ | PD3 | E/S numérique, PWM 490 Hz | Interruption externe INT1, Timer2 | PWM perturbé pendant tone() |
| D4 | PD4 | E/S numérique | - | Aucune fonction supplémentaire, libre |
| D5 ~ | PD5 | E/S numérique, PWM 980 Hz | Timer0 | Même timer que millis() |
| D6 ~ | PD6 | E/S numérique, PWM 980 Hz | Timer0 | Même timer que millis() |
| D7 | PD7 | E/S numérique | - | Aucune fonction supplémentaire, libre |
| D8 | PB0 | E/S numérique | - | Aucune fonction supplémentaire, libre |
| D9 ~ | PB1 | E/S numérique, PWM 490 Hz | Timer1 | La bibliothèque Servo désactive son PWM |
| D10 ~ | PB2 | E/S numérique, PWM 490 Hz | SPI SS, Timer1 | Doit rester une sortie avec le SPI |
| D11 ~ | PB3 | E/S numérique, PWM 490 Hz | SPI MOSI, Timer2 | Aussi sur le connecteur ICSP |
| D12 | PB4 | E/S numérique | SPI MISO | Aussi sur le connecteur ICSP |
| D13 | PB5 | E/S numérique | SPI SCK | La LED L de la carte est sur cette broche |
| A0 | PC0 | Entrée analogique | Numérique 14 | - |
| A1 | PC1 | Entrée analogique | Numérique 15 | - |
| A2 | PC2 | Entrée analogique | Numérique 16 | - |
| A3 | PC3 | Entrée analogique | Numérique 17 | - |
| A4 | PC4 | Entrée analogique | I2C SDA, numérique 18 | Pas de lecture analogique avec l'I2C actif |
| A5 | PC5 | Entrée analogique | I2C SCL, numérique 19 | Pas de lecture analogique avec l'I2C actif |
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 ?.
| Timer | Broches PWM | Fréquence | Qui utilise ce timer ? |
|---|---|---|---|
| Timer0 (8 bits) | 5, 6 | Environ 980 Hz | millis(), delay() et micros() |
| Timer1 (16 bits) | 9, 10 | Environ 490 Hz | Bibliothèque Servo |
| Timer2 (8 bits) | 3, 11 | Environ 490 Hz | tone() et des bibliothèques comme IRremote |
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.
Broches d'alimentation : Vin, 5V, 3.3V, GND, IOREF et RESET
| Broche | Que fait-elle ? | Limites et précautions |
|---|---|---|
| Vin | Fournit la tension venant du jack ou alimente la carte en 7–12 V | Contourne la diode de protection contre l'inversion, attention à la polarité |
| 5V | Sortie 5 V du régulateur ou de l'USB | Fusible de 500 mA sur l'USB ; de l'extérieur, uniquement du 5 V régulé |
| 3.3V | Sortie 3,3 V du régulateur de la carte | 50 mA maximum ; pour de petits modules comme le RC522 |
| GND | Masse commune (2 en bas, 1 en haut) | La masse de toutes les sources externes doit être reliée ici |
| IOREF | Indique aux shields la tension logique de la carte | Reliée au 5V sur l'Uno, pas faite pour alimenter |
| RESET | Redémarre la carte quand elle passe à LOW | Utilisée par les boutons reset des shields |
| AREF | Entrée de référence externe pour les mesures analogiques | 0–5 V ; d'abord analogReference(EXTERNAL) |
| NC (broche sans nom) | Réservée à un usage futur sur le R3 | Relié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.
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.
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.
| Fonction | Arduino Uno | ESP32 (DevKit) | Raspberry Pi Pico |
|---|---|---|---|
| I2C SDA / SCL | A4 / A5 | GPIO 21 / 22 | GP4 / GP5 |
| SPI MOSI / MISO / SCK / CS | 11 / 12 / 13 / 10 | GPIO 23 / 19 / 18 / 5 | GP19 / GP16 / GP18 / GP17 |
| UART TX / RX | 1 / 0 | GPIO 1 / 3 (reliées à l'USB) | GP0 / GP1 |
| Interruption externe | Seulement 2 et 3 | Toutes les GPIO | Toutes les GPIO |
| PWM | 6 broches | Presque toutes les broches capables de sortie | Toutes les GPIO |
| Entrée analogique | 6 broches, 10 bits | ADC1 : GPIO 32–39, 12 bits | GP26, GP27, GP28 ; 12 bits |
| Niveau logique | 5 V | 3,3 V (ne tolère pas le 5 V) | 3,3 V (ne tolère pas le 5 V) |
| Courant par broche | 20 mA (40 mA max.) | Environ 20 mA recommandés | 4 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 ICSP | Signal | Équivalent sur l'Uno |
|---|---|---|
| 1 | MISO | D12 |
| 2 | VCC (+5 V) | 5V |
| 3 | SCK | D13 |
| 4 | MOSI | D11 |
| 5 | RESET | RESET |
| 6 | GND | GND |
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
- Branche une LED sur la broche 9 avec une résistance de 220 Ω : patte longue vers la résistance, patte courte vers GND.
- Relie les deux pattes extérieures d'un potentiomètre au 5V et à GND, et la patte du milieu à A0.
- 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é.
- Téléverse le programme, ouvre le moniteur série et règle-le sur 9600 bauds.
- 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.
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.
| Composant | Broche de l'Uno | Pourquoi cette broche ? |
|---|---|---|
| RC522 SDA (SS) | 10 | Broche SS du SPI ; doit rester une sortie |
| RC522 SCK / MOSI / MISO | 13 / 11 / 12 | Les broches SPI matérielles ne se changent pas |
| RC522 RST | 9 | N'importe quelle broche numérique convient ; le PWM de la 9 est de toute façon inutilisable à cause du servo |
| RC522 VCC | 3.3V | Le module fonctionne en 3,3 V et consomme moins que la limite de 50 mA |
| LCD I2C SDA / SCL | A4 / A5 | Le seul bus I2C de l'Uno |
| Signal du servo | 6 | La bibliothèque Servo fonctionne sur toute broche ; alimentation par un 5 V externe |
| Buzzer | 8 | tone() fonctionne sur toute broche, aucune broche PWM n'est gaspillée |
| Bouton | 2 | Broche d'interruption ; pas de résistance avec INPUT_PULLUP |
| LED verte / rouge | 4 / 7 | Broches numériques simples sans fonction supplémentaire |
| Laissées libres | 0, 1, 3, 5, A0–A3 | Liaison 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éristique | Uno R3 | Uno R4 (Minima / WiFi) |
|---|---|---|
| Microcontrôleur | ATmega328P, 8 bits, 16 MHz | Renesas RA4M1, 32 bits, 48 MHz |
| Disposition des broches | Uno standard | Identique ; les shields s'adaptent |
| Courant par broche | 20 mA | 8 mA |
| Résolution analogique | 10 bits | 10 bits par défaut, jusqu'à 14 bits |
| Vraie sortie analogique (DAC) | Aucune | DAC 12 bits sur A0 |
| Broches 0 et 1 | Partagées avec l'USB (Serial) | Séparées de l'USB (Serial1) |
| Plage de Vin | 7–12 V recommandés | 6–24 V |
| USB | USB-B, via l'ATmega16U2 | USB-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ôme | Cause | Solution |
|---|---|---|
| Le téléversement échoue, erreur « not in sync » | Un module est branché sur la broche 0 ou 1 | Dé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 servo | La bibliothèque Servo a désactivé le PWM de 9 et 10 | Déplace la LED sur 3, 5, 6 ou 11 |
| La vitesse du moteur se dérègle quand le buzzer joue | tone() utilise le Timer2, qui perturbe 3 et 11 | Déplace le PWM sur 5, 6, 9 ou 10 |
| La valeur analogique varie toute seule | Broche flottante ou impédance de source trop élevée | Branche bien le capteur, lis deux fois si besoin |
| Le bouton semble appuyé au hasard | Broche d'entrée flottante | Utilise 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 I2C | Branche le capteur analogique sur A0–A3 |
| Le module SPI ne répond pas | La broche 10 est en entrée ou le CS est faux | Garde la broche 10 en sortie, donne à chaque appareil son propre CS |
| La carte chauffe ou redémarre seule | Trop de courant tiré sur les broches ou la broche 5V | Alimente les charges à part et relie les masses |
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).
Projets à réaliser après cet article
Voir tous les projets
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

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

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

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,

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

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

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

