Programmation et Utilisation Arduino
50 KartenGuide complet des concepts fondamentaux, branchements, prévention des erreurs et programmation pour microcontrôleurs Arduino, avec exemples pratiques et exercices pour les débutants.
50 Karten
Le microcontrôleur Arduino est un système open-source qui intègre un processeur, de la mémoire et des interfaces pour interagir avec le monde extérieur,devenant un outil essentiel pour les projets d'électronique embarquée et d'instrumentation physique.
Le Microcontrôleur Arduino
Un microcontrôleur est un petit ordinateur autonome à performances réduites mais de faible taille et faible consommation d'énergie, idéal pour l'électroniqueembarquée. La carte Arduino est une implémentation populaire et open-source de ce concept.
Connexion: La carte se connecte à un ordinateur via un câble USB, qui assure à la fois l'alimentation et la communication série.
Précautions: Il est crucial de suivre les consignes de sécurité pour éviter d'endommager la carte ou le port USB de l'ordinateur.
La Platine d'Expérimentation (Breadboard)
Le breadboard est une platine expérimentale qui permet de créer des circuits électriques rapidement sans soudure.
Structure: Elle dispose de bandes latérales généralement réservées aux tensions d'alimentation (0V et 5V) et d'une section centrale divisée.
Connexions: Les trous sont connectés en colonnes au centre, et en lignes sur les côtés.
Les Entrées / Sorties (I/O - Input/Output)
Les I/O permettent à la carte Arduino d'interagir avec son environnement, via des signaux numériques ou analogiques.
Les Entrées / Sorties Numériques
Les I/O numériques prennent seulement deux valeurs : LOW (0V) ou HIGH (environ 5V).
Ports: L'Arduino comporte 14 ports numériques (D0 à D13).
Usage spécifique: Les ports D0 et D1 sont réservés à la communication série. Le port D13 est équipé d'une LED intégrée.
GND: Le port GND est la masse (0V) de la carte.
Les Sorties Numériques
Un port numérique configuré en sortie permet au microcontrôleur de contrôler sa valeur (HIGH ou LOW).
Courant limité: Le courant délivré par un port digital en sortie est limité à 40 mA. Un dépassement peut endommager la carte.
Application: Utilisées pour l'échange d'informations (communication série) ou le déclenchement d'actions(par exemple, allumer une LED).
Exemple de montage (LED):

Une résistance (R1) est indispensable pour limiter le courant et protéger la LED et l'Arduino.
Instructions de programmation:
pinMode (2, OUTPUT);: Définit D2 comme une sortie.digitalWrite(2, HIGH);: Met l'état de D2 àHIGH (5V).digitalWrite(2, LOW);: Met l'état de D2 à LOW (0V).
Les Entrées Numériques
Un port numérique configuré en entrée permet à l'Arduino de lire l'état (HIGH ou LOW) d'un signal externe.
Seuils de tension:
Tensions < 1V sont lues comme LOW.
Tensions > 4V sont lues comme HIGH.
Les tensions intermédiaires sont à éviter. Une tension > 5.5V peut détruire la carte.
Entrée flottante: Une entrée non connectée aura un état indéterminé.
Problème de montage:

Ce montage est problématique car D2 est flottant quand l'interrupteur est ouvert.
Solution (Pull-down):

L'ajout d'une résistance de pull-down (R2, 10 kOhms) connectée à GND assure que l'entrée D2 est à
LOW lorsque l'interrupteur est ouvert.
Risque: Si D2 est par erreur déclaré comme sortie et l'interrupteur fermé, un court-circuit peut se produire.
Instructions de programmation:
pinMode (2, INPUT);: Définit D2 comme une entrée.buttonState = digitalRead(2);: Lit la valeur (HIGH/LOW) de D2.
Les Entrées Analogiques
Lesentrées analogiques mesurent une tension et la convertissent en une valeur numérique grâce à un Convertisseur Analogique/Numérique (CAN).
Fonctionnement du CAN:

Le CAN de l'Arduino travaille sur 10 bits, convertissant une tension entre 0V et Vref en un entier entre 0 et 1023.
Vref est de 5V par défaut et peut être modifiée.
La relation entre tension et valeur numérique est linéaire.
Exemple de montage (Potentiomètre):

Un potentiomètre agit comme un diviseur de tension, permettant de faire varier la tension lue par l'entrée analogique.

Avec une source d'alimentation externe, il est essentiel d'avoir une masse commune.
Instructions de programmation:
sensorValue = analogRead (A0);: Lit la valeur analogique sur le port A0 (retourne un entier entre 0 et 1023).
LesSorties Analogiques (PWM)
L'Arduino ne dispose pas de vraies sorties analogiques, mais simule une tension analogique via la Modulation de Largeur d'Impulsion (PWM) sur certains ports numériques (3, 5, 6, 9, 10, 11).
Principe du PWM:

