57
L’ESSENTIEL SUR LE MICROCONTRÔLEUR ET LA CARTE ARDUINO UNO Module I Arduino Uno Rev3 Théorique Préparé par: TANDU SUAMUNU Byorn MUNENA MPOYI Schadrack NABURACHA MURANGA David © 2016

Microcontroleur arduino uno

Embed Size (px)

Citation preview

Page 1: Microcontroleur arduino uno

L’ESSENTIEL SUR LE MICROCONTRÔLEUR ET LA CARTE ARDUINO UNO

Module I

Arduino Uno Rev3

Théorique

Préparé par:

TANDU SUAMUNU Byorn

MUNENA MPOYI Schadrack

NABURACHA MURANGA David

© 2016

Page 2: Microcontroleur arduino uno

PLAN

LES FONDAMENTALES DU MCU;

ENVIRONNEMENT ARDUINO;

PROGRAMMATION EN ARDUINO.

Page 3: Microcontroleur arduino uno

LES FONDAMENTALES DU MCU

Les MCUs sont à nos jours aussi fréquents dans les domaines tels que: les télécommunications (téléphones mobiles, modem,...), industriel (Automates programmables, imprimantes 3D,…), automobile (tableau de bord, contrôle des sièges,…), domotique (micro-ondes, machines à café,…), militaire (sonde, robots, lanceurs des fusées,...), etc

1. OÙ EN SOMMES-NOUS AVEC LES MCUs?

Ils ont atteint une fréquente utilisation en 2014 avec 18,6 milliards d’unités vendues et une croissance de 12% l’année dernière (2015) (20.832.000.000 d’unités vendues) selon IC Insights. Ces bêtes programmables deviennent de plus en plus des autoroutes pour atteindre nos villes (targets) en pleine révolution.

Page 4: Microcontroleur arduino uno

LES FONDAMENTALES DU MCU

Le microcontrôleur (µC ou MCU pour MicroController Unit en anglais) est un circuit programmable capable d’exécuter un programme et possédant des circuits d’interface intégrés (entrées-sorties) avec le monde extérieur. En d’autre terme, le MCU est un mini-ordinateur sans clavier ni écran mais capable d’interagir avec le monde extérieur grâce à ses interfaces d’entrées-sorties intégrées.

2. QUID MCU?

Apparu vers les années 1970 dont Intel fut le premier, ce dernier peut avoir 6 à 200 pattes pour interagir avec le monde extérieur (y compris celles d’alimentation) et généralement de 4-bits (pour sa première apparition et en disparition), 8-bits (le plus répandu), 16-bits et 32-bits (de plus en plus fréquents à nos jours).

Page 5: Microcontroleur arduino uno

LES FONDAMENTALES DU MCU

Un système à MCU est un système ayant en global un interfaçage d’entrée (une unité d’acquisition), une unité de traitement et un interfaçage de sortie (une unité de sortie).

3. STRUCTURE D’UN SYSTÈME A MCU

INTERFACAGE

D’ENTREE

UNITE

CENTRALE DE

TRAITEMENT

INTERFACAGE

DE SORTIE

UNITE DE TRAITEMENT ELECTRONIQUE

MCU

Capteur/ Données en sortie

Actionneur/ Données en sortie

Page 6: Microcontroleur arduino uno

LES FONDAMENTALES DU MCU

3. STRUCTURE D’UN SYSTÈME A MCU

LES DONNÉES EN ENTRÉE:

Les données en entrée peuvent être d’origine diverses, elles peuvent provenir de capteurs (température, humidité,…), d’un clavier (pour le dialogue homme-machine), etc. Donc, toutes ces données sont acquisitionées par l’interface d’entrée.

L’UNITE CENTRALE DE TRAITEMENT:

L’unité centrale de traitement est destinée au traitement de données/informations acquisitionées par l’unitée d’interfaçage d’entrée afin de fournir les données/informations nécessaires à la sortie.

LES DONNEES EN SORTIE:

Les données en sortie représentent le résultat attendu du traitement spécifié par le programme des données en entrée.

Page 7: Microcontroleur arduino uno

LES FONDAMENTALES DU MCU

3. STRUCTURE D’UN SYSTÈME A MCU

