FablabMémento

Arduino

La carte Uno · téléverser · Blink · fonctions de base · règles d’or
Auteur : D. Dambreville · didierdambreville.github.io · licence CC BY 4.0
5 Vniveau logique de l’Uno R3
20 mAau plus par broche (Uno R3) ; 8 mA sur l’Uno R4
16 MHzhorloge de l’ATmega328P, 8 bits
2 Kode SRAM pour les variables ; 32 Ko de flash

01La carte Uno R3

USB-B5 VJACK7–12 VRESET16U2USB ↔ sérieATmega328PL (13)ONUNO R3~ : sortie MLI (PWM)A4 = SDA · A5 = SCLSCLSDAAREFGND1312~11~10~987~6~54~32TX→1RX←0—IOREFRESET3.3V5VGNDGNDVINA0A1A2A3A4A5I²CSPIINTSÉRIEALIMENTATIONANALOGIQUE

Broches 0 et 1 : liaison USB, à laisser libres pour téléverser.

02Du code à la carte

Brancherun câble USB de données (pas de charge seule)
Choisirla carte et le port : Outils › Port
Ctrl+RVérifier : compiler, lire les erreurs
Ctrl+UTéléverser : compiler et envoyer
Ctrl+Shift+MMoniteur série, au débit de Serial.begin()

03Premier croquis : Blink

const int LED = LED_BUILTIN; // 13

void setup() { 1
  pinMode(LED, OUTPUT);
}

void loop() { 2
  digitalWrite(LED, HIGH);  // 5 V
  delay(1000); 3
  digitalWrite(LED, LOW);   // 0 V
  delay(1000);
}

1 setup() : une fois, au démarrage ou après RESET.

2 loop() : se répète sans fin.

3 delay() : pause en ms, qui bloque tout le programme.

04Les fonctions de base

pinMode(b, OUTPUT)déclarer une sortie
digitalWrite(b, HIGH)sortie à 5 V (LOW : 0 V)
digitalRead(b)lire HIGH ou LOW
analogRead(A0)0 à 1023 pour 0 à 5 V
analogWrite(9, v)MLI : v de 0 à 255, broches ~
millis()ms écoulées depuis le démarrage
Serial.println(x)écrire vers le moniteur série

05Règles d’or

  • 20 mA au plus par broche ; une LED a toujours sa résistance.
  • Jamais de moteur, relais ou électroaimant sur une broche : transistor ou module.
  • Masse commune : relier les GND de toutes les alimentations.
  • Câbler carte débranchée ; vérifier avant de remettre sous tension.
  • Jamais 5 V sur une broche 3,3 V ; jamais de 230 V sur une plaque d’essai.

06Ça ne marche pas ?

Aucun portcâble de charge seule : en changer
Texte illisibledébit du moniteur ≠ Serial.begin()
LED éteinteLED à l’envers, pinMode oublié, mauvaise broche
Lecture qui change seuleentrée flottante : INPUT_PULLUP
Redémarre quand le moteur partalimentation séparée, masse commune