Un capteur d’inclinaion permet de mesurer l’inclinaison de votre circuit ou système embarqué. Ce capteur peut être très utile dans un robot ou un avion par exemple.
Le capteur d’inclinaison fonctionne sur tous les axes. En effet, il suffit d’incliner le capteur dans l’axe que vous souhaitez et si le capteur sort de l’axe, il vous previendra.
Le capteur d’inclinaison peut aussi détecter les vibrations. En effet, celle-ci peuvent faire bouger la bille et donc se faire détecter par le capteur.
Le capteur d’inclinaison est une petite boite qui contient une bille. La bille est libre de tout mouvement.
Quand la bille est en bas de la boite, le capteur est donc à la verticale et indique 0.
Quand la bille se situe de l’autre côté de la boite, cela veut dire que le capteur est penché et donc indique 1.
Le capteur d’inclinaison n’est pas très précis, il permet juste de dire si votre circuit est penché. Il ne vous indiquera pas de combien de degré il est penché par exemple.Si vous souhaitez un capteur qui vous donne plus de précision, on vous conseille un gyroscope par exemple.
On va voir comment afficher les valeurs du capteur d’inclinaison sur le moniteur série. Si la valeur vaut 1, alors c’est que le capteur est incliné, sinon cela vaut 0.
int inclinaison_cap = 3;// Broche du capteur
void setup(){
pinMode(inclinaison_cap, INPUT); // On initialise le capteur en entré
Serial.begin(9600); // On initialise le moniteur série
}
void loop(){
int valeur_cap = digitalRead(3);// On récupère la valeur du capteur
Serial.print("Valeur du capteur d'inclinaison :");
Serial.println(valeur_cap);
delay(100); // On attends 100 millisecondes entre deux valeurs
}
Voici ce que l’on obtient sur le moniteur série :
On va maintenant voir comment allumer une LED en fonction de l’inclinaison du capteur. La LED s’allume si le capteur est incliné, sinon elle est éteinte.
const int inclinaison_cap = 2;// le capteur d'inclinaison
const int led = 13;// La broche de la led
int Etat_bouton = 0;// variable pour lire l'état du capteur
void setup() {
pinMode(led, OUTPUT);// On initialise la led en sortie
pinMode(inclinaison_cap, INPUT); // On initialise le capteur comme une entrée
}
void loop() {
Etat_bouton = digitalRead(inclinaison_cap);// On lit la valeur du capteur
if (Etat_bouton == HIGH) { // si la surface est incliné
digitalWrite(led, HIGH); // On allume la led
} else {
digitalWrite(led, LOW); // on éteint la led
}
}
On va maintenant voir comment adapter la position du servomoteur en fonction du capteur d’inclinaison.
La position du servomoteur si le capteur d’inclinaison est pas incliné est de 0°, sinon celui-ci est positionné à 180°.
#include <Servo.h> // Librairie du servomoteur
int inclinaison_cap = 2; // Broche du capteur
Servo Servomoteur; // Le servomoteur
void setup(){
pinMode(inclinaison_cap, INPUT); // On initialise le capteur en entrée
Servomoteur.attach(13); // On initalise le servomoteur sur la borne 13.
}
void loop() {
int lecture_valeur = digitalRead(inclinaison_cap);// On lit la valeur du capteur
if(lecture_valeur) { //Si le capteur est pas incliné
Servomoteur.write(0); // On positionne le servomoteur a 0°
}else{ // si il est incliné
Servomoteur.write(180);//On positionne le servomoteur a 180°
}
}