0% ont trouvé ce document utile (0 vote)
3 vues24 pages

Guide Complet Arduino

Transféré par

zagrepengdewendeamos
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues24 pages

Guide Complet Arduino

Transféré par

zagrepengdewendeamos
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

GUIDE COMPLET

Programmation Arduino
Du langage C aux microcontrôleurs

Pour étudiants en électronique & automation

IUT Nazi Boni — Burkina Faso


Table des Matières
1. Introduction à Arduino
1.1 Qu'est-ce qu'Arduino ?
1.2 Matériel nécessaire
1.3 Installation de l'IDE
2. Structure d'un Programme Arduino
2.1 Les fonctions setup() et loop()
2.2 Commentaires et bonnes pratiques
3. Variables et Types de Données
3.1 Types courants
3.2 Constantes et #define
4. Entrées / Sorties Numériques
4.1 pinMode(), digitalWrite(), digitalRead()
4.2 Projet : LED clignotante
5. Entrées / Sorties Analogiques
5.1 analogRead() et analogWrite() (PWM)
5.2 Projet : Variation de luminosité
6. Structures de Contrôle
6.1 Conditions if/else, switch
6.2 Boucles for, while, do-while
7. Fonctions
7.1 Définir et appeler une fonction
7.2 Paramètres et valeurs de retour
8. Communication Série (UART)
8.1 [Link](), print(), println()
8.2 Lire les données série
9. Bibliothèques Arduino
9.1 Installer et utiliser une bibliothèque
9.2 LCD, Servo, capteur DHT
10. Projets Complets
10.1 Alarme avec capteur PIR
10.2 Régulateur de température
10.3 Contrôle moteur DC avec PWM
11. Comparatif C ↔ Arduino

12. Référence Rapide

Guide Arduino — C → Microcontrôleurs —1— IUT Nazi Boni


CHAPITRE 01

Introduction à Arduino

1.1 Qu'est-ce qu'Arduino ?


Arduino est une plateforme open-source composée d'un microcontrôleur programmable et d'un
environnement de développement (IDE). Elle permet de créer des objets électroniques interactifs en
liant le monde physique (capteurs, actionneurs) au monde numérique. Le langage de programmation
Arduino est basé sur le C/C++, ce qui en fait un outil idéal si tu as déjà des bases en C.

Carte Arduino UNO (ATmega328P — 8 bits, 16 MHz)

Mémoire Flash 32 Ko, SRAM 2 Ko, EEPROM 1 Ko

Broches E/S 14 numériques (dont 6 PWM) + 6 analogiques

Alimentation 5 V via USB ou 7–12 V via connecteur

Language C/C++ simplifié (wiring)

1.2 Matériel nécessaire


• Carte Arduino UNO (ou Nano, Mega…)

• Câble USB A→B (pour UNO)


