0% ont trouvé ce document utile (0 vote)
11 vues9 pages

Programmation des Systèmes à Microcontrôleur

Le document présente un laboratoire d'électronique axé sur la programmation de systèmes à microcontrôleur, en se concentrant sur la carte Arduino UNO et la puce ATMEGA328. Il détaille la structure d'un programme Arduino, les types de variables, les fonctions, et les structures de contrôle, tout en incluant des exercices pratiques pour réaliser des projets tels qu'un jeu de lumière avec des LED et une poubelle intelligente. Le contenu est destiné aux étudiants du département de génie électrique et informatique industrielle de l'Université de Douala.

Transféré par

yvankamgadjb
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 DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
11 vues9 pages

Programmation des Systèmes à Microcontrôleur

Le document présente un laboratoire d'électronique axé sur la programmation de systèmes à microcontrôleur, en se concentrant sur la carte Arduino UNO et la puce ATMEGA328. Il détaille la structure d'un programme Arduino, les types de variables, les fonctions, et les structures de contrôle, tout en incluant des exercices pratiques pour réaliser des projets tels qu'un jeu de lumière avec des LED et une poubelle intelligente. Le contenu est destiné aux étudiants du département de génie électrique et informatique industrielle de l'Université de Douala.

Transféré par

yvankamgadjb
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 DOCX, PDF, TXT ou lisez en ligne sur Scribd

REPUBLIQUE DE CAMEROUN REPUBLIC OF CAMEROON

Paix – Travail - Patrie Peace-Work-Fatherland

MINISTERE DE L’ENSEIGNEMENT SUPERIEUR MINISTRY OF HIGHER EDUCATION

UNIVERSITE DE DOUALA THE UNIVERSITY OF DOUALA


INSTITUT UNIVERSITAIRE DE TECHNOLOGIE UNIVERSITY INSTITUTE
OFTECHNOLOGY
BP. 8698 DOUALA ; Email : [Link]@[Link] [Link]. 8698 DOUALA ; Email : [Link]@[Link]

DEPARTEMENT DE GENIE ELECTRIQUE ET INFORMATIQUE INDUSTRIELLE


DUT GEII1/GBM1

EC :TP ELECTRONIQUE

Laboratoire d’électronique

Préparé par Mr ONANA JOSEPH


THEME 1 : PROGRAMMATION DES SYSTEMES A
MICROCONTROLEUR

Principe :

Un microcontrôleur est un petit processeur informatique relié à des entrées et des sorties numériques
(0 ou 1) ou analogiques (tension variable). Il est capable de mémoriser et d'exécuter un programme
visant à interpréter les entrées pour agir sur les sorties. Il se programme en général à l'aide d'un
ordinateur mais peut fonctionner de manière autonome. En milieu industriel, les automates
programmables qui servent à gérer et piloter des machines en sont une illustration. Ce type de machine
intervient sur la commande d'un système mais ne peut délivrer beaucoup de puissance. Pour cela, on
relaye ses commandes avec des transistors ou des relais.
Il existe de nombreux types et tailles de microcontrôleurs avec plus ou moins d'entrées /sorties et
d'interfaces. À petite échelle, les PIC (produits par la société Microchip) sont des circuits intégrés bien
connus des électroniciens depuis de nombreuses années. De nombreuses autres marques comme
ATMEL, STMicroelectronics, Parallax ou Motorola produisent également des machines de ce type. Ils
sont en général programmés en C/C++ et nécessitent des connaissances approfondies en électronique.
La plate-forme Arduino a apporté une avancée majeure dans l'accessibilité de cette technologie au plus
grand nombre, par sa simplicité d'utilisation et son coût abordable.
Dans ce TP nous traiterons des microcontrôleurs de la famille ATMEL plus précisément de la carte
arduino UNO.
La puce la plus courante qui équipe la carte Arduino est la ATMEGA328. Certains anciens modèles
ont une puce ATMEGA168 qui est dotée d'un peu moins de mémoire. Les cartes Arduino Mega sont
dotées d'une puce ATMEGA644 qui a plus de mémoire et plus d'entrées/sorties. Tous les processeurs
de la famille ATMEGA se programment sensiblement de la même manière mais des différences
peuvent apparaître pour des fonctions plus complexes.

Programmer Arduino
Le langage de programmation

Un langage de programmation est un langage permettant à un être humain d'écrire un ensemble


