Académique Documents
Professionnel Documents
Culture Documents
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.
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)
LFEEA2-FST E. FEKI
1
I.2. Les sorties numériques parallèles
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
lcd.begin(16, 2) ;
}
void loop()
{
//positionnement du curseur ligne0, colonne 5
lcd.setCursor(5, 0);
// Affichage du mot « Arduino »
lcd.print(« Arduino ») ;
lcd.setCursor(5,1) ;
//Affichage du temps de fonctionnement du programme exprimé en secondes
lcd.print(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()
{
serial.begin(9600);
}
void loop()
{
tension = ((analogRead(capteur) * 4.9)/1024); // conversion en tension réelle
temperature = tension/0.01 ;
serial.println(" Temperature : ") ;
serial.print(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.
/*
Commande de servo-moteur par impulsion Nanomaître 2015
Le servo est connecté au pin 8 de l'arduino */
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
}
}
LFEEA2-FST E. FEKI
4