Arduino - Potentiomètre

Dans ce tutoriel, nous allons apprendre :

Préparation du matériel

1×Arduino Uno
1×USB 2.0 cable type A/B
1×Potentiometer
1×Breadboard
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno

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 potentiomètre

Le potentiomètre rotatif (également appelé capteur d'angle rotatif) est utilisé pour ajuster manuellement la valeur de quelque chose (par exemple, le volume de la stéréo, la luminosité de la lampe, le niveau de zoom de l'oscilloscope...).

Brochage du potentiomètre

Brochage

Le potentiomètre a généralement trois broches :

  • Broche GND : doit être connectée à GND (0V)
  • Broche VCC : doit être connectée à VCC (5V ou 3,3V)
  • Broche de sortie : délivre la tension à la broche d'entrée de l'Arduino.
Schéma de brochage du potentiomètre

※ NOTE THAT:

La broche GND et la broche VCC sont interchangeables.

Comment ça fonctionne

L'axe du potentiomètre est rotatif de 0° (le plus proche de GND) à un angle limite supérieur (le plus proche de la broche VCC), appelé ANGLE_MAX.

La tension à la broche de sortie varie de la tension de GND à celle de VCC. La tension de sortie est directement proportionnelle à l'angle de rotation de l'arbre.

  • Si l'angle est de 0°, la tension de la broche de sortie est de 0v
  • Si l'angle est ANGLE_MAX, la tension de la broche de sortie est la tension de VCC
  • Si l'angle est compris entre 0° et ANGLE_MAX, tension_de_sortie = angle × VCC / ANGLE_MAX

※ NOTE THAT:

La valeur de ANGLE_MAX dépend des fabricants. En pratique, nous ne nous préoccupons généralement pas de la valeur de ANGLE_MAX, sauf lorsque nous devons calculer l'angle de rotation (voir la partie cas d'utilisation).

Comment fonctionne un potentiomètre

Arduino - Potentiomètre rotatif

Les broches A0 à A5 de l'Arduino peuvent fonctionner comme entrée analogique. La broche d'entrée analogique convertit la tension (entre 0v et VCC) en valeurs entières (entre 0 et 1023), appelées valeur ADC ou valeur analogique.

En connectant une broche de sortie du potentiomètre à une broche d'entrée analogique, nous pouvons lire la valeur analogique de la broche, puis la convertir en une valeur significative.

La valeur obtenue par Arduino n'est NI un angle, NI une tension. C'est une valeur entière allant de 0 à 1023.

Après avoir obtenu la valeur entière de la broche d'entrée analogique, nous recalibrons cette valeur en une autre valeur. Examinons les cas d'utilisation.

#### Cas d'utilisation

  • Rééchelonner à l'angle du potentiomètre.
  • Rééchelonner à la tension du potentiomètre :
  • Rééchelonner à la valeur contrôlable (par exemple volume de la stéréo, luminosité, vitesse du moteur à courant continu...). C'est le cas le plus couramment utilisé.

Rééchelonner la Plage

FROM TO
Anglerotated by userANGLE_MAX
Voltagefrom potentiometer's pin 0VVCC
ADC valueread by Arduino 01023
Other valueconverted by Arduino VALUE_MINVALUE_MAX

Diagramme de câblage

Diagramme de câblage du potentiomètre Arduino

This image is created using Fritzing. Click to enlarge image

Comment programmer pour un potentiomètre

  • Lisez la valeur à partir d'une broche d'entrée, qui est connectée à la broche de sortie du potentiomètre en utilisant la fonction analogRead().
analogValue = analogRead(A0);
  • Mettez à l'échelle selon l'angle du potentiomètre en utilisant la fonction map().
angle = map(analogValue, 0, 1023, 0, ANGLE_MAX);
  • Réajuster à la tension du potentiomètre :
voltage = map(analogValue, 0, 1023, 0, VCC);
  • Redimensionner à la valeur contrôlable (par exemple, volume de la stéréo, luminosité, vitesse du moteur à courant continu... )
value = map(analogValue, 0, 1023, VALUE_MIN, VALUE_MAX);
  • Par exemple, redimensionner à la luminosité de la LED. Comme mentionné dans ce tutoriel, la luminosité de la LED peut être contrôlée en utilisant la valeur PWM de 0 (toujours ÉTEINT) à 255 (toujours ALLUMÉ). Par conséquent, nous pouvons mapper la valeur analogique à la luminosité de la LED (de ÉTEINT à la plus brillante) comme suit :
brightness = map(analogValue, 0, 1023, 0, 255);

Si vous voulez atténuer la LED de la veilleuse à la plus brillante,

nightlight = 100; // en fonction de la luminosité souhaitée brightness = map(analogValue, 0, 1023, nightlight , 255);

※ NOTE THAT:

La fonction map() ne peut être utilisée que pour redimensionner la valeur analogique aux valeurs de type int ou long. Si la valeur contrôlable est de type float, vous devez utiliser la fonction floatMap() au lieu de la fonction map().

fonction floatMap() :

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; }

Code Arduino

/* * 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 */ 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; } // la routine de configuration s'exécute une fois lorsque vous appuyez sur réinitialiser: void setup() { // initialiser la communication série à 9600 bits par seconde: Serial.begin(9600); } // la routine de boucle s'exécute encore et encore indéfiniment: void loop() { // lire l'entrée sur la broche analogique A0: int analogValue = analogRead(A0); // Recaler à la tension du potentiomètre (de 0V à 5V): float voltage = floatMap(analogValue, 0, 1023, 0, 5); // imprimer la valeur que vous avez lue: Serial.print("Analog: "); Serial.print(analogValue); Serial.print(", Voltage: "); Serial.println(voltage); delay(1000); }

Étapes rapides

  • 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 Arduino.
Téléversement de code dans l'IDE Arduino
  • Ouvrez le moniteur série
  • Tournez le potentiomètre
  • Observez le résultat sur le moniteur série
COM6
Send
Analog: 0, Voltage: 0.00 Analog: 0, Voltage: 0.00 Analog: 126, Voltage: 0.62 Analog: 281, Voltage: 1.37 Analog: 517, Voltage: 2.53 Analog: 754, Voltage: 3.69 Analog: 906, Voltage: 4.43 Analog: 1023, Voltage: 5.00 Analog: 1023, Voltage: 5.00
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Vidéo

Défiez-vous

Utilisez le potentiomètre pour réaliser l'un des projets suivants :

Connaissances supplémentaires

  • La broche GND et la broche VCC sont interchangeables. Il n'y a aucune convention concernant ces deux broches. Si vous sélectionnez une broche comme broche GND, l'autre est la broche VCC. Il y a seulement une chose à laquelle vous devez faire attention. La valeur de la tension à la broche de sortie est inversée lorsque nous échangeons ces broches.

Références de fonction

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!