d'instructions (code source) qui seront directement converties en langage machine grâce à un
compilateur (c'est la compilation). L'exécution d'un programme Arduino s'effectue de manière
séquentielle, c'est-à-dire que les instructions sont exécutées les unes à la suite des autres. Voyons plus
en détail la structure d'un programme écrit en Arduino.

La structure d'un programme

Un programme Arduino comporte trois parties :

Préparé par Mr ONANA JOSEPH


1. La partie déclaration des variables (optionnelle) ;
2. La partie initialisation et configuration des entrées/sorties : la fonction setup () ;
3. La partie principale qui s'exécute en boucle : la fonction loop ().

Dans chaque partie d'un programme sont utilisées différentes instructions issues de la syntaxe du
langage Arduino.

La syntaxe du langage

Ponctuation

Le code est structuré par une ponctuation stricte :

● toute ligne de code se termine par un point-virgule « ; » ;


● le contenu d'une fonction est délimité par des accolades « { » et « } » ;
● les paramètres d'une fonction sont contenus pas des parenthèses « ( » et « ) ».

Une erreur fréquente consiste à oublier un de ces éléments.

Les variables

Préparé par Mr ONANA JOSEPH


Une variable est un espace réservé dans la mémoire de l'ordinateur. C'est comme un compartiment
dont la taille n'est adéquate que pour un seul type d'information. Elle est caractérisée par un nom qui
permet d'y accéder facilement.

Il existe différents types de variables identifiés par un mot-clé dont les principaux sont :

● nombres entiers (int) ;


● nombres à virgule flottante (float) ;
● texte (String) ;

valeurs vrai/faux (boolean).

Un nombre à décimales, par exemple 3.14159, peut se stocker dans une variable de type float. Notez
que l'on utilise un point et non une virgule pour les nombres à décimales. Dans Arduino, il est
nécessaire de déclarer les variables pour leur réserver un espace mémoire adéquat. On déclare une
variable en spécifiant son type, son nom, puis en lui assignant une valeur initiale (optionnelle).

Exemple : int ma_variable = 45; // int est le type, ma_variable le nom et


= 45 assigne une valeur.

Les fonctions

Une fonction (également désignée sous le nom de procédure ou de sous-routine) est un bloc
d'instructions que l'on peut appeler à tout endroit du programme. Le langage Arduino est constitué
d'un certain nombre de fonctions, par exemple analogRead(), digitalWrite() ou delay().

Il est possible de déclarer ses propres fonctions, par exemple :

void clignote(){
digitalWrite (brocheLED, HIGH);
delay (1000);
digitalWrite (brocheLED, LOW);
delay (1000);
}

Pour exécuter cette fonction, il suffit de l’appeler dans le void loop :

void loop(){
clignote();

On peut faire intervenir un ou des paramètres dans une fonction :

void clignote(int broche,int vitesse){


digitalWrite (broche, HIGH);
delay (1000/vitesse);
digitalWrite (broche, LOW);
delay (1000/vitesse);
}

Dans ce cas, l'on peut moduler leurs valeurs depuis la commande qui l'appelle :

clignote(5,1000); //la sortie 5 clignotera vite


clignote(3,250); //la sortie 3 clignotera lentement

Préparé par Mr ONANA JOSEPH


Les structures de contrôle

Les structures de contrôle sont des blocs d'instructions qui s'exécutent en fonction du respect d'un
certain nombre de conditions.

Il existe quatre types de structure.

if...else: exécute un code si certaines conditions sont remplies et éventuellement exécutera un autre
code avec sinon.

Exemple :

//si la valeur du capteur dépasse le seuil


if(valeurCapteur>seuil){
//appel de la fonction clignote
clignote();
}

while : exécute un code tant que certaines conditions sont remplies.

Exemple :

//tant que la valeur du capteur est supérieure à 250


while(valeurCapteur>250){
//allume la sortie 5
digitalWrite(5,HIGH);
//envoi le message "0" au port série
[Link](1);
//en boucle tant que valeurCapteur est supérieure à 250
}

[Link](0);

digitalWrite(5,LOW);

for : exécute un code pour un certain nombre de fois.

Exemple :

//pour i de 0 à 255, par pas de 1


for (int i=0; i <= 255; i++){
analogWrite(PWMpin, i);
delay(10);
}

switch/case : fait un choix entre plusieurs codes parmi une liste de possibilités

Exemple :

// fait un choix parmi plusieurs messages reçus


switch (message) {
case 0: //si le message est "0"
//allume que la sortie 3
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
break;
Préparé par Mr ONANA JOSEPH
case 1: //si le message est "1"
//allume que la sortie 4
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
break;
case 2: //si le message est "2"
//allume que la sortie 5
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
break;
}

EXERCICE 1 :

Principe de fonctionnement texte brillant

Ce projet permet de monter plusieurs LED sur une carte Arduino. Les LED sont ensuite pilotées à
partir de certaines touches du clavier de votre ordinateur pour en faire un magnifique jeu de lumière.
Dans ce projet, nous utiliserons le moniteur sériel pour activer les lumières

Préparation :

Des caractères sont saisis à partir du moniteur sériel de l'interface de programmation Arduino pour
allumer et éteindre les LED.

● Saisir 'R ou r' pour allumer la LED rouge.


● Saisir 'J ou j' pour allumer la LED jaune.
● Saisir' V ou v' pour allumer la LED verte.
● Saisir 'B ou b' pour allumer la LED bleue.
● Saisir 'E ou e' pour éteindre les LED

Préparé par Mr ONANA JOSEPH


1) A l’aide de la figure, dressez la liste du matériel.

2) Identifier les composants de ce circuit et donner leurs critères de dimensionnement.