Hormis cette vision globale, un MCU contient en son sein les éléments ci-après:

Microprocesseur : Abrégé autre fois μP ou CPU pour Central Processing Unit en anglais. Comme dans un ordinateur classique, il est le cerveau d’un MCU.

Mémoires : contrairement à un ordinateur classique, le MCU comprend trois (3) types de mémoires qui se différentie dans l’utilisation avec celles d’un ordinateur classique. • RAM (Random Access Memory) : contient le programme d’exécution

du MCU et elle est volatile c’est-à-dire les informations stockées se perdent dès mise hors tension. Sa taille peut aller de 256 octets à 1Ko mais, elle peut être élargie par une RAM externe de 32Ko.

• ROM (Read Only Memory) : Elle contient généralement le programme de l’utilisateur et n’est accessible qu’en lecture seule. • EPROM (Erasable Programmable Read Only Memory) : est une

mémoire ayant les mêmes propriétés qu’une ROM mais programmable. C’est-à-dire le programme en son sein peut être effacé par les rayons UV ainsi, elle peut être reprogrammée.

Page 8: Microcontroleur arduino uno

LES FONDAMENTALES DU MCU

3. STRUCTURE D’UN SYSTÈME A MCU

Timer/horloge : elle donne la référence temporelle au MCU pour exécuter les instructions.

Chien de garde : Est une structure de contrôle du bon déroulement du

programme pouvant être interne ou externe du MCU. Le reset à la mise sous tension : avant le lancement du programme, le MCU

a besoin d’un temps minimum qui est donné par la documentation du constructeur et par conséquent, il faut produire un signal de durée supérieure à la mise sous tension.

Surveillance de l’alimentation : lorsqu’une chute de tension dans

l’alimentation est détectée, cette structure produit un reset au MCU. Les périphériques : sont les périphériques d’interfaçage d’entrées et sorties

du MCU, et de conversion du signal Analogique-Numérique ou l’inverse. Entre autres : les ports d’entrées-sorties (parallèles et analogiques),, les ports séries synchrones et asynchrones, la gestion Ethernet, les CAN, les CNA, la gestion de bus USB, la gestion de bus CAN.

Page 9: Microcontroleur arduino uno

LES FONDAMENTALES DU MCU 4. APPLICATIONS

Ces bêtes programmables sont à nos jours présentes dans tous les systèmes autonomes destinés à gérer des périphériques c’est-à-dire tout système ayant le contrôle des périphériques. D’où, ses applications s’avèrent énormes:

La technique médicale ; Les systèmes de communication ; Les technologies de sécurité ; Mécatronique et automation industrielle ; Moyens de transport ; Électronique de consommation; Etc.

Page 10: Microcontroleur arduino uno

LES FONDAMENTALES DU MCU 5. CRITERES DE CHOIX

Le choix d’un MCU est porté sur son nombre de pattes, la fréquence du CPU, la taille du bus de données (8-bits, 16-bits ou 32-bits) et le prix.

6. AVANTAGES

