Arduino - Potentiomètre déclenche moteur servo
Dans un tutoriel précédent, nous avons appris à faire tourner un moteur servo en fonction de la valeur de sortie du potentiomètre. Dans ce tutoriel, nous allons apprendre comment :
- Si la valeur analogique du potentiomètre est supérieure à un seuil, faire tourner le servo-moteur à 90 degrés.
- Si la valeur analogique du potentiomètre est inférieure à un seuil, faire revenir le servo-moteur à 0 degré.
- Si la tension de sortie du potentiomètre est supérieure à un seuil, faire tourner le servo-moteur à 90 degrés.
- Si la tension de sortie du potentiomètre est inférieure à un seuil, faire revenir le servo-moteur à 0 degré.
Préparation du matériel
Or you can buy the following sensor kits:
1 | × | DIYables Sensor Kit (30 sensors/displays) | |
1 | × | DIYables Sensor Kit (18 sensors/displays) |
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.
À propos du servomoteur et du potentiomètre
Si vous ne connaissez pas le moteur servo et le potentiomètre (brochage, fonctionnement, programmation...), renseignez-vous à leur sujet dans les tutoriels suivants :
Diagramme de câblage
This image is created using Fritzing. Click to enlarge image
Code Arduino - Seuil Analogique
/*
* Ce code Arduino a été développé par newbiely.fr
* Ce code Arduino est mis à disposition du public sans aucune restriction.
* Pour des instructions complètes et des schémas de câblage, veuillez visiter:
* https://newbiely.fr/tutorials/arduino/arduino-potentiometer-triggers-servo-motor
*/
#include <Servo.h>
// constants won't change
const int POTENTIOMETER_PIN = A0; // Arduino pin connected to Potentiometer pin
const int SERVO_PIN = 9; // Arduino pin connected to Servo Motor's pin
const int ANALOG_THRESHOLD = 500;
Servo servo; // create servo object to control a servo
void setup() {
servo.attach(SERVO_PIN); // attaches the servo on pin 9 to the servo object
servo.write(0);
}
void loop() {
int analogValue = analogRead(POTENTIOMETER_PIN); // read the input on analog pin
if(analogValue > ANALOG_THRESHOLD)
servo.write(90); // rotate servo motor to 90 degree
else
servo.write(0); // rotate servo motor to 0 degree
}
Étapes rapides
- Connectez l'Arduino au PC via un câble USB
- Ouvrez l'IDE Arduino, sélectionnez la bonne carte et le bon port
- Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino
- Cliquez sur le bouton Upload de l'IDE Arduino pour téléverser le code sur l'Arduino
- Tournez le potentiomètre
- Observez le changement du moteur servo
Code Arduino - Seuil de Tension
La valeur analogique du potentiomètre est convertie en valeur de tension, puis comparée à un seuil de tension pour déclencher le moteur servo.
/*
* Ce code Arduino a été développé par newbiely.fr
* Ce code Arduino est mis à disposition du public sans aucune restriction.
* Pour des instructions complètes et des schémas de câblage, veuillez visiter:
* https://newbiely.fr/tutorials/arduino/arduino-potentiometer-triggers-servo-motor
*/
#include <Servo.h>
// constants won't change
const int POTENTIOMETER_PIN = A0; // Arduino pin connected to Potentiometer pin
const int SERVO_PIN = 9; // Arduino pin connected to Servo Motor's pin
const float VOLTAGE_THRESHOLD = 2.5; // Voltages
Servo servo; // create servo object to control a servo
void setup() {
servo.attach(SERVO_PIN); // attaches the servo on pin 9 to the servo object
servo.write(0);
}
void loop() {
int analogValue = analogRead(POTENTIOMETER_PIN); // read the input on analog pin
float voltage = floatMap(analogValue, 0, 1023, 0, 5); // Rescale to potentiometer's voltage
if(voltage > VOLTAGE_THRESHOLD)
servo.write(90); // rotate servo motor to 90 degree
else
servo.write(0); // rotate servo motor to 0 degree
}
float floatMap(float x, float in_min, float in_max, float out_min, float out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}