Académique Documents
Professionnel Documents
Culture Documents
Algorithme et
programmation C
1
ARDUINO
Pr. F. NADIR
3
ARDUINO
Présentation
Arduino est un projet créé par une équipe de développeurs, composée de six
individus. Cette équipe a créé le "système Arduino", comme outil qui va permettre
aux débutants, amateurs ou professionnels de créer des systèmes électroniques plus
ou moins complexes. Le gros avantage de l'électronique programmée c'est qu'elle
simplifie grandement les schémas électroniques et par conséquent, le coût de la
réalisation et la charge de travail à la conception d'une carte électronique.
Pr. F. NADIR
4
ARDUINO
Présentation
Le système Arduino nous permet de réaliser un grand nombre de choses, qui ont
une application dans tous les domaines. L'étendue de l'utilisation de l'Arduino est
gigantesque. A l’aide d’Arduino, on peut :
Il s'agit d'une carte électronique basée autour d'un microcontrôleur Atmega du fabricant
Atmel. Elle permet, à partir des événements détectés par des capteurs, de traiter puis
commander des actionneurs, elle représente une interface programmable.
Actionneur
ou
Capteur Carte Arduino Pré-actionneur
Ou
Afficheur
Pr. F. NADIR
6
ARDUINO
Partie Matériel
Types de Carte Arduino
Arduino Nano
Arduino Uno
Arduino Mega
Arduino Leonardo Pr. F. NADIR
7
ARDUINO
Partie Matériel
Types de Carte Arduino
Arduino Micro
Arduino Genuino
Arduino Seeduino
Pr. F. NADIR
8
ARDUINO
Partie Matériel
Types de Carte Arduino
Pr. F. NADIR
10
ARDUINO
Partie Matériel
Les cartes d’extensions s'enfichent sur la carte Arduino telles que : les Relais,
les carte de commande des moteurs, lecteur carte SD, les shilds Ethernet, WIFI,
GSM, GPS, Afficheurs LCD, ...
Traduction en
Langage bas niveau ou
Le code source en langage
langage machine ou
langage haut niveau en machine
langage binaire
C/C++ « Compilation »
(fichier.hex)
IDE Arduino
Pr. F. NADIR
13
ARDUINO
Partie Logiciel
Pr. F. NADIR
14
ARDUINO
1
Le Logiciel
Pr. F. NADIR
15
ARDUINO
5 6
4
Le Logiciel
3
Pr. F. NADIR
16
ARDUINO
Le Logiciel 7
8
7 : Choix du type de la carte 9
8 : Choir du processeur
9 : Choix du port de communication
Série
Pr. F. NADIR
17
ARDUINO
La syntaxe du langage
Pr. F. NADIR
18
ARDUINO
La syntaxe du langage
Pr. F. NADIR
19
ARDUINO
Communication par la liaison série
Pr. F. NADIR
20
ARDUINO
Communication par la liaison série
Pr. F. NADIR
21
ARDUINO
Communication par la liaison série
Les données sont envoyées bit par bit sur la voie de transmission. Toutefois,
étant donné que la plupart des processeurs traitent les informations de façon
parallèle, il s'agit de transformer des données arrivant de façon parallèle en
données en série au niveau de l'émetteur, et inversement au niveau du récepteur.
Pr. F. NADIR
22
ARDUINO
Communication par la liaison série
Pr. F. NADIR
23
ARDUINO
Communication par la liaison série
Protocole de communication RS232
LSB MSB
MSB (Most Significant Bit) : poids fort LSB (Less Significant Bit) : poids faible Pr. F. NADIR
24
ARDUINO
Communication par la liaison série
Protocole de communication RS232
La transmission par voie série se fait, grâce à l'électricité. Cependant, les niveaux
électriques (les tensions) ne sont pas toujours les mêmes :
Pour l’ordinateur : utilise des niveaux de -12V à +12V, en utilisant le câble l’usb, les
niveaux seront donc toujours du5V maximum. Ensuite, un composant intégré à Arduino se
chargera de simuler une voie série et tout devient transparent pour votre ordinateur. Il vous
suffit donc juste d'utiliser le câble USB et de le relier.
Pour Arduino : utilise les niveaux de 0 ou 5V, cependant pour communiquer avec des
composants électrique, on utilise l’adaptation de niveau. Afin de faire cette conversion, un
composant est placé entre les deux supports. Le but de ce composant sera de faire
l'adaptation afin que tout le monde se comprenne. Pr. F. NADIR
26
ARDUINO
Communication par la liaison série
La vitesse de communication
Quand on utilise la voie série, il faut définir la vitesse à laquelle sont transférées
les données. En effet, comme les bits sont transmis un par un, la liaison série envois
les données en un temps prédéfini. Par exemple, on pourra envoyer une totalité de
9600 bits par secondes (9600 bps). Avec cette liaison, on peut envoyer entre 75 et
115200 bits par secondes.
Pr. F. NADIR
27
ARDUINO
Communication par la liaison série
Pour utiliser la liaison série et communiquer, on utilise un objet qui est intégré dans
l'ensemble Arduino : l'objet Serial. Pour initialiser l'objet Serial, ainsi que définir la vitesse
à laquelle ces deux dispositifs vont communiquer, on utilise l’instruction suivante au niveau
de la fonction de configuration setup() :
void setup()
{
Serial.begin(9600); //on démarre la liaison en la réglant à une vitesse de 9600 bits par seconde.
}
Pr. F. NADIR
28
ARDUINO
Communication par la liaison série
Pour que la carte arduino envoie des donnée à un récepteur, on utilise les fonction print()
et println() :
print() : cette fonction permet d'envoyer des données sur la liaison série. On peut par
exemple envoyer un caractère, une chaine de caractère ou d'autres données.
println() : c'est la même fonction que la précédente, elle permet simplement un retour à
la ligne à la fin du message envoyé.
Pr. F. NADIR
29
ARDUINO
Communication par la liaison série
void setup()
{
Serial.begin(9600); //on démarre la liaison en la réglant à une vitesse de 9600 bits par seconde.
Serial.print("DUT GE");
Serial.println("EST AGADIR");
Serial.println("Département Génie Electrique");
}
Pr. F. NADIR
30
ARDUINO
Communication par la liaison série
Serial.print("3.1415926535");
Serial.print("3.1415926535", 4);
Pr. F. NADIR
31
ARDUINO
Communication par la liaison série
Serial.print(Variable);
Pr. F. NADIR
32
ARDUINO
Communication par la liaison série
void loop()
{
Une fois que l'on sait qu'il y a des int Data=0;
données, il faut aller les lire pour les int Data_Dispo = Serial.available();
utiliser au niveau du traitement. La while(Data_Dispo > 0)
lecture se fait avec la fonction read() : {
Data=Serial.read();
Serial.prinln(Data);
}
}
Pr. F. NADIR
34
ARDUINO
Gestion des entrées sorties digitales
void loop()
{
digitalWrite(led_rouge, HIGH);
}
Pr. F. NADIR
36
ARDUINO
Gestion des entrées sorties digitales
Pr. F. NADIR
37
ARDUINO
Gestion des entrées sorties digitales
Gérer le temps
Pr. F. NADIR
38
ARDUINO
Gestion des entrées sorties digitales
void loop()
{
digitalWrite(led_rouge, HIGH);
Delay(1000);
digitalWrite(led_rouge, LOW);
Delay(1000);
}
Pr. F. NADIR
39
ARDUINO
Gestion des entrées sorties digitales
void loop()
{
etat = digitalRead(Bouton);
if(etat == HIGH)
//action lorsque le bouton est appuyé
else
//action lorsque le bouton est relâché
}
Pr. F. NADIR
41
ARDUINO
Gestion des entrées sorties digitales
1kΩ
Bouton poussoir
Pr. F. NADIR
42
ARDUINO
Exercice
Réaliser un jeux de lumière qui contient 6 LEDs et qui se manipule comme suit :
Pr. F. NADIR
43
ARDUINO
Gestion des entrées sorties Analogiques
Définition
une valeur analogique ne s’exprimée pas par 0 ou 1 (0 ou 5V). Elle peut prendre
une infinité de valeurs dans un intervalle donné. Dans le cas d’arduino, la grandeur
analogique pourra varier de 0 à 5V. Puisque le traitement se fait au niveau du
microcontrôleur et qui reçoit une information numérique, d’où l’intérêt
d’implémenter un convertisseur analogique numérique. Ce dispositif, permet de
convertir des grandeurs analogiques en grandeurs numériques. La valeur
numérique obtenue sera proportionnelle à la valeur analogique fournie en entrée.
Pr. F. NADIR
44
ARDUINO
Gestion des entrées sorties Analogiques
Potentiomètre
Pr. F. NADIR
46
ARDUINO
Gestion des entrées sorties Analogiques
Pr. F. NADIR
47
ARDUINO
Gestion des entrées sorties Analogiques
𝑇𝑜𝑛
Veff=E
𝑇
Pr. F. NADIR
48
ARDUINO
Gestion des entrées sorties digitales
1. Définir sur la carte Arduino, la broche qui est compatible avec la génération d'une
PWM. Par exemple pour Arduino UNO, elles sont repérées par le symbole tilde ~ (3,
5, 6, 9, 10 et 11).
Pr. F. NADIR
49
ARDUINO
Gestion des entrées sorties digitales
Pour utiliser la PWM, Arduino intègre une fonction toute prête, qui est la fonction
analogWrite(). Cette fonction prend deux arguments en paramètres :
Le premier est le numéro de la broche où l'on veut générer la PWM.
Le second argument représente la valeur du rapport cyclique à appliquer. Cette
valeur ne s'exprime pas cette valeur en pourcentage, mais avec un nombre entier
compris entre 0 et 255. const int Pin_PWM = 3;
void loop()
{
analogWrite(Pin_PWM, 150);
} Pr. F. NADIR
50
ARDUINO
Gestion des entrées sorties digitales
Pr. F. NADIR
51
ARDUINO
Exercice
Un capteur de température mesure la température d’un four entre (0°C à 100°C) qui est
l’image de 0 à 5V :
Si la température est supérieure à 80°C, allumer une LED rouge, afficher le message :
« Le four est chaud », au niveau du moniteur série et allumer Led Rouge.
Si la température est inférieure à 20°C, allumer une LED bleu, afficher le message :
« Le four est froid », au niveau du moniteur série et allumer Led Bleu.
Si la température est compris entre 20°C et 80°C, allumer une LED verte, afficher le
message : « La température du four est moyenne», au niveau du moniteur série et allumer
Led Verte.
Pr. F. NADIR