Les capteurs
1. Le module bouton poussoir : Button
Nous donnons ci-dessous un code exemple de l’utilisation du module Button, le comportement est le suivant : L’appui sur le bouton poussoir relié sur la pin numérique 3, provoque l’allumage de la led reliée sur la pin numérique 2. Le relâchement provoque son extinction.
const int led=2; //Déclaration d'une constante de type int et de nom "led", contenant 2 la pin où la led est reliée
const int bp=3; //Déclaration d'une constante de type int et de nom "bp", contenant 3 la pin où le bouton poussoir est relié
boolean etat=false; //Déclaration d'une variable "etat" de type booléen initialisée à false (soit niveau logique 0)
void setup() //Initialisation
{
pinMode(led,OUTPUT); //Mise en sortie de la pin numérique 2 pour la led
pinMode(bp,INPUT); //Mise en entrée de la pin numérique 3 pour le bouton poussoir
}
void loop() //Programme principal
{
etat=digitalRead(bp); //Lecture de la valeur de la pin 3 : bouton appuyé -> etat=1 bouton relaché -> etat=0
digitalWrite(led,etat); //La led s'allume ou s'éteint suivant la valeur de "etat"
}
2. Le module capteur d’inclinaison : Tilt Switch
Nous donnons ci-dessous un code exemple de l’utilisation du module Tilt Switch, le comportement est le suivant : L’inclinaison du capteur relié sur la pin numérique 3, provoque l’allumage de la led reliée sur la pin numérique 2. Le fait de mettre le capteur à l’horizontale provoque son extinction.
const int led=2; //Déclaration d'une constante de type int et de nom "led", contenant 2 la pin où la led est reliée
const int tilt=3; //Déclaration d'une constante de type int et de nom "bp", contenant 3 la pin où le bouton poussoir est relié
boolean etat=false; //Déclaration d'une variable "etat" de type booléen initialisée à false (soit niveau logique 0)
void setup() //Initialisation
{
pinMode(led,OUTPUT); //Mise en sortie de la pin numérique 2 pour la led
pinMode(tilt,INPUT); //Mise en entrée de la pin numérique 3 pour le tilt switch
}
void loop() //Programme principal
{
etat=digitalRead(tilt); //Lecture de la valeur de la pin 3 : tilt incliné -> etat=1 tilt horizontal -> etat=0
digitalWrite(led,etat); //La led s'allume ou s'éteint suivant la valeur de "etat"
}
3. Le module potentiomètre : Rotary Sensor
Nous donnons ci-dessous un code exemple de l’utilisation du module Rotary Sensor, le comportement est le suivant : Le module potentiomètre est relié à la pin analogique 0, le fait de faire tourner celui-ci fait varier la tension $V_{a0}$ entre 0 et 5V sur cette pin. Nous utilisons le CAN pour lire cette tension et la transformer en une information numérique N comprise entre 0 et 1023 (sur 10 bits), nous “re-bornons” cette information à l’aide de la fonction Arduino map()
entre 0 et 255 (sur 8 bits) et l’utilisons avec le PWM sur la pin numérique 2 pour faire varier la luminosité du module led.
const int led=2; //Déclaration d'une constante de type int et de nom "led", contenant 2 la pin numérique où la led est reliée
const int rotary_sensor=0; //Déclaration d'une constante de type int et de nom "rotary_sensor", contenant 0 la pin analogique où le potentiomètre est relié
int N=0; //Déclaration d'une variable entière appelée N est initialisée à 0 pour stocker la sortie du CAN
void setup() //Initialisation
{
pinMode(led,OUTPUT); //Mise en sortie de la pin numérique 2 pour la led
}
void loop() //Programme principal
{
N=analogRead(rotary_sensor); //Conversion Analogique -> Numérique de la tension Va0 -> N
N=map(N,0,1023,0,255); //Rebornage de 0<N<1023 en 0<N<255
analogWrite(led,N); //La luminosité de la led varie en fonction de N et donc de Va0
}
4. Le module LDR : Light Sensor
Nous donnons ci-dessous un code exemple de l’utilisation du module Light Sensor, le comportement est le suivant : Le module LDR est relié à la pin analogique 0, le fait de faire varier la luminosité (cacher ou dévoiler le capteur) fait varier la tension $V_{a0}$ entre 0 et 5V sur cette pin. Nous utilisons le CAN pour lire cette tension et la transformer en une information numérique N comprise entre 0 et 1023 (sur 10 bits), nous “re-bornons” cette information à l’aide de la fonction Arduino map()
entre 0 et 255 (sur 8 bits) et l’utilisons avec le PWM sur la pin numérique 2 pour faire varier la luminosité du module led. Cette fois-ci une forte luminosité entrainera une extinction de la led et une faible luminosité un éclairement maximal.
const int led=2; //Déclaration d'une constante de type int et de nom "led", contenant 2 la pin numérique où la led est reliée
const int light_sensor=0; //Déclaration d'une constante de type int et de nom "light_sensor", contenant 0 la pin analogique où la LDR est reliée
int N=0; //Déclaration d'une variable entière appelée N est initialisée à 0 pour stocker la sortie du CAN
void setup() //Initialisation
{
pinMode(led,OUTPUT); //Mise en sortie de la pin numérique 2 pour la led
}
void loop() //Programme principal
{
N=analogRead(light_sensor); //Conversion Analogique -> Numérique de la tension Va0 -> N
N=map(N,0,1023,255,0); //Rebornage de 0<N<1023 en 0<N<255 avec inversion pour 0 ->255 pour 1023->0
analogWrite(led,N); //La luminosité de la led varie en fonction de N et donc de Va0
}
map()
.5. Le module température : Temperature Sensor
Nous donnons ci-dessous un code exemple de l’utilisation du module Temperature Sensor, le comportement est le suivant : Le module température est relié à la pin analogique 0, le fait de faire monter la température au dessus de 30°C allume le module led relié sur la pin numérique 2. Faire descendre la température en dessous provoque l’extinction de la led.
#include <math.h> //Ajout de la bibliothèque C/C++ math.h pour utiliser la fonction logarithme décimal : log()
//Constantes prises sur la documentation du Wiki de Seeed Studio
const int B=4275; //B valeur de la LDR en Ohms
const int R0 = 100000; //R0 = 100k
const int led=2; //Déclaration d'une constante de type int et de nom "led", contenant 2 la pin numérique où la led est reliée
const int temperature_sensor=0; //Déclaration d'une constante de type int et de nom "temperature_sensor", contenant 0 la pin analogique où le capteur de température est relié
int N=0; //Déclaration d'une variable entière appelée N est initialisée à 0 pour stocker la sortie du CAN
float R=0; //Déclaration d'une variable flottante appelée R est initialisée à 0 pour calculer la température
float temperature=0; //Déclaration d'une variable flottante appelée R est initialisée à 0 pour stocker la valeur de la température
void setup() //Initialisation
{
pinMode(led,OUTPUT); //Mise en sortie de la pin numérique 2 pour la led
}
void loop() //Programme principal
{
N=analogRead(temperature_sensor); //Conversion Analogique -> Numérique de la tension Va0 -> N
//Calcul de la temperature suivant la doc du Wiki de Seeed Studio
R=1023.0/((float)N)-1.0;
R=100000.0*R;
temperature=1.0/(log(R/100000.0)/B+1/298.15)-273.15; //calcul de la temperature suivant la doc
if(temperature>30)
{
digitalWrite(led,HIGH); //Allumage de la led si temperature > 30
}
else
{
digitalWrite(led,LOW); //Extinction de la led si temperature < 30
}
}