Le port bascule rapidement entre LOW (0V) et HIGH (5V). La tension moyenne est contrôlée par le rapport cyclique (temps passé à HIGH).
Sensibilité: La carte gère la PWM avec une sensibilité de 8 bits (valeurs entières de 0 à 255).

0 correspond à 0V, 255 à 5V. Les valeurs intermédiaires donnent des tensions moyennes proportionnelles.
Applications: Commande de la puissance d'un moteur, variation de l'intensité d'une LED.
Exemple de montage (LED via PWM):

Permet de faire varier l'intensité d'une LED.
Vraie tension analogique: Pour une tension continue stable, un filtre passe-bas doit être ajouté pour lisser le signal PWM.
Instructions de programmation:
analogWrite(3, 127);: Envoie unetension moyenne de 2.5V sur le port D3.
Les Tensions de Référence
L'Arduino offre des points d'accès à des tensions de référence stables.

GND: La masse de la carte (0V). C'est la référence par laquelle toutes les tensions sont mesurées.
5V et 3.3V: Fournissent des tensions régulées (5V et 3.3V). Si la carte est connectée à l'USB sans alimentation externe, le 5V provient directement du câble USB et peut être moins régulé.
VIN: Tension de l'alimentation externe, si présente.
ATTENTION: Évitezde court-circuiter ces ports (par exemple, connecter 5V à GND), cela endommagerait la carte.
Le Port USB
Le port USB sert à la fois à l'alimentation de la carte et à la communication série avec l'ordinateur.
Identification: L'Arduino apparaît comme un port série (COMx) dans le gestionnaire de périphériques.
Configuration: L'IDE Arduino doit être configuré avec le bon type de carte et le bon port COM.
Débogage: Le "Moniteur Série" de l'IDE est un outil essentiel pour visualiser les messages de la carte.
Transférer un Programme à la Carte
Le programme exécuté par le microcontrôleur est écrit en langage C/C++ à l'aide de l'IDE Arduino, puis compilé et téléversé via USB.
IDE Arduino: Fournit un environnement pour écrire, compiler et téléverser le code.
Configuration: Il faut spécifier le modèle de la carte et le port série utilisé dans les menus de l'IDE.

Exécution: Après téléversement, la fonction
setup()s'exécute une fois, suivie de la fonctionloop()qui s'exécute encontinu.Exemples: L'IDE contient de nombreux exemples de programmes utiles.
Les Précautions (ou comment ne pas détruire votre carte Arduino)
Le non-respect de ces consignes peut entraîner des dommages irréparables à la carte Arduinoou au port USB de l'ordinateur.
Ne jamais connecter une tension supérieure à 5V sur les ports d'entrée.
Ne jamais dépasser 40 mA par port, ni 200 mA au total pour la carte.
Résistance de protection: Pour connecter une sortie à la masse, utilisez une résistance d'au moins 125 Ohms (idéalement 200 Ohms) pour limiter le courant.
Ne jamais relier directement une sortie digitale à la masse.
Ne jamais relier directement deux sorties digitales.
Vérifier la polarité d'une alimentation externe avant de la brancher.
Ne pas envoyer de tension dans les ports de sorties fixes (5V, 3.3V, GND, VIN).
Toujours vérifier les courants demandéspar le circuit et les comparer aux limites de la carte.
Toujours mettre une résistance en série avec une diode branchée à une sortie digitale.
Toutes les tensions sont par rapport à GND (masse).
CE QU'IL NE FAUT PAS FAIRE N°1: UN COURANT TROP FORT
Connecter une résistance trop faible (ou un fil) entre un port numérique et la masse (GND) provoquera un courant excessif qui détruira la sortie.

NE FAITES JAMAIS CE MONTAGE !
CE QU'IL NE FAUT PAS FAIRE N°2 : UN COURANT TOTAL TROP FORT
Même si chaque port respecte la limite de 40 mA, le courant total délivré par lacarte ne doit pas dépasser 200 mA. Activer trop de ports simultanément peut endommager le microcontrôleur.

NE FAITES JAMAIS CE MONTAGE !
CEQU'IL NE FAUT PAS FAIRE N°3 : UN COURT-CIRCUIT
Relier deux sorties numériques l'une à l'autre avec des états opposés (l'une HIGH, l'autre LOW) crée un court-circuit.