Diminution de l’encombrement du matériel et du circuit imprimé; Simplification du tracé du circuit imprimé p(lus besoin de tracer de bus; Augmentation de la fiabilité du système - nombre de composants réduits; - connexions composants/supports et composant circuit imprimé. Intégration en technologie MOS, CMOS, ou HCMOS: - diminution de la consommation Le microcontrôleur contribue à réduire les coûts à plusieurs niveaux: - moins cher que les composants qu’il remplace ; - Diminution des coûts de main d’oeuvre (conception et montage). Environnement de programmation et de simulation évolués.

Page 11: Microcontroleur arduino uno

LES FONDAMENTALES DU MCU

7. INCONVENIENTS/DEFAUTS

le microcontrôleur est souvent surdimensionné devant les besoins de l’application; Investissement dans les outils de développement; Fabrication uniquement en grande série >1000.

Page 12: Microcontroleur arduino uno

ENVIRONNEMENT ARDUINO 1. QUID ARDUINO?

Arduino est un projet Open Source développé en 2005 par : Massimo Banzi, David Cuertielles, Tom Igoe, Gianluca Martino, David Mellis, Nicolas Zambetti. C’est un concept à la fois matériel et logiciel appelé « système Arduino ».

Retenons qu’Arduino n’est pas un microcontrôleur en soi mais un environnement à MCU et constitué de plusieurs cartes électroniques programmables entre autre: entre autre : Uno, Mega, leonardo, Yun, Duemilanove, Diecimila, Nano, Mini, LilyPAd et Serial. Toutes programmées par un langage proche/semblable du C appelé langage Arduino et faisant l’objet de nos travaux pratiques.

Page 13: Microcontroleur arduino uno

ENVIRONNEMENT ARDUINO 2. CARACTERISTIQUES ARDUINO UNO

Microcontrôleur : ATmega328 Tension de fonctionnement : 5V Tension d'Input (recommandée) : 7-12V Tension d'Input : (limites) : 6 -20V Pins I/O digitales : 14 (dont 6 sont des PWM - modulation de largeur d'impulsions) Pins Input Analogiques : 6 (A0, A1, A2, A3, A4 et A5) Courant DC par pin I/O : 40 mA Courant DC pour la broche 3.3V : 50 mA Mémoire Flash : 32 KB (ATmega328) dont 0.5 KB utilisé par le 'bootloader' SRAM : 2 KB (ATmega328) EEPROM : 1 KB (ATmega328) Fréquence d'horloge: 16 MHz

La carte Arduino Uno a les caractéristiques ci-après:

Page 14: Microcontroleur arduino uno

ENVIRONNEMENT ARDUINO 2. CARACTERISTIQUES ARDUINO UNO

Page 15: Microcontroleur arduino uno

ENVIRONNEMENT ARDUINO 3. QUE PILOTERA ARDUINO?

Tout dispositif technique (ou un appareil ou une machine d’un domaine quelconque) peut être contrôlé d’une manière automatique ou par un ordinateur, il suffit juste d’une interface compatible avec ce dispositif et d’un programme/logiciel adapté.

De même, la carte Arduino peut commander/piloter une large gamme de dispositifs, il suffit de la munir d’un programme adapté. En réalité, elle est une des interfaces pour piloter ces dispositifs techniques.

Donc, la carte Arduino comme tout MCU peut commander un actionneur ou un pré-actionneur pour commander une partie puissance (le cas des Moteurs avec des relais).

Page 16: Microcontroleur arduino uno

ENVIRONNEMENT ARDUINO 3. QUE POURRA PILOTER LA CARTE ARDUINO?

C’est ainsi, elle peut piloter:

Un moteur; Un afficheur ou plus (le cas de montre digitale ou chronomètre); Une télévision; Des lampes; Une plaque chauffante; Une alarme (le cas de détecteur d’intrusion, ) Une micro-onde; Etc.

En conclusion, les applications de la carte Arduino ou du MCU se différent selon l’imagination du programmeur car, elles sont multiples.

Page 17: Microcontroleur arduino uno

ENVIRONNEMENT ARDUINO 3. PROBLEMATIQUE DE PILOTAGE?

Comment utiliser ladite carte avec ces diverses applications d’autant plus qu’elle ne délivre qu’une tension de +5v DC sur toutes ses bornes (le cas d’un moteur à 12v DC par exemple), elle ne possède aucune antenne pour envoyer les informations à distance (le cas d’une alarme détecteur d’intrusion),…?

Page 18: Microcontroleur arduino uno

ENVIRONNEMENT ARDUINO

Les développeurs du projet Arduino ont prévu les solutions ci-après:

4. SOLUTIONS/ASTUCES

Les cartes d’extension pour remplir certaines fonction, entre autre: • Shield Motor; • Shield GSM; • Etc.

Utilisation des montages électroniques; Utilisation des circuits intégrés pour élargir les E/S afin de remplir certaines

fonctions.

De même, seule la carte ne suffit pour répondre à certaines attentes. C’est ainsi, elle est raccordé à des composants tels que: Les composants actifs et passifs (Résistances fixe et variables, diodes, condensateurs,…), Décodeur BCD, etc.

Page 19: Microcontroleur arduino uno

PROGRAMMATION EN ARDUINO

Comme évoqué ci-haut, un MCU est une bête programmable. alors comment le programmer et avec quel langage s’y prendre?

Un MCU est programmé grâce à un programmateur (ressemblant à un socket) dont le programme (codé dans un langage approprié) est téléversé à partir d’un PC moyennant un compilateur.

Un MCU peut être programmé dans un langage:

o Machine; o Assembleur; o Haut niveau (C, C++, Java,…).

Mais, la majorité des MCUs sont programmés en C. Ainsi, Arduino est proche de C.

Page 20: Microcontroleur arduino uno

LE LANGAGE ARDUINO

Un langage de programmation est une grammaire formelle qui inclut des symboles et des règles syntaxiques auxquels on associe des règles sémantiques.

PROGRAMMATION EN ARDUINO

Il en est ainsi pour Arduino qui, malgré sa ressemblance avec le C a ses propres règles, symboles et syntaxiques.

Donc, avec Arduino, il y a une phase de déclaration, d’initialisation, appel de fonction, appel de librairies,…

Page 21: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

Commentaire

Un commentaire en langage de programmation est un bout de mots destinés à documenter le programme et n’est pas exécuté par le compilateur.

// Ceci est un commentaire simple

/* ceci est un long commentaire */

Son importance est pour un repérage facile lors de la programmation d’un gros programme contenant beaucoup de lignes tant faciles que complexes.

Page 22: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

Déclaration des variables

Une variable est un espace réservé dans la mémoire contenant une information (valeur), qui est caractérisée par un nom et un type.

int nomVariable1 ; float nomVariable2 ; char nomVariable3 ; long nomVariable4 ;

Déclarer une variable, c’est créer cet espace prêt à acquérir l’information. Ainsi, nous avons : int (entier), float (flottant), char (caractère), long int (entier long), byte et volatile.

Forme : <type> <nom_de_la_variable>

Page 23: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

Déclaration des constantes

Il est parfois nécessaire de déclarer des variables qui ne changeront pas tout au long de l’exécution du programme, ces variables sont appelées les constantes.

Const int nomVariable1 ; Const float nomVariable2 ; Const char nomVariable3 ;

Forme : <mot_clef> <type> <nom_de_la_variable>

Page 24: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

Déclaration des tableaux

Un tableau est une variable particulière contenant des lignes et des colonnes. En d’autre terme un tableau est un ensemble fini d'éléments de même type.

int tab[5] ; int tab2[3][2] ; int tab3[2] ;

Forme une dimension : <type> <nom_du_tableau> [<nombre_éléments>] Forme 2D :<type> <nom_du_tableau> [<nombre_éléments1>][<nombre_éléments2>]

Page 25: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

Affectation

Affecter une variable/tableau, c’est lui attribuer de l’information (valeur) pour une bonne manipulation. Ce processus est remarqué par l’opérateur égal (=) et des accolades {} pour le tableau.

int nomVariable1 = 5; float nomVariable2 = 2.3 ; char nomVariable3 =’a’; long nomVariable4 = 1000; int tab [5] = {1, 2, 3, 4, 5, 6} ; float tab2 [3] = {1.0, 2.0, 3.0} ; char tab [] = {’a’, ’c’} ;

Forme : <type> <nom_de_la_variable> = <valeur>

Page 26: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

Opérateurs arithmétiques

L’addition (+), la soustraction (-), la division (/), la multiplication (*) et le modulo (%) sont des opérateurs arithmétiques.

int nomVariable1 = 5; int nomVariable2 = 2; int somme ; somme = nomVariable1 + nomVariable2

Opérateurs rationnels

Ces opérateurs comparent deux valeurs, nous avons : < Strictement inférieur > Strictement supérieur != Différent de == égal (à ne pas confondre avec le signe d’affectation =) <= inférieur ou égal >= supérieur ou égal

Page 27: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

Autres opérations

Hormis les opérations arithmétiques citées ci-haut, le C offre un raccourci d’ajout et de soustraction d’un nombre que celui existant appelé l’incrémentation et la décrémentation. Elles sont remarquées par les signes (++) pour la première (incrémentation) et (--) pour la deuxième (décrémentation).

int nomVariable1 = 5; int nomVariable2=nomVariable1++; int nomVariable3=4 ; int nomVariable4=nomVariable3-- ;

Page 28: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

Instructions de controle

Une instruction de contrôle permet de contrôler le fonctionnement d'un programme. Parmi ces instructions, on distingue les instructions de branchement et les boucles.

If (expression1) Instruction1 ; Else Instruction2 ;

a. Instruction de branchement

Les instructions de branchement permettent de déterminer quelles instructions seront exécutées et dans quel ordre.

If (expression1) Instruction1; Else if (expression2) Instruction2; Else Instruction3;

Branchement simple:

Page 29: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

//illustration de la forme 1 int nomVariable1 = 5; int nomVariable2=3 int nomVariable3 ; if (nomVariable1=5); nomVariable3=nomVariable1+nomVariable2; else nomVariable3=nomVariable1-nomVariable2; //illustration de la forme 2 int nomVariable4 = 4 ; int nomVariable5 = 2; int nomVariable6 ; if (nomVariable4 = 4) nomVariable6 = nomVariable4 + nomVariable5; else if (nomVariable4 > 5) nomVariable6 = nomVariable4 - nomVariable5; else nomVariable6=nomVariable4 * nomVariable5;

Page 30: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

Branchement multiple:

switch (expression) { case valeur1 : Instruction1; break ; Case valeur2 : Instruction2; break ; Case valeurN : InstructionN; break ; }

int nomVariable1 = 5; int nomVariable2=3 int nomVariable3 ; switch (nomVariable1){ case nomVariable1 = 5 : nomVariable1 = nomVariable1 + nomVariable2 ; break ; case nomVariable1 = 2 : nomVariable1 = nomVariable1- nomVariable2 ; break ; }

Page 31: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

b. Les boucles

while (expression){ Instruction; }

int nomVariable1 = 2 ; int nomVariable2 = 3; int nomVariable3 ; while (nomVariable1 = 2){ nomVariable3 = nomVariable2++; }

Boucle WHILE

Page 32: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

Do { Instruction } while (expression)

int nomVariable1 = 2 ; int nomVariable2 = 3; int nomVariable3 ; do { nomVariable3 = nomVariable2++} while (expression)

Boucle DO…WHILE

Page 33: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

void nomProcedure () { Instruction-bloc; }

int nomFonction (int nomVariable) { Instruction-bloc; Return <expression>; }

Procédure et fonction

Une fonction est un bout de codes destiné à effectuer une tache précise et renvoie généralement une valeur, résultat d’un calcul. Tandis qu’une méthode ne renvoie pas un résultat.

Forme : déclaration :<type> <nom_de_la_fonction> (<paramètre(s)_de_la_fonction>)

Page 34: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

pinMode(13,OUTPUT); pinMode(13,INPUT);

Initialisation des pins

Il est évident que le MCU est une bête donc, ne sait faire que ce que l’on lui dit de faire c’est-à-dire lui préciser réellement ce que ses pins seront soit à l’état d’acquisition (initialisé comme entrée) ou de restitution (initialisé comme sorties)

o Initialisation des pins en entrée et en sortie

Pour initialiser une pin avec Arduino, il suffit d’appeler la fonction prédéfinie pinMode() en lui donnant comme paramètre, le numéro de port et l’état, soit en entrée (INPUT) ou soit en sortie (OUTPUT).

Page 35: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

Void setup(){ pinMode(13,OUTPUT); }

Void setup(){ pinMode(13,INPUT); }

o Où appeler cette fonction pour initialiser les pins?

Dans la programmation de la carte Arduino, il a été prévu deux fonctions prédéfinies dont l’une est pour l’initialisation ou la configuration (void setup()) et l’autre pour la boucle (void loop()).

D’où, comme il s’agit de l’initialisation, toutes ces commandes seront faites dans void setup().

Page 36: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

Void loop(){ digitalRead(13); }

Void loop{ digitalWrite(13,HIGH); }

LES FONCTIONS DigitalWrite() et DigitalRead()

Après la configuration, il sera question d’activer lesdites pins à l’état haut qui correspond à fournir une tension de +5v (HIGH) ou bas qui correspond à 0v (LOW) ou encore de lire l’état du capteur au cas où, la pin a été initialisée en entrée.

DigitaWrite() sert à configurer l’état d’une pin digitale et reçoit deux paramètres dont le numéro de la pin et son état (HIGH ou LOW).

DigitalRead() sert à lire l’état d’un capteur connectée sur une pin digitale et recoit en paramètre le numéro de la pin, si possible avec son état (HIGH ou LOW).

Page 37: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

LES FONCTIONS analogWrite() et analogRead()

Pour lire/afficher une valeur (ou l’état d’un capteur) analogique, il est évident qu’il faut utiliser les pins analogiques (A1, A2, A3, AA4 et A5) en utilisant les fonctions soit analogRead() pour la lire et analogWrite() pour afficher. Ces fonctions reçoivent en paramètre le numéro de la pin.

Elles peuvent être tout comme les deux précédentes (digitalWrite() et digitalRead()) appelées partout dans le programme.

Page 38: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

LA LIAISON SERIE/PORT SERIE

Il est possible qu’un MCU puisse communiquer avec un autre système à CPU tel qu’un PC, MCU,…

Ainsi, cette interface/liaison permet cette communication entre systèmes à CPU reposant sur la norme RS232.

C’est-à-dire avec cette liaison, nous pouvons faire communiquer deux MCUs, cartes Arduino, PCs et autres appareils/dispositifs supportant cette norme.

La dite liaison est obtenue par un connecteur DB9 qui est presque plus existant à nos jours mais cela est remédié par un câble USB le cas de communication PC-Arduino.

Page 39: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

LA LIAISON SERIE/PORT SERIE

Communication Arduino Uno et PC

Pour utiliser cette liaison, il faut l’établir non seulement physiquement c’est-à-dire par un câble mais aussi dans le programme tout en définissant la vitesse de communication exprimée en bauds (bds).

void setup(){ Serial.begin(vitesse); }

Pour établir une communication série, il suffit d’ajouter la syntaxe ci-dessous dans setup() :

La vitesse s’étend de 110 à 115200 bauds (bds).

void setup(){ Serial.begin(9600); }

Page 40: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

LA LIAISON SERIE/PORT SERIE

Communication d’une carte Arduino avec une autre.

Pour relier une carte Arduino avec une autre, il suffit de relier les deux broches Rx et Tx de l’une avec les Rx et Tx de l’autre. C’est-à-dire relier Rx de l’une avec Tx de l’autre et Tx de l’une avec Rx de l’autre.

Rx

Rx

Tx

Tx

Carte 1 Carte 2

Page 41: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

LA LIAISON SERIE/PORT SERIE

o Envoi de données

Relier deux systèmes implique le partage des données entre ces derniers, pour ce cas précis (entre une carte Arduino et un PC) ce partage se fait dans les deux sens.

Les données qu’enverront la carte Arduino seront prélevées par des capteurs et envoyées dans un PC via une liaison série pour être informé de quelques détails.

Pour envoyer des données via cette liaison, il suffit de taper la commande ci-après:

void loop () { Serial.print(valeur_a_envoyer); Serial.println(valeur_a_envoyer); }

La valeur à envoyer est celle contenant une variable récupérée par un capteur.

Page 42: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

LA LIAISON SERIE/PORT SERIE

o Réception de données

Il est évident que cette réception devra se faire soit du PC-Arduino soit Arduino-PC pour ce cas, c’est la carte qui reçoit donc PC-Arduino.

Les fonctions Serial.avalaible() et Serial.read()

Les deux fonctions de l’objet Serial ci-haut permettent de vérifier et lire les données dans le buffer de réception d’une liaison série. L’une vérifie la présence d’une donnée si non elle revoie -1.

void loop(){ int donnee = Serial.avalaible(); }

En réalité, ladite fonction renvoie le nombre de caractères dans le buffer de réception et au cas où il y a l’absence, elle renvoie -1.

En somme, la fonction vérifie seulement la présence des données.

Page 43: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

LA LIAISON SERIE/PORT SERIE

o Réception de données

Dès que les données sont présentent dans le buffer de réception, il est possible de les lire avec la fonction read() du même objet:

void loop(){ char donnee = Serial.read(); }

Le caractère lu est stocké dans une variable afin si possible d’être utilisée ultérieurement.

Page 44: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

ENTREES ANALOGIQUES et la PWM/MLI

ENTREES ANALOGIQUES

Ces entrées correspondent à la manipulation des données analogiques via les pins analogiques (A0, A1, A2, A3, A4, A5)

Les données analogiques proviennent de capteurs tels que: un potentiomètre, une LDR, un piézoélectrique, un capteur de température, etc.

Un signal analogique est constitué d’une fréquence, période et amplitude; la fréquence est le nombre de fois que ce signal change de l’alternance en une seconde et est l’inverse de la période, et l’amplitude est le niveau maximal de ce signal.

Une fois l’une de ces entrées est connectée à un capteur le dit signal sera converti en numérique grâce à un convertisseur analogique-numérique (CAN intégré dans la carte) afin d’être manipulé par le MCU.

Page 45: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

ENTREES ANALOGIQUES et la PWM/MLI

ENTREES ANALOGIQUES

L’acquisition est faite par la fonction analogRead() et reçoit en argument le numéro de pin analogique.

La fonction retourne une valeur int comprise entre 0 et 1023, et devra être converti en volt en la multipliant par 5 puis diviser par 1024.

Int valeur=0; Int capteur=0; float vExacte=0; void loop(){ valeur = analogRead(capteur); vExacte = (valeur*5)/1024; }

Page 46: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

ENTREES ANALOGIQUES et la PWM/MLI

ENTREES ANALOGIQUES

Il est possible avec la fonction map() de raccourcir le processus pour atteindre le même but. Elle prend en argument cinq (5) paramètres dont la valeur à convertir (acquise par le capteur), le 0, 1023, o et 5000 (5000mV ce puis diviser par 1000 pour avoir 5v).

Int valeur=0; Int capteur=0; float vExacte=0; void loop(){ valeur = analogRead(capteur); vExacte = map(valeur, 0, 1023, 0, 5000); vExacte = vExacte/1000; }

Page 47: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

ENTREES ANALOGIQUES et la PWM/MLI

L’acronyme PWM pour Pulse Width Modulation en français Modulation à Largeur d’Impulsion. Elle est en fait un signal numérique qui, à une fréquence donnée, a un rapport cyclique qui change.

PWM/MLI

Le rapport cyclique avec un signal numérique désigne le fait que le niveau logique 1 peut ou ne pas durer le même temps que le niveau logique 0. Il est mesuré en pour cent (%). Plus le pourcentage est élevé, plus le niveau logique 1 est présent dans la période et moins le niveau logique 0 l'est. Et inversement.

Page 48: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

ENTREES ANALOGIQUES et la PWM/MLI

D’où, la PWM est un signal de fréquence fixe ayant un rapport cyclique variant dans le temps.

Ainsi, la fréquence de la PWM avec la carte Arduino est de 490Hz.

Page 49: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

ENTREES ANALOGIQUES et la PWM/MLI

PWM/MLI

D’autant plus que la PWM est un signal numérique, sa génération est faite par la fonction analogWrite() via les pins 3, 5, 6, 9, 10 et 11 dites pins PWM marquées avec le symbole tilde (~).

La dite fonction reçoit deux (2) paramètres: 1. le numéro de la pin; 2. la valeur du rapport cyclique (comprise entre 0 et 255).

- 0 représente un rapport cyclique de 0%; - 127 représente 50%; - 255 représente 100%; - pour avoir un rapport cyclique quelconque, il suffit de diviser la valeur

par 255 multipliée par 100 (e.g. 169/255 = 0,6627*100 = 66,27%).

Page 50: Microcontroleur arduino uno

LE LANGAGE ARDUINO

PROGRAMMATION EN ARDUINO

ENTREES ANALOGIQUES et la PWM/MLI

PWM/MLI

int capteur=0; void setup(){ pinMode(capteur, OUTPUT); } void loop(){ analogWrite(capteur,169); }

Cette commande/fonction analogWrite() génère de la PWM avec un rapport cyclique de 66,2%.

Ainsi, avec la PWM il est possible de varier la vitesse d’un moteur à DC.

Page 51: Microcontroleur arduino uno

PROGRAMMATION EN ARDUINO

ANALOG : Analogique. AREF : Abréviation pour Analog REFerence, référence analogique. AVAILABLE : Disponible. BEGIN : Début. BIT : bit, unit d'information informatique pouvant prendre soit la valeur 0 soit la valeur 1. BUFFER : Tampon, dans le sens de "zone tampon". BYTE : Octet, soit un groupe de 8 bits. bps : Abréviation pour Bits Per Second, Bits Par Seconde. Attention, abréviation toujours en minuscules.

Les termes ci-dessous sont les plus employés dans ledit domaine de l’életronique programmée:

LEXIQUE DES TERMES EN ANGLAIS

Page 52: Microcontroleur arduino uno

PROGRAMMATION EN ARDUINO

BREADBOARD: plaque d’expérimentation CAPACITOR: condensateur CHAR : Abréviation de CHARacter, caractère (typographique). Type de variable d'une taille d'un octet. C'est un synonyme de "byte" utilisé pour déclarer des variables stockant un caractère ou des chaines de caractères. DEFINE : Définit. DIGITAL : Numérique. DO : Faire. FALSE : Faux. FOR : Pour. GND : Abréviation pour GrouND, la terre. C'est la masse, 0 Volt. HIGH : Haut. ICSP : Abréviation pour In Circuit Serial Programming, programmation série sur circuit. IF / THEN/ ELSE : Si / Alors / Sinon. IN : Souvent l'abréviation pour INput, Entre. Est toujours en rapport avec le sens extérieur vers carte Arduino.

LEXIQUE DES TERMES EN ANGLAIS

Page 53: Microcontroleur arduino uno

PROGRAMMATION EN ARDUINO

INCLUDE : Inclut. INPUT : Entrée. IS : Est (souvent dans le sens d'une question : Est ?). INT : Abréviation pour INTeger, entier. Groupe de 16 bits, 2 octets groupés, considérés comme représentant un nombre entier négatif ou positif. LONG : Abréviation pour "entier long". Groupe de 32 bits, 4 octets groupés, considérés comme représentant un nombre entier négatif ou positif. LOOP : Boucle. LOW : Bas. OUT : Souvent l'abréviation pour OUTput, Sortie. Est toujours en rapport avec le sens carte Arduino vers extérieur. OUTPUT : Sortie. PIN : Broche. POWER : Puissance, alimentation. PWM : Abréviation de (Pulse Width Modulation), soit Modulation en Largeur d'Impulsion. PWR : Abréviation pour PoWeR, puissance, alimentation. READ: Lire.

LEXIQUE DES TERMES EN ANGLAIS

Page 54: Microcontroleur arduino uno

PROGRAMMATION EN ARDUINO

RESISTOR: résistance. RELAY: relais. RX : Abréviation pour Receive, réception. SERIAL : Série. SETUP : Initialisation. SENSOR: capteur TRUE : Vrai. TX: Abréviation Transmit, transmission (mission). WIRE: câble WHILE : Tant que. WORD : mot, soit dans le mot de langage ; soit dans le sens d'un groupe de 16 bits, 2 octets groups considérés comme représentant un nombre entier positif (>= 0). WRITE: Écrire.

LEXIQUE DES TERMES EN ANGLAIS

Page 55: Microcontroleur arduino uno

BIBLIOGRAPHIE - WEBOGRAPHIE

WEBOGRAPHIE

1. http://www.electronique-mixte.fr/kits-de-developpement-processeurs-et-microcontroleurs/kit-msp430-de-ti/.

2. http://www.wikipedia.org/wiki/Langage_de_programmation

1. Arduino pour bien commencer en électronique et en programmation, Astalaseven, Eskimon et olyte, site du zero, 2012 inédit;

2. Les microcontrôleurs dans les systèmes embarqués, Elham Firouzi, Haute école spécialisée bernoise, Janvier 2012 inédit;

3. Microprocesseurs & Microcontrôleurs, Sylvain MONTAGNY, Université de Savoie,

4. Les microcontrôleurs, Jérôme VICENTE, université de Marseille, 2005 inédit.

BIBLIOGRAPHIE

Page 56: Microcontroleur arduino uno

FEEDBACK

E-mails: [email protected] [email protected] Mobiles: +243 85 10 66 991 +243 81 32 20 189 +243 81 74 11 819

Page 57: Microcontroleur arduino uno