Manipulation :

1) Réalisez le montage sous Proteus.

2) Réalisez le montage sur plaque a essais.

3) Recopiez le code et téléversez le dans la carte puis testez


//Déclaration des pins sur lesquelles sont connectées les LED

int pinLed3 = 8; // LED Bleue


int pinLed2 = 6; // LED Verte
int pinLed1 = 4; // LED Jaune
int pinLed0 = 2; // LED Rouge

//Déclaration de la variable contenant la valeur de la touche saisie au clavier

int octetRecu;

void setup() {

// Initialisation de la communication série

[Link](9600);

// Configuration des pins en sortie

// il est important pour le bon fonctionnement du montage de spécifier quelles


pins seront utilisées comme sortie.

pinMode(pinLed0, OUTPUT);
pinMode(pinLed1, OUTPUT);
pinMode(pinLed2, OUTPUT);
pinMode(pinLed3, OUTPUT);
}
void loop() {
// Vérifie si il y a une donnée sérielle disponible
if ([Link]() > 0) {
// Lecture de l'octet présent dans la mémoire tampon (buffer)
octetRecu = [Link]();

if (octetRecu == 'R' || octetRecu == 'r') { //Si l'octet reçu est égal à R


ou r
digitalWrite(pinLed0, HIGH); //Allumer la LED connectée à pinLed0
[Link]("LED Rouge allumee"); //Afficher "LED Rouge allumée"
dans le moniteur série
}

if (octetRecu == 'J' || octetRecu == 'j') { //Si l'octet reçu est égal à J


ou j
digitalWrite(pinLed1, HIGH); //Allumer la LED connectée à pinLed1
[Link]("LED Jaune allumee"); //Afficher "LED Jaune allumée"
dans le moniteur série
}

Préparé par Mr ONANA JOSEPH


if (octetRecu == 'V' || octetRecu == 'v') { //Si l'octet reçu est égal à V
ou v
digitalWrite(pinLed2, HIGH); //Allumer la LED connectée à pinLed2
[Link]("LED Verte allumee"); //Afficher "LED Verte allumée"
dans le moniteur série
}

if (octetRecu == 'B' || octetRecu == 'b') { //Si l'octet reçu est égal à B


ou b
digitalWrite(pinLed3, HIGH); //Allumer la LED connectée à pinLed3
[Link]("LED Bleue allumee"); //Afficher "LED Bleue allumée"
dans le moniteur série
}

if (octetRecu == 'E' || octetRecu == 'e') { //Si l'octet reçu est égal à E


ou e
//Éteindre les LED connectées aux pinLed0, pinLed1, pinLed2 et pinLed3
digitalWrite(pinLed0, LOW);
digitalWrite(pinLed1, LOW);
digitalWrite(pinLed2, LOW);
digitalWrite(pinLed3, LOW);
//Afficher "LED éteinte" dans le moniteur série
[Link]("LED eteinte");
}
}
}

4) Ressortez son typon sous Proteus.


5) Ressortez le typon sur plaque présensibilisée.

FEUILLE DE REPONSE A saisir et envoyer sous format ZIP

QUESTION DE COURS, PREPARATION, COMPTE RENDU

EXERCICE 2 :

Principe de fonctionnement: poubelle intelligente

Ce projet consiste à concevoir et réaliser une poubelle qui s’ouvrira automatique à l’approche d’un
utilisateur pour lui permettre de jeter son ordure et se refermera aussi tôt après la tache effectuée.

Préparation :

REALISEZ LE SYNOPTIQUE DE CE SYSTEME

Manipulation :

Préparé par Mr ONANA JOSEPH


1) Réalisez le montage sous Proteus

2) Réalisez ce projet en grandeur nature

QUESTION DE COURS, PREPARATION, COMPTE RENDU

Préparé par Mr ONANA JOSEPH

Vous aimerez peut-être aussi