NE FAITES JAMAIS CE MONTAGE !
CE QU'IL NE FAUT PAS FAIRE N°4 : UN AUTRE COURT-CIRCUIT
Tout court-circuit entre les ports d'alimentation (5V,3.3V, GND) est dangereux pour la carte.

NE FAITES JAMAIS CE MONTAGE !
CE QU'IL NE FAUT PAS FAIRE N°5 : UNCOURANT TROP FORT MALGRÉ TOUT
Une sortie PWM (analogique) peut aussi être détruite par un courant excessif. Même si la tension moyenne est faible, la tension réelle alterne entre 0V et 5V, nécessitant une résistance de protection.

NE FAITES JAMAIS CE MONTAGE !
CE QU'IL NE FAUT PAS FAIRE N°6 : UNE TROP FORTE TENSION
Appliquer une tension supérieure à 5V sur n'importe quel port (numérique ou analogique) de la carte est critique.

NE FAITES JAMAIS CE MONTAGE !
LeLangage de Programmation
La documentation complète est disponible sur arduino.cc/en/Reference/HomePage.
Structure d'un Programme Arduino
Un programme Arduino est composé de deux fonctions principales :setup() et loop().
Déclaration des variables:
int led = 13;: Définit une variable entière nommée "led" avec la valeur 13.byte bytea;: Entier de 0 à 255.int integer1;: Entier de -32,768 à 32,767.unsigned int uInteger1;: Entier de 0 à 65,535.float mesure1;: Nombre réel à virgule flottante.boolean flag = true;: Booléen (true ou false).int tableauInt [6];: Tableau de 6 entiers (indices 0 à 5).
Fonction setup():
void setup() {
Serial.begin(9600); // initialise le port série
pinMode(3, OUTPUT); // initialise la voie 3 comme sortie
pinMode(4, INPUT); //initialise la voie 4 comme entrée
pinMode(led, INPUT); // si led = 13, initialise la voie 13 comme entrée
} // fin de la procédure setup()Cette fonction est exécutée une seule fois au démarrage de la carte.Elle configure les ports et initialise les communications.
Fonction loop():
void loop() {
// instructions du programme à mettre ici;
}Cette fonction contient le code principal qui s'exécute en boucleinfinie après setup().
Instructions les plus utiles
La capitalisation des lettres est importante dans le langage Arduino.
Imposer des tensions aux sorties de la carte (Écrire):
digitalWrite(3,HIGH);: Applique 5V au port D3 configuré comme sortie. Peut êtreLOWpour 0V.analogWrite(6, 100);: Envoie une valeur PWM de 100 au port D6. La valeur estentre 0 (0V) et 255 (5V), donc 100 correspond à environ 1.96V.
Lire des tensions aux entrées de la carte:
buttonState = digitalRead(4);: Lit l'état (HIGH ou LOW) du port D4 (icibuttonStateest un booléen).val = analogRead(5);: Lit la valeur analogique du port A5 (entier entre 0 et 1023).
Autresinstructions courantes:
readings[3] = 1;: Affecte la valeur 1 à l'index 3 d'un tableau.nombrereel = float(nombreentier);: Convertit un entier en réel.Exemples de calculs:
Vmes = average * Vref / 1024;temp = (Rmes / 100 - 1) / 3.85e-3;
delay(1);: Met le programme en pause pendant 1 milliseconde.time = millis();: Renvoie le temps écoulé en millisecondes depuis le démarrage (utiliserunsigned longpourtime).
Communicationsérie:
Serial.print("Mesure : ");: Envoie une chaîne de caractères sur le port série.Serial.print(variable);: Envoie la valeur d'une variable.Serial.println(" toto ");: Envoie unechaîne avec un retour à la ligne (printlnajoute un retour à la ligne,printnon).
Boucles:
Boucle
for(ici de 0 à 99):for (int index= 0; index < 100; index++) { // instructions de la boucle à exécuter }for (int x = 2; x < 100; x = x * 1.5) { // instructions de la boucleà exécuter }Boucle
while(ici tant queindexest < 3):while (index < 3) { index = index + 1; }Boucle
do-while:do { // instruction à faire; } while (condition);
Conditions:
Instruction
if-else:if (buttonState == HIGH) { // instruction si buttonState vaut HIGH } else { // instruction si buttonState vaut LOW }
La Séance de Travail : Découvrir Arduino
Cette section guideà travers une série d'exercices pratiques pour se familiariser avec l'Arduino, sa programmation et les montages électroniques.
AU TOUT DÉBUT
Connectez-vous et lancez l'IDE Arduino.
Spécifiez letype de carte (UNO ou MEGA) dans Outils > Type de carte.
Branchez l'Arduino via USB.
Spécifiez le port COM utilisé dans Outils > Port.
LA CONNECTIQUE : MICROCONTRÔLEUR ARDUINO ET BREADBOARD
Le breadboard est une plateforme où il est facile de connecter divers éléments.

Par convention, la ligne bleue est connectée à 0V (GND) et la ligne rouge à 5V.
Vérifiez les connexions du breadboard avec un multimètre.
Utilisez l'Arduino pour créer une tension de 5V (ou 3.3V) entre les zones rouge et bleue du breadboard et mesurez-la.
Construisez un montage pour allumer une LED, en incluant une résistance de 220 Ohms.

Construisez un montage avec un potentiomètre pour délivrer une tension variable.

Utilisez un potentiomètre pour allumer progressivement une LED.

PROGRAMMER LE MICROCONTRÔLEUR ARDUINO
Avant chaque programmation, suivez ces étapes :
Lancez
initOrsayavec le câble USB branché pour initialiser les voies et effacer le programme précédent.Débranchez le câble USB, réalisez le montage électrique et le programme.
Rebranchez le câble USB, puis téléversez le programme Arduino.
Si le montagefonctionne, dessinez le circuit ou prenez une photo.
Exercices de programmation :
Test de base: Lancez Fichier > Exemples > Basics > Blink, vérifiez le clignotement de la LED et modifiez le délai.
LED extérieure: Adaptez le programme Blink pour faire clignoter une LED externe via le breadboard.
Interrupteur (entrée numérique): Réalisez le circuit et le programme pour contrôler la LED interne de la carte avec un interrupteur.

Interrupteur et LED extérieure: Modifiez le montage précédent pour contrôler une LED externe avec l'interrupteur.
Lire une tension constante (entrée analogique):
Utilisez
analogReadpour lire une tension (par exemple, 3.3V de la carte).Inspirez-vous de Fichier > Exemples > Analog > AnalogInOutSerial.
Affichez la valeur luesur le moniteur série (et en volts).
Lire une tension pilotée avec un potentiomètre: Modifiez le circuit pour lire une tension réglable par un potentiomètre.
Créer une tension PWM (sortie analogique):
Utilisez une sortie PWM pour générer une tension de 1V (inspiré de AnalogWriteMega).
Lisez la tension avec un multimètre et une entrée analogique de la carte, puis comparez.
Piloter une LED avec une tension PWM: Utilisez une sortie PWM pour contrôler l'intensité d'une LED externe.
RÉCUPÉRER ET TRACER LES DONNÉES AVEC LABVIEW
Utilisez le programme LabVIEW "Communication Arduino Vers Labview.vi" pour lire les données des expériences Arduino.
Attention: Ne pas lancer LabVIEW si le moniteur série est actif ou si un programme est en cours de téléversement.
Format des données: Écrivez vos données au format d'un tableau de nombres séparés par des points-virgules (
;) avec un retour à la ligne à la fin de chaque ligne, par exemple:4;7 6;3.2 7;2 ...Vérifiez que LabVIEW peut lire et enregistrer les données, puis relisez-les avec d'autres logiciels (Kaleidagraph ou Excel).
QUE MESURE-T-ON VRAIMENT AVEC LE MICROCONTRÔLEUR ?
En effectuant desmesures de tension appropriées, étudiez et testez :
La digitalisation de la carte.
Le bruit de la carte.
Le temps d'acquisition minimum.
L'intérêt ou non de moyenner une mesure.
Facultatif: Réalisez un programme pour mesurer une thermistance Pt100 en fonction du temps, et analysez la précision et la sensibilité de votre système.
Points Clés à Retenir
Arduino est un microcontrôleuropen-source, versatile pour l'électronique et la physique.
Le breadboard facilite les montages sans soudure.
Les I/O numériques gèrent des états HIGH/LOW (5V/0V), tandis que les I/O analogiques lisent des tensions transformées en valeurs numériques (0-1023).
Les sorties analogiques sont simulées par la PWM (Pulse Width Modulation) sur certains ports.
Il est impératif de respecter les limites de courant (40 mA par port, 200 mA total) et de tension (max 5.5V) pour éviter d'endommager la carte.
Un programme Arduino est structuré avec
setup()(exécution unique) etloop()(exécution continue).La communication série via le portUSB est essentielle pour le téléversement et le débogage.
Des précautions rigoureuses sont nécessaires pour la manipulation et la connexion des composants afin de prévenir les courts-circuits et les surintensités.
L'IDE Arduino et les nombreux exemples disponibles en ligne sont des ressources précieusespour l'apprentissage et le développement.
Quiz starten
Teste dein Wissen mit interaktiven Fragen