Le capteur de flexion est une bande de 7.3 cm de longueur dont la résistance varie lorsqu’on exerce une flexion dessus. Il peut se plier de 0 degrés jusqu’à 180 degrés.
Les capteurs Flex sont disponibles en deux tailles: une de 2,2 pouces (5,5 cm) de long et une autre de 4,5 pouces ( 11,4 cm) de long .
Il peut-être utile dans plusieurs domaines :
Un côté du capteur est imprimé avec une encre polymère qui contient des particules conductrices. Lorsque le capteur est droit, les particules confèrent à l’encre une résistance d’environ 30k Ohms.
Lorsque le capteur est plié à l’écart de l’encre, les particules conductrices s’éloignent davantage, augmentant cette résistance (à environ 50k-70K Ohms lorsque le capteur est plié à 90 et jusqu’à 125K Ohms à 180 degrés).
Voici les broches du capteur de flexion :
On va maintenant voir comment afficher la flexion du capteur sur le moniteur série.
const int flexPin = A2; //On déclare la pin du capteur de flexion
int valeur; //Variable pour sauvegarder la valeur lue par le capteur
void setup(){
Serial.begin(9600);// On initialize le moniteur série
}
void loop(){
valeur = analogRead(flexPin); //On lit et sauvegarde la valeur lue par le capteur de flexion
valeur = map(valeur, 700, 900, 0, 180);// On convertit les valeurs pour qu'elles correspondent à celles de la led
Serial.print("Le capteur est tordu a:"); // On affiche sur le moniteur série la valeur
Serial.print(valeur);
Serial.println(" degres");
delay(100); //Attente entre deux mesures
}
Voici ce que l’on obtient sur le moniteur série :
Voici un circuit pour faire varier l’intensité de la led en fonction de la flexion du capteur. Quand le capteur est à 0°, la led est éteinte, mais plus le capteur de flexion s’approche des 180° plus la led brille.
const int ledPin = 9; //On déclare la pin de la led
const int flexPin = A2; //On déclare la pin du capteur de flexion
int valeur; //Variable pour sauvegarder la valeur lue par le capteur
void setup(){
pinMode(ledPin, OUTPUT); //On définit la led comme une sortie
}
void loop(){
valeur = analogRead(flexPin); //On lit et sauvegarde la valeur lue par le capteur de flexion
valeur = map(valeur, 700, 900, 0, 255);// On convertit les valeurs pour qu'elles correspondent à celles de la led
analogWrite(ledPin, valeur); //On assigne la valeur à la led
delay(100); //Attente entre deux mesures
}
Le dernier circuit que l’on vous propose permet d’adapter la rotation d’un servomoteur avec un capteur de flexion. En effet il est très possible que ces deux composants soitent utilisés ensemble dans votre projet pour par exemple garder l’équilibre d’un robot en adaptant la position du servomoteur si le capteur est plus ou moins tordu.
Ici le servomoteur est à la position 0° quand le capteur n’est pas tordu, et 180° quand le capteur est complètement tordu.
#include <Servo.h> // la bibliothèque du servmoteur
Servo servomoteur; // le servomoteur
const int capteur_flex=A0;// Broche du capteur de flexion
int valeur_capteur = 0; // variable pour récupérer la valeur du capteur
void setup(){
pinMode(capteur_flex, INPUT); //On déclare le capteur comme une entrée
servomoteur.attach(12, 500, 2500);// On attache le servomoteur à la pin 12 de l'arduino
}
void loop(){
valeur_capteur = analogRead(capteur_flex);// On lit et stocke la valeur du capteur
valeur_capteur = map(valeur_capteur, 700,900, 0, 180); // On modifie cette valeur poru qu'elle doit entre 0° et 180°.
servomoteur.write(valeur_capteur); // On assigne cette valeur au servomoteur
delay(10); // pause de 10 milliseconde entre chaque lecture de valeur
}