• Breadboard (plaque d'essai)

• LEDs, résistances, boutons-poussoirs, capteurs

• Fils de connexion (jumpers)

• PC avec IDE Arduino installé

1.3 Installation de l'IDE Arduino


Télécharge l'IDE sur [Link]/en/software. Après installation :

• Branche ta carte Arduino via USB

• Dans Outils → Carte, sélectionne Arduino UNO

• Dans Outils → Port, sélectionne le port COM correspondant

• Clique sur ✓ (Vérifier) puis → (Téléverser) pour envoyer le programme

Guide Arduino — C → Microcontrôleurs —2— IUT Nazi Boni


■ Note : Sous Windows, installe le driver CH340 si ta carte n'est pas reconnue. Sous
Linux, ajoute ton utilisateur au groupe 'dialout'.

Guide Arduino — C → Microcontrôleurs —3— IUT Nazi Boni


CHAPITRE 02

Structure d'un Programme Arduino

2.1 Les fonctions setup() et loop()


Tout sketch Arduino possède obligatoirement ces deux fonctions :

// Fichier : mon_premier_sketch.ino

void setup() {
// Exécuté UNE SEULE FOIS au démarrage
// → Initialisation des broches, Serial, bibliothèques...
[Link](9600); // Ouvre la communication série à 9600 baud
pinMode(13, OUTPUT); // Broche 13 configurée en sortie
}

void loop() {
// Exécuté EN BOUCLE INFINIE (comme while(1) en C)
// → Logique principale du programme
digitalWrite(13, HIGH); // Allume la LED
delay(1000); // Attend 1000 ms = 1 seconde
digitalWrite(13, LOW); // Éteint la LED
delay(1000); // Attend 1 seconde
}

Équivalent en C pur :

// Équivalent conceptuel en C (non compilable tel quel pour Arduino)


int main(void) {
setup(); // appel unique
while (1) {
loop(); // boucle infinie
}
return 0;
}

2.2 Commentaires et bonnes pratiques

Guide Arduino — C → Microcontrôleurs —4— IUT Nazi Boni


// Commentaire sur une ligne (identique au C)

/* Commentaire
sur plusieurs lignes */

// Nommage : utilise des noms explicites


int tempCapteur = 0; // ✓ Bon
int t = 0; // ✗ Éviter

// Constantes en MAJUSCULES
#define PIN_LED 13
#define DELAI_MS 500

■ Note : Les fichiers Arduino ont l'extension .ino. Chaque projet est dans un dossier
portant le même nom que le fichier .ino.

Guide Arduino — C → Microcontrôleurs —5— IUT Nazi Boni


CHAPITRE 03

Variables et Types de Données

3.1 Types courants


Arduino hérite des types C. Attention aux tailles qui dépendent du microcontrôleur (ATmega328 = 8
bits) :

Type Taille Plage Exemple

bool 1 octet true / false bool actif = true;

byte 1 octet 0 … 255 byte val = 200;

int 2 octets -32 768 … 32 767 int compteur = 0;

unsigned int 2 o 0 … 65 535 unsigned int x;

long 4 octets ±2 147 483 647 long dist = 100000L;

float 4 octets ±3.4 × 10³■ (6-7 déc.) float temp = 36.6;

char 1 octet -128 … 127 / ASCII char lettre = 'A';

String objet Chaîne de caractères String msg = "OK";

3.2 Constantes et #define

// Méthode 1 : #define (préprocesseur, pas de type, pas de mémoire)


#define PIN_LED 13
#define VITESSE 9600

// Méthode 2 : const (recommandée, typée)


const int PIN_BOUTON = 7;
const float PI_CUSTOM = 3.14159;

// Constantes intégrées Arduino


HIGH // 1 (niveau logique haut)
LOW // 0 (niveau logique bas)
INPUT // Mode entrée
OUTPUT // Mode sortie
INPUT_PULLUP // Entrée avec résistance pull-up interne
true / false // Booléens

Guide Arduino — C → Microcontrôleurs —6— IUT Nazi Boni


CHAPITRE 04

Entrées / Sorties Numériques

4.1 Fonctions principales

// ■■ Configuration (dans setup())


■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
pinMode(broche, mode);
// mode : OUTPUT, INPUT, INPUT_PULLUP

// ■■ Écriture numérique
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
digitalWrite(broche, valeur);
// valeur : HIGH (=1, 5V) ou LOW (=0, 0V)

// ■■ Lecture numérique
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
int etat = digitalRead(broche);
// Retourne HIGH ou LOW

4.2 Projet : LED clignotante avec bouton


La LED (broche 13) s'allume quand on appuie sur le bouton (broche 7) et clignote rapidement sinon.

Guide Arduino — C → Microcontrôleurs —7— IUT Nazi Boni


#define PIN_LED 13
#define PIN_BOUTON 7

void setup() {
pinMode(PIN_LED, OUTPUT);
pinMode(PIN_BOUTON, INPUT_PULLUP); // Pull-up interne : repos = HIGH
[Link](9600);
}

void loop() {
int etatBouton = digitalRead(PIN_BOUTON);

if (etatBouton == LOW) {
// Bouton appuyé (pull-up → LOW quand appuyé)
digitalWrite(PIN_LED, HIGH);
[Link]("Bouton appuyé — LED allumée");
} else {
// Bouton relâché → clignotement
digitalWrite(PIN_LED, HIGH);
delay(100);
digitalWrite(PIN_LED, LOW);
delay(100);
}
}

■ Note : INPUT_PULLUP active la résistance pull-up interne (≈20 kΩ). Le bouton relie
la broche à la masse (GND). Avantage : pas besoin de résistance externe.

Guide Arduino — C → Microcontrôleurs —8— IUT Nazi Boni


CHAPITRE 05

Entrées / Sorties Analogiques

5.1 analogRead() — Lecture analogique


L'Arduino UNO possède un CAN (Convertisseur Analogique-Numérique) 10 bits sur les broches A0 à
A5. Il convertit une tension (0–5 V) en valeur entière (0–1023).

int valeur = analogRead(A0); // Retourne 0 à 1023

// Conversion en tension (Vcc = 5V)


float tension = valeur * (5.0 / 1023.0);

// Exemple : lire un potentiomètre


void loop() {
int pot = analogRead(A0);
[Link]("Valeur brute : ");
[Link](pot);
delay(200);
}

5.2 analogWrite() — Sortie PWM


La sortie analogique sur Arduino est simulée par un signal PWM (Pulse Width Modulation —
Modulation de Largeur d'Impulsion). Disponible sur les broches marquées ~ : 3, 5, 6, 9, 10, 11. La
valeur va de 0 (0 V moyen) à 255 (5 V moyen).

Guide Arduino — C → Microcontrôleurs —9— IUT Nazi Boni


analogWrite(broche, valeur); // valeur : 0 à 255

// Rapport cyclique = valeur / 255 × 100 %


// analogWrite(pin, 0) → 0 % (toujours LOW)
// analogWrite(pin, 127) → 50 % (signal carré)
// analogWrite(pin, 255) → 100 % (toujours HIGH)

// ■■ Projet : variation de luminosité LED via potentiomètre ■■


#define PIN_POT A0
#define PIN_LED 9 // Broche PWM

void setup() {
pinMode(PIN_LED, OUTPUT);
}

void loop() {
int pot = analogRead(PIN_POT); // 0–1023
int luminosite = map(pot, 0, 1023, 0, 255); // Remappage
analogWrite(PIN_LED, luminosite);
delay(10);
}

■ Note : La fonction map(val, fromLow, fromHigh, toLow, toHigh) est très utile pour
convertir des plages de valeurs. Ex : map(val, 0,1023, 0,255).

Guide Arduino — C → Microcontrôleurs — 10 — IUT Nazi Boni


CHAPITRE 06

Structures de Contrôle

6.1 Conditions

// ■■ if / else if / else
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
int temp = analogRead(A0) * 0.48; // °C approximatif

if (temp > 40) {


[Link]("ALERTE : Surchauffe !");
} else if (temp > 25) {
[Link]("Température normale");
} else {
[Link]("Température basse");
}

// ■■ switch / case
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
int mode = 2;
switch (mode) {
case 1: [Link]("Mode Manuel"); break;
case 2: [Link]("Mode Automatique"); break;
case 3: [Link]("Mode Veille"); break;
default: [Link]("Mode inconnu"); break;
}

6.2 Boucles

Guide Arduino — C → Microcontrôleurs — 11 — IUT Nazi Boni


// ■■ for ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■
// Faire clignoter une LED 5 fois
for (int i = 0; i < 5; i++) {
digitalWrite(13, HIGH); delay(200);
digitalWrite(13, LOW); delay(200);
}

// ■■ while ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■
// Attendre qu'un bouton soit appuyé
while (digitalRead(7) == HIGH) {
// Rien — boucle jusqu'à l'appui
}
[Link]("Bouton détecté !");

// ■■ do-while
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
int val;
do {
val = analogRead(A0);
delay(10);
} while (val < 512); // Continue jusqu'à dépasser 512

Guide Arduino — C → Microcontrôleurs — 12 — IUT Nazi Boni


CHAPITRE 07

Fonctions

7.1 Définir et appeler une fonction


Comme en C, une fonction peut être déclarée avant ou après setup()/loop(). Arduino accepte la
déclaration après utilisation (prototype implicite).

// ■■ Déclaration
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
void clignote(int pin, int nb_fois, int duree_ms) {
for (int i = 0; i < nb_fois; i++) {
digitalWrite(pin, HIGH);
delay(duree_ms);
digitalWrite(pin, LOW);
delay(duree_ms);
}
}

// ■■ Fonction avec retour


■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
float lireTension(int broche) {
int brut = analogRead(broche);
return brut * (5.0 / 1023.0); // Retourne la tension en volts
}

// ■■ Utilisation dans loop()


■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
void setup() {
pinMode(13, OUTPUT);
[Link](9600);
}

void loop() {
clignote(13, 3, 200); // 3 clignotements de 200 ms
float v = lireTension(A0);
[Link]("Tension : ");
[Link](v);
[Link](" V");
delay(1000);
}

■ Note : Décompose ton programme en fonctions : setup() et loop() doivent rester


courtes et lisibles. C'est une bonne pratique en automatisme industriel aussi !

Guide Arduino — C → Microcontrôleurs — 13 — IUT Nazi Boni


CHAPITRE 08

Communication Série (UART)

8.1 Envoyer des données au PC


La communication série permet d'envoyer/recevoir des données entre l'Arduino et le PC via USB.
C'est indispensable pour le débogage.

void setup() {
[Link](9600); // Vitesse en bauds (9600 standard)
// Autres vitesses communes : 115200, 57600
}

void loop() {
int val = analogRead(A0);

[Link]("Valeur = "); // Affiche sans saut de ligne


[Link](val); // Affiche avec saut de ligne

[Link]("Tension = ");
[Link](val * 5.0 / 1023.0, 2); // 2 décimales
[Link](" V");

delay(500);
}

8.2 Recevoir des données du PC

Guide Arduino — C → Microcontrôleurs — 14 — IUT Nazi Boni


void setup() {
[Link](9600);
pinMode(13, OUTPUT);
[Link]("Envoie '1' pour allumer, '0' pour éteindre");
}

void loop() {
if ([Link]() > 0) { // Des données en attente ?
char commande = [Link](); // Lit un caractère

if (commande == '1') {
digitalWrite(13, HIGH);
[Link]("LED allumée");
} else if (commande == '0') {
digitalWrite(13, LOW);
[Link]("LED éteinte");
}
}
}

■ Note : Ouvre le Moniteur Série (Ctrl+Shift+M) dans l'IDE Arduino. Vérifie que la
vitesse en bas du moniteur correspond à [Link](vitesse).

Guide Arduino — C → Microcontrôleurs — 15 — IUT Nazi Boni


CHAPITRE 09

Bibliothèques Arduino

9.1 Installer et inclure une bibliothèque


Les bibliothèques ajoutent des fonctionnalités sans réécrire le code depuis zéro. Installation : Croquis
→ Inclure une bibliothèque → Gérer les bibliothèques.

#include <NomBibliotheque.h> // Inclure en haut du sketch

// Exemple : bibliothèque Servo


#include <Servo.h>

Servo monServo; // Crée un objet Servo

void setup() {
[Link](9); // Servo sur broche 9
}

void loop() {
[Link](0); // Position 0°
delay(1000);
[Link](90); // Position 90°
delay(1000);
[Link](180); // Position 180°
delay(1000);
}

9.2 Affichage LCD (LiquidCrystal)

Guide Arduino — C → Microcontrôleurs — 16 — IUT Nazi Boni


#include <LiquidCrystal.h>

// LCD branché sur : RS=12, E=11, D4=5, D5=4, D6=3, D7=2


LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
[Link](16, 2); // LCD 16 colonnes, 2 lignes
[Link]("Arduino IUT");
}

void loop() {
[Link](0, 1); // Colonne 0, ligne 1
[Link]("T=");
[Link](analogRead(A0) * 0.48, 1);
[Link]((char)223); // Caractère °
[Link]("C ");
delay(500);
}

Guide Arduino — C → Microcontrôleurs — 17 — IUT Nazi Boni


CHAPITRE 10

Projets Complets

10.1 Alarme avec capteur PIR


Détection de mouvement avec un capteur PIR HC-SR501. Quand un mouvement est détecté, une
LED rouge clignote et le buzzer sonne.

#define PIN_PIR 2 // Capteur PIR (détection mouvement)


#define PIN_LED 13 // LED rouge
#define PIN_BUZZ 8 // Buzzer passif

void setup() {
pinMode(PIN_PIR, INPUT);
pinMode(PIN_LED, OUTPUT);
pinMode(PIN_BUZZ, OUTPUT);
[Link](9600);
[Link]("Système d alarme actif");
}

void loop() {
if (digitalRead(PIN_PIR) == HIGH) {
[Link]("MOUVEMENT DÉTECTÉ !");
for (int i = 0; i < 5; i++) {
digitalWrite(PIN_LED, HIGH);
tone(PIN_BUZZ, 1000, 200); // Son 1000 Hz, 200 ms
delay(300);
digitalWrite(PIN_LED, LOW);
delay(200);
}
}
delay(100);
}

10.2 Contrôle moteur DC avec PWM


Un potentiomètre contrôle la vitesse d'un moteur DC via un transistor NPN (ou module L298N). La
direction est fixée par un bouton.

Guide Arduino — C → Microcontrôleurs — 18 — IUT Nazi Boni


#define PIN_MOT_PWM 9 // Vitesse (PWM)
#define PIN_MOT_DIR 8 // Direction
#define PIN_POT A0 // Potentiomètre
#define PIN_BTN 7 // Bouton direction

void setup() {
pinMode(PIN_MOT_PWM, OUTPUT);
pinMode(PIN_MOT_DIR, OUTPUT);
pinMode(PIN_BTN, INPUT_PULLUP);
}

void loop() {
int pot = analogRead(PIN_POT);
int vit = map(pot, 0, 1023, 0, 255);
bool dir = (digitalRead(PIN_BTN) == LOW);

digitalWrite(PIN_MOT_DIR, dir ? HIGH : LOW);


analogWrite(PIN_MOT_PWM, vit);
delay(20);
}

Guide Arduino — C → Microcontrôleurs — 19 — IUT Nazi Boni


CHAPITRE 11

Comparatif C ↔ Arduino

Concept Langage C standard Arduino

Entrée/Sortie printf() / scanf() [Link]() / [Link]()

Point d'entrée int main(void) setup() + loop()

Boucle infinie while(1) { ... } Contenu de loop()

Délai usleep() / nanosleep() delay(ms) / delayMicroseconds(us)

GPIO Registres directs ou lib OS pinMode() / digitalRead/Write()

Analogique Non natif (lib ou HAL) analogRead() / analogWrite()

Interruptions signal() / setitimer() attachInterrupt()

Mémoire malloc/free, OS géré Limitée — éviter String et malloc

Compilation gcc / clang avr-gcc (intégré dans l'IDE)

Déboggage gdb, printf, valgrind [Link]() + Moniteur Série

■ Note : La principale différence est l'absence de système d'exploitation sur Arduino.


Pas de gestionnaire de mémoire, pas de threads natifs, pas de système de fichiers. Ton
code s'exécute directement sur le métal (bare-metal).

Guide Arduino — C → Microcontrôleurs — 20 — IUT Nazi Boni


CHAPITRE 12

Référence Rapide

Fonctions essentielles
Fonction Description

pinMode(pin, mode) Configure une broche (INPUT/OUTPUT/INPUT_PULLUP)

digitalWrite(pin, val) Écrit HIGH ou LOW sur une broche numérique

digitalRead(pin) Lit l'état d'une broche numérique (HIGH/LOW)

analogRead(pin) Lit une valeur analogique A0-A5 → 0 à 1023

analogWrite(pin, val) PWM sur broches ~ → 0 à 255

delay(ms) Pause en millisecondes

delayMicroseconds(us) Pause en microsecondes

millis() Temps écoulé depuis démarrage (ms) — non bloquant

micros() Temps écoulé en microsecondes

map(v,iL,iH,oL,oH) Remappage linéaire de plage de valeurs

constrain(v, min, max) Limite une valeur dans un intervalle

random(min, max) Nombre aléatoire entre min et max-1

tone(pin, freq, dur) Génère un son sur un buzzer

noTone(pin) Arrête le son

[Link](baud) Initialise la communication série

[Link](val) Envoie une valeur vers le PC

[Link](val) Idem avec saut de ligne

[Link]() Nombre d'octets disponibles en réception

[Link]() Lit un octet reçu

attachInterrupt(pin,fn,mode) Attache une interruption externe

detachInterrupt(pin) Désactive une interruption

[Link]/write(addr,val) Lecture/écriture mémoire EEPROM persistante

Guide Arduino — C → Microcontrôleurs — 21 — IUT Nazi Boni


Bonne programmation !

Tu as maintenant toutes les bases pour programmer l'Arduino avec tes connaissances en C.

Prochaine étape : combine Arduino avec tes compétences en

automatisme industriel pour des projets Factory I/O et Step 7 !

[Link]/reference | [Link] | IUT Nazi Boni — EII/ETK

Guide Arduino — C → Microcontrôleurs — 22 — IUT Nazi Boni

Vous aimerez peut-être aussi