Les capteurs analogiques et numériques
De Wiki L.A.B
Révision de 15 décembre 2015 à 12:15 par Adminsys (discussion | contributions) (Page créée avec « ==== Potentiomètre ==== {{:Potentiomètre}} ==== Mesure d'éclairement - LDR ==== {{:Mesure d'éclairement - LDR}} ==== Mesure de distance - Infrarouge ====... »)
Sommaire
Potentiomètre
Matériel
- Arduino Uno
- Plaque d'essai (breadbord)
- LED RGB à cathodes communes
- 3 Résistances 1/4W 270Ω ( 220Ω ou 330Ω peuvent également convenir)
- Potentiomètre (typiquement de 10 à 100kΩ)
- Straps ou fils de liaison
Montage
Programme
Voici le programme qu'il faut éditer dans l'IDE Arduino, puis compiler et charger dans la carte Arduino
/*
Ce programme allume la LED rouge sur une LED RGB cathodes communes branchée sur les
broches 3,5 et 6 en fonction de la position du potentiomètre,
les valeurs sont affichées dans le moniteur série
*/
int ledR = 3; // broche de la LED Rouge
int ledG = 5; // broche de la LED Verte
int ledB = 6; // broche de la LED Bleue
int pot = A0; // broche du potentionmètre
int mes =0; // variable mesurée : potentionmètre
void setup() // setup est déroulé une seule fois après la remise à zéro
{
pinMode(ledR, OUTPUT); // la broche led (3) est initialisée en sortie
pinMode(ledG, OUTPUT); // la broche led (5) est initialisée en sortie
pinMode(ledB, OUTPUT); // la broche led (6) est initialisée en sortie
Serial.begin(115200); // initialisation de la liaison série à 115200 bauds
}
void loop() // loop est déroulé indéfiniment
{
digitalWrite(ledG,0); // LED G éteinte
digitalWrite(ledB,0); // LED B éteinte
mes = analogRead(pot); // mesure de la postion du potentiomètre
Serial.print("mesure = "); // affiche mesure = sans saut de ligne
Serial.println(mes); // affiche valeur mesuree avec saut de ligne
mes = map (mes,0,1023,0,255); // péréquation de la valeur mesurée avec une valeur pour la LED R
analogWrite(ledR,mes); // génère une impulsion sur la broche de largeur mes => la luminosité R=f(mes)
Serial.print("mesure mappee = "); // affiche mesure mappee = sans saut de ligne
Serial.println (mes); // affiche valeur mesuree et mappee
delay(200); // attente pour lecture dans le moniteur serie
}
Mesure d'éclairement - LDR
Matériel
- Arduino Uno
- Plaque d'essai (breadbord)
- LED RGB à cathodes communes
- 3 Résistances 1/4W 270Ω ( 220Ω ou 330Ω peuvent également convenir)
- Résistance 22kΩ
- LDR
- Straps ou fils de liaison
Montage
Programme
Voici le programme qu'il faut éditer dans l'IDE Arduino, puis compiler et charger dans la carte Arduino
/*
Ce programme allume progressivement une LED RGB cathodes communes branchée sur les broches 3,5 et 6
en fonction de la lumière reçue par une LDR, les valeurs sont affichées dans le moniteur série
*/
int ledR = 3; // broche de la LED Rouge
int ledG = 5; // broche de la LED Verte
int ledB = 6; // broche de la LED Bleue
int ldr = A0; // broche de la LDR
int mes =0; // variable mesurée : éclairement
void setup() // setup est déroulé une seule fois après la remise à zéro
{
pinMode(ledR, OUTPUT); // la broche led (3) est initialisée en sortie
pinMode(ledG, OUTPUT); // la broche led (5) est initialisée en sortie
pinMode(ledB, OUTPUT); // la broche led (6) est initialisée en sortie
Serial.begin(115200); // initialisation de la liaison série à 115200 bauds
}
void loop() // loop est déroulé indéfiniment
{
digitalWrite(ledG,0); // LED G éteinte
digitalWrite(ledB,0); // LED B éteinte
mes = analogRead(ldr); // mesure par lumière reçue par la LDR
Serial.print("mesure = "); // affiche mesure = sans saut de ligne
Serial.println(mes); // affiche valeur mesuree avec saut de ligne
mes = map (mes,0,1023,0,255); // péréquation de la valeur mesurée avec une valeur pour la LED R
analogWrite(ledR,mes); // génère une impulsion sur la broche de largeur mes => la luminosité R=f(mes)
Serial.print("mesure mappee = ");// affiche mesure mappee = sans saut de ligne
Serial.println (mes); // affiche valeur mesuree et mappee avec saut de ligne
delay(200); // attente pour lecture dans le moniteur serie
}
Mesure de distance - Infrarouge
Matériel
- Arduino Uno
- Plaque d'essai (breadbord)
- LED RGB à cathodes communes
- 3 Résistances 1/4W 270Ω ( 220Ω ou 330Ω peuvent également convenir)
- Capteur de distance Sharp GP2Y0A21
- Straps ou fils de liaison
Montage
Programme
Voici le programme qu'il faut éditer dans l'IDE Arduino, puis compiler et charger dans la carte Arduino
/*
Ce programme allume une LED RGB cathodes communes branchée sur les broches 3,5 et 6
en fonction de la distance mesurée par le capteur IR GP2Y0A21,
les valeurs sont affichées dans le moniteur série
*/
int ledR = 3; // broche de la LED Rouge
int ledG = 5; // broche de la LED Verte
int ledB = 6; // broche de la LED Bleue
int capt = A0; // broche du capteur
int mes =0; // variable mesurée : distance
void setup() // setup est déroulé une seule fois après la remise à zéro
{
pinMode(ledR, OUTPUT); // la broche led (3) est initialisée en sortie
pinMode(ledG, OUTPUT); // la broche led (5) est initialisée en sortie
pinMode(ledB, OUTPUT); // la broche led (6) est initialisée en sortie
Serial.begin(115200); // initialisation de la liaison série à 115200 bauds
}
void loop() // loop est déroulé indéfiniment
{
digitalWrite(ledR,0); // valeur 0 sur la LED B
digitalWrite(ledG,0); // valeur 0 sur la LED G
digitalWrite(ledB,0); // valeur 0 sur la LED B
mes = analogRead(capt); // mesure de la distance
Serial.print("mesure = "); // affiche mesure = sans saut de ligne
Serial.println(mes); // affiche valeur mesuree avec saut de ligne
mes = map (mes,0,1023,0,255);
Serial.print("mesure mappee = ");// affiche mesure mappee = sans saut de ligne
Serial.println (mes); // affiche valeur mesuree et mappee avec saut de ligne
if (mes > 80) digitalWrite(ledR,1); // si mesure > 80 LED = Rouge
else
{
if (mes > 50) // si mesure > 50 LED = Orange
{
analogWrite(ledR,255);
analogWrite(ledG,127);
}
else // si mesure < 50 LED = Verte
{
digitalWrite(ledR,0);
digitalWrite(ledG,1);
}
}
delay(200); // attente pour affichage dans le moniteur serie
}
Mesure de distance - Ultrason
Matériel
- Arduino Uno
- Plaque d'essai (breadbord)
- LED RGB à cathodes communes
- 3 Résistances 1/4W 270Ω ( 220Ω ou 330Ω peuvent également convenir)
- Capteur de distance US HC-SR04
- Straps ou fils de liaison
Montage
Programme
Voici le programme qu'il faut éditer dans l'IDE Arduino, puis compiler et charger dans la carte Arduino
/*
Ce programme allume une LED RGB cathodes communes en fonction de la distance mesurée
par le capteur US HC-SR04, les valeurs sont affichées dans le moniteur série
*/
int echo = 2; // broche echo du capteur US HC-SR04
int trig = 4; // broche trig du capteur US HC-SR04
int ledR = 3; // broche de la LED Rouge
int ledG = 5; // broche de la LED Verte
int ledB = 6; // broche de la LED Bleue
long lecture_echo = 0; // variable sur 4 octets mesure de distance
long cm = 0; // variable sur 4 octets pour la conversion en cm
void setup() // setup est déroulé une seule fois après la remise à zéro
{
pinMode(ledR, OUTPUT); // la broche led (3) est initialisée en sortie
pinMode(ledG, OUTPUT); // la broche led (5) est initialisée en sortie
pinMode(ledB, OUTPUT); // la broche led (6) est initialisée en sortie
pinMode(trig, OUTPUT); // la broche trig est initialisée en sortie
digitalWrite(trig, LOW); // met un niveau logique , LOW (BAS) sur la broche trig
pinMode(echo, INPUT); // la broche echo est initialisée en entree
Serial.begin(115200); // initialisation de la liaison série à 115200 bauds
}
void loop() // loop est déroulé indéfiniment
{
digitalWrite(ledR,0); // valeur 0 sur la LED B
digitalWrite(ledG,0); // valeur 0 sur la LED G
digitalWrite(ledB,0); // valeur 0 sur la LED B
digitalWrite(trig, HIGH); // met un niveau logique , HIGH (HAUT) sur la broche trig
delayMicroseconds(10); // attente pendant 10 millisecondes
digitalWrite(trig, LOW); // met un niveau logique , LOW (BAS) sur la broche trig.
lecture_echo = pulseIn(echo, HIGH); // lit la durée du niveau HAUT appliqué sur la broche echo
cm = lecture_echo / 58; // conversion de la distance en cm
Serial.print("Distance en cm : "); // affiche le message : "Distance en cm" sur le moniteur série
Serial.println(cm); // affiche la mesure en cm avec retour à la ligne
if (cm < 10) digitalWrite(ledR,1); // si mesure < 10 => LED = Rouge
else
{
if (cm < 30) // si mesure < 30 => LED = Orange
{
analogWrite(ledR,255);
analogWrite(ledG,127);
}
else // si mesure >= 30 => LED = Verte
{
digitalWrite(ledR,0);
digitalWrite(ledG,1);
}
}
delay(1000); //attente pendant 1 seconde.
}
Voici un programme avec les mêmes fonctionnalités qui fait appel à une librairie :
librairie Newping
/*
Ce programme allume une LED RGB cathodes communes en fonction de la distance mesurée
par le capteur US HC-SR04, les valeurs sont affichées dans le moniteur série
en faisant appel à la librairie NewPing
*/
#include <NewPing.h> // appel à la librairie Newping
#define distMax 200 // distance maximales (en cm)
int trig = 2; // broche trig du capteur US HC-SR04
int echo = 4; // broche echo du capteur US HC-SR04
int ledR = 3; // broche de la LED Rouge
int ledG = 5; // broche de la LED Verte
int ledB = 6; // broche de la LED Bleue
unsigned int uS = 0 ; // variable utilisée pour la mesure
NewPing sonar(trig, echo, distMax); // initialisation de NewPing (broches et distance max)
void setup() // setup est déroulé une seule fois après la remise à zéro
{
pinMode(ledR, OUTPUT); // la broche led (3) est initialisée en sortie
pinMode(ledG, OUTPUT); // la broche led (5) est initialisée en sortie
pinMode(ledB, OUTPUT); // la broche led (6) est initialisée en sortie
Serial.begin(115200); // initialisation de la liaison série à 115200 bauds
}
void loop() // loop est déroulé indéfiniment
{
digitalWrite(ledR,0); // valeur 0 sur la LED B
digitalWrite(ledG,0); // valeur 0 sur la LED G
digitalWrite(ledB,0); // valeur 0 sur la LED B
delay(50); // attente 50ms entre 2 impulsions
uS = sonar.ping(); // lecture de la distance (temps : impulsions en µs).
Serial.println(uS);
Serial.print("Ping: ");
Serial.print(uS / US_ROUNDTRIP_CM); // conversion durée impulsion en cm
Serial.println("cm");
if (uS < 600) digitalWrite(ledR,1); // si mesure < 10cm => LED = Rouge
else
{
if (uS < 1700) // si mesure < 30cm => LED = Orange
{
analogWrite(ledR,255);
analogWrite(ledG,127);
}
else // si mesure >= 30cm => LED = Verte
{
digitalWrite(ledR,0);
digitalWrite(ledG,1);
}
}
delay(1000); //attente pendant 1 seconde.
}
Mesure de température et d'humidité
Matériel
- Arduino Uno
- Plaque d'essai (breadbord)
- Capteur DHT11 ou DHT22
- Résistance 4,7kΩ 1/4W (si besoin)
- Straps ou fils de liaison
Montage
Programme
Voici le programme qu'il faut éditer dans l'IDE Arduino, puis compiler et charger dans la carte Arduino. Il utilise une librairie.
Pour télécharger la librairie : DHT11
/*
Ce met en œuvre un capteur de température et humidité DHT11 (ou DHT22)
les valeurs mesuréres sont affichées dans le moniteur série
*/
#include "DHT.h" // inclusion de la librairie DHT
#define DHTPIN 2 // la borne data du capteur est branchée sur la broche 2
#define DHTTYPE DHT11 //#define DHTTYPE DHT22 (pour un capteur DHT22)
DHT dht(DHTPIN, DHTTYPE); // on indique la broche et le type de capteur
float h = 0; // initialisation de la variable h (virgule flottante)
float t = 0; // initialisation de la variable h (virgule flottante)
void setup() // setup est déroulé une seule fois après la remise à zéro
{
Serial.begin(115200); // initialisation de la liaison série à 115200 bauds
dht.begin(); // initialisation du capteur
}
void loop() // loop est déroulé indéfiniment
{
h = dht.readHumidity(); // lecture de la valeur de l'humidité
t = dht.readTemperature(); // lecture de la valeur de la température
if (isnan(t) || isnan(h)) Serial.println( "Lecture impossible !"); // test erreur
else
{
Serial.print("Humidite :"); // affichage message
Serial.print(h); // affichage valeur humidité
Serial.print(" %\t");
Serial.print("Temperature :");// affichage message
Serial.print(t); // affichage valeur température
Serial.println(" *C");
}
delay(1000); // attente 1 seconde
}