ESP32 - Potentiomètre

Ce tutoriel vous explique comment utiliser l'ESP32 avec le potentiomètre. En détail, nous allons apprendre :

Préparation du matériel

1×ESP-WROOM-32 Dev Module
1×USB Cable Type-C
1×Potentiometer
1×Breadboard
1×Jumper Wires
1×(Optional) DC Power Jack
1×(Recommended) ESP32 Screw Terminal Adapter

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 (également connu sous le nom de capteur angulaire rotatif) est utilisé pour modifier les réglages (par exemple le volume du haut-parleur, la température de la pièce, la luminosité de la lampe...)

Brochage du potentiomètre

Brochage du potentiomètre

Un potentiomètre a généralement 3 broches :

  • Broche VCC : connectez cette broche à VCC (5V ou 3,3V)
  • Broche GND : connectez cette broche à GND (0V)
  • Broche de sortie : renvoie la tension vers la broche d'entrée de l'ESP32.
Brochage du potentiomètre

※ NOTE THAT:

La broche GND et la broche VCC sont interchangeables.

Fonctionnement du potentiomètre

L'arbre du potentiomètre peut être tourné de 0° (le plus proche de la broche GND) jusqu'à un angle (le plus proche de la broche VCC), appelé ANGLE_MAX.

La tension dans la broche de sortie est directement proportionnelle à la position angulaire de l'arbre, variant de 0 à VCC. Le tableau ci-dessous montre la relation entre l'angle et la tension sur la broche de sortie :

Angle Voltage
0v
ANGLE_MAX°VCC
angle°angle° × VCC / ANGLE_MAX°

※ NOTE THAT:

La valeur ANGLE_MAX dépend des fabricants.

Comment fonctionne un potentiomètre.

ESP32 - Potentiomètre rotatif

La broche d'entrée analogique de l'ESP32 convertit la tension (entre 0v et 3,3V) en valeurs entières (entre 0 et 4095), appelée valeur ADC ou valeur analogique.

Nous pouvons connecter la broche de sortie du potentiomètre à une broche d'entrée analogique de l'ESP32, puis lire la valeur analogique à partir de cette broche.

La valeur analogique de la broche d'entrée peut être recalibrée en une autre valeur. Voyons les cas d'utilisation :

  • Convertissez la valeur analogique en angle du potentiomètre.
  • Convertissez la valeur analogique en tension du potentiomètre.
  • Convertissez la valeur analogique en valeur de réglage (par exemple, le volume du haut-parleur, la température de la pièce, la luminosité de la lampe...).

Redimensionner la plage

FROM TO
Anglerotated by userANGLE_MAX°
Voltagefrom potentiometer's pin 0V3.3V
ADC valueread by ESP32 04095
Setting valueconverted by ESP32 VALUE_MINVALUE_MAX

Schéma de câblage entre le potentiomètre et l'ESP32

Schéma de câblage du potentiomètre ESP32

This image is created using Fritzing. Click to enlarge image

Si vous ne savez pas comment alimenter l'ESP32 et d'autres composants, vous pouvez trouver des conseils dans le tutoriel suivant : Comment alimenter l'ESP32.

Comment programmer 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(36); // GPIO36
  • Redimensionnez selon l'angle du potentiomètre en utilisant la fonction map().
angle = map(analogValue, 0, 4095, 0, ANGLE_MAX);
  • Mettre à l'échelle par rapport à la tension du potentiomètre :
voltage = map(analogValue, 0, 4095, 0, 3.3);
  • Redimensionner à la valeur contrôlable (par exemple, volume de la stéréo, luminosité, vitesse du moteur à courant continu...).
value = map(analogValue, 0, 4095, VALUE_MIN, VALUE_MAX);
  • Par exemple, recalibrer à la luminosité des LED. Comme mentionné dans ce tutoriel, la luminosité des 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é des LED (de ÉTEINT à la plus brillante) comme suit :
brightness = map(analogValue, 0, 4095, 0, 255);

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

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

※ NOTE THAT:

La fonction map() ne peut être utilisée que pour recalibrer la valeur analogique en valeur 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 ESP32

/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 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/esp32/esp32-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 GPIO36 : int analogValue = analogRead(36); // Remise à l'échelle à la tension du potentiomètre (de 0V à 3.3V) : float voltage = floatMap(analogValue, 0, 4095, 0, 3.3); // imprimer la valeur lue : Serial.print("Analog: "); Serial.print(analogValue); Serial.print(", Voltage: "); Serial.println(voltage); delay(1000); }

Étapes rapides

Téléversement de code Arduino IDE
  • Ouvrez le moniteur série sur Arduino IDE
Comment ouvrir le moniteur série sur Arduino IDE
  • Tournez le potentiomètre
  • Regardez le résultat sur le moniteur série. Cela ressemble à ce qui suit :
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: 4095, Voltage: 3.30 Analog: 4095, Voltage: 3.30
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Vidéo

※ 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!