Introduction 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 : Il permet de mesurer le mouvement mécanique, le débit d’air, le débit d’eau et même les vibrations.Il peut être utilisé comme capteur de mouvement ou comme interrupteur très résistant et très fiable. Sommaire masquer 1 Introduction 1.1 Comment fonctionne le capteur ? 1.2 Attention ! 1.3 Les broches du capteur 2 Afficher la valeur sur le moniteur série 3 Allumer une led en fonction de l'inclinaison 4 Contrôler un servomoteur avec le capteur Comment fonctionne le capteur ? 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). Attention ! Il ne faut toutefois pas trop plier la bande afin de ne pas la casser. Les broches du capteur Voici les broches du capteur de flexion : GND : A brancher sur la masse de la carte ArduinoVcc : A brancher sur la carte arduino avec une résistance de 10k ohms. Afficher la valeur sur le moniteur série 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 : Allumer une led en fonction de l'inclinaison 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 } Contrôler un servomoteur avec le capteur 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 }