100% ont trouvé ce document utile (2 votes)
244 vues4 pages

Chapitre 3 Application Arduino

Ce document décrit diverses applications de la carte Arduino, notamment les entrées/sorties numériques et analogiques. Il présente des exemples de code pour la lecture de boutons poussoirs, l'affichage sur écran LCD, et le contrôle de moteurs servo à l'aide de signaux PWM.

Transféré par

Nesrine Zouari
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
100% ont trouvé ce document utile (2 votes)
244 vues4 pages

Chapitre 3 Application Arduino

Ce document décrit diverses applications de la carte Arduino, notamment les entrées/sorties numériques et analogiques. Il présente des exemples de code pour la lecture de boutons poussoirs, l'affichage sur écran LCD, et le contrôle de moteurs servo à l'aide de signaux PWM.

Transféré par

Nesrine Zouari
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

Chapitre 3

LES APPLICATIONS DE LA CARTE ARDUINO


I. LES ENTREES/SORTIES NUMERIQUES
I.1. Les entrées parallèles
Ces entrées sont utilisées pour :
- Connaître l’état des divers éléments : commutateurs, poussoirs, roues codeuse,
codeuse capteur TOR.
- Pour vérifier la présence ou l’absence de tension sur certains dispositifs au moyen de photocoupleur
d’isolement (voir figure 1 de l’annexe)
l’annexe).
- Pour scruter un clavier de commande.

 Le problème de rebondissement
ndissement :
Lors de fermeture ou ouverture d’un commutateur on a ce problème de rebondissement.
C'est-à-dire l’ouverture
ure ou la fermeture du contact ne se fait pas immédiatement mais qu’elle est assortie
d’une multitude d’oscillations parasites (quelques m
microsecondes).

Les solutions :
- par un montage d’anti-rebondissement
rebondissement (figure ci
ci-dessous).
- Par programmation.

Avec ce montage on peut programmer l’utilisation d’un bouton de la manière suivante :


int pin_LED = 13; // port numérique associé à la LED intégrée
int pin_button = 2; // port numérique lié au bouton poussoir
int state = LOW; // variable d'état de la LED

void setup() {
pinMode(pin_LED, OUTPUT); // réglage du port de la LED en mode SORTIE
pinMode(pin_button,, INPUT); // réglage du port du bouton en mode ENTREE
}

void loop() {
if (digitalRead(pin_button) == HIGH) { // si le bouton est pressé ...
state = !state; // ... inversion de la variable d'état de la LED (allumée<
(allumée<->éteinte)
}
digitalWrite(pin,
(pin, state); // action sur la LED (allumage ou extinction)

// Suite du programme ... simulé par une instruction d'attente


delay(100);
}

LFEEA2-FST E. FEKI
1
I.2. Les sorties numériques parallèles

 Commande LED (voir la figure 2 de l’annexe)

 Command de relais (voir les figures 3 et 4 de l’annexe)


 Commande directe de charges reliées au secteur (voir la figure 6 de l’annexe).
 Commande directe de charges alimentées en continu (voir la figure 7 de l’annexe).
 Commande directe d’afficheurs à LED (7 segments)
Exemple faire un programme qui est capable d’afficher les chiffres de 0 à 9 en utilisant un afficheur
7 segments a cathode commune (afficher le chiffre 4 à titre d’exemple)

Pour alléger le programme : on utilise un tableau de codage précisant, pour chaque chiffre à afficher, quels
sont les segments à allumer

LFEEA2-FST E. FEKI
2
Exemple : Utilisation d’un afficheur LCD en mode 4 bits. (voir figure 8 de l’annexe)

#include <LiquidCrystal>
// Définition du mode de connexion de l’afficheur ; ici en mode de 4 bits avec R/W à la masse
…………………………………………

void setup()
{
// type d’afficheur ici 2 lignes, 16 caractères
[Link](16, 2) ;
}

void loop()
{
//positionnement du curseur ligne0, colonne 5
[Link](5, 0);
// Affichage du mot « Arduino »
[Link](« Arduino ») ;
[Link](5,1) ;
//Affichage du temps de fonctionnement du programme exprimé en secondes
[Link](millis()/1000) ;
}
II. LES ENTREES/SORTIES ANALOGIQUES :
capteurs, potentiomètres, gradateurs et moteurs
II.1. Les entrées analogique : Utilisation d’un capteur délivrant une tension analogique

Exemple : mesure de la température au moyen d’un LM35 utilisant l’arithmétique en virgule flottante
LM 35 (10mV / °C)

#define capteur 4
float temperature;
float tension;
void setup()
{
[Link](9600);
}
void loop()
{
tension = ((analogRead(capteur) * 4.9)/1024); // conversion en tension réelle
temperature = tension/0.01 ;
[Link](" Temperature : ") ;
[Link](temperature) ;
delay(1000);
}
LFEEA2-FST E. FEKI
3
II.2. Les sorties analogiques PWM
PWM : signal permettant de doser avec une grande efficacité la puissance appliquée a des charges
alimentées sous une tension continue (ou analogique).
La tension en PWM a plus de performance car on utilise des transistors de commutation (faible dissipation).

Exemple1 : faire varier la luminosité d’une LED en PWM à partir d’un potentiomètre.

Exemple d’application : commande d’un servo-moteur

/*
Commande de servo-moteur par impulsion Nanomaître 2015
Le servo est connecté au pin 8 de l'arduino */

int periode=20000;// période entre chaque début d'impulsion en microsecondes


int pinServo=8; // variable pour le pin connecté à la commande du servo

void setup() {
pinMode(pinServo,OUTPUT);// on prépare le pin en mode OUTPUT
digitalWrite(pinServo,LOW); // on l'initialise à l'état bas
}

//boucle principale
void loop() {
for (int angle=0;angle<=180;angle+=20){//on fait varier l'angle de 0 à 180° par tranche de 20°
setAngle(angle);// on appelle la fonction setAngle définie plus bas
}
}

//fonction setAngle pour envoyer les impulsions


void setAngle(int a){
int duree=map(a,0,179,1000,2000);// on transforme l'angle en microsecondes et on stocke dans la
variable duree
digitalWrite(pinServo,LOW);//on met le pin à l'état bas

// la boucle qui suit est nécessaire


// pour laisser le temps au servo d'aller à sa position
for (int t=0;t<300;t++){
digitalWrite(pinServo,HIGH);// on envoie l'impulsion
delayMicroseconds(duree); // pendant la bonne durée
digitalWrite(pinServo,LOW); // on stoppe l'impulsion
delayMicroseconds(periode-duree); // on attend le temps restant pour atteindre la période
}
}

LFEEA2-FST E. FEKI
4

Vous aimerez peut-être aussi