ESP8266 - Potentiomètre

Ce tutoriel vous explique comment utiliser l'ESP8266 avec un potentiomètre, également connu sous les noms de pot, trimmer, résistance variable, rhéostat ou capteur d'angle rotatif. En détail, nous apprendrons :

Préparation du matériel

1×ESP8266 NodeMCU
1×Micro USB Cable
1×Potentiometer
1×Breadboard
1×Jumper Wires
1×(Optional) 5V Power Adapter for ESP8266
1×(Optional) ESP8266 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

Un potentiomètre rotatif est également connu sous le nom de potentiomètre, trimmer, résistance variable, rhéostat ou capteur d'angle rotatif. Il est utilisé pour ajuster manuellement la valeur de quelque chose. Les exemples incluent le volume d'une stéréo, la luminosité d'une lampe et le niveau de zoom d'un oscilloscope.

Brochage de potentiomètre

Le brochage du potentiomètre

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

  • La broche GND doit être connectée à la terre (0V).
  • La broche VCC doit être connectée à la source de tension (5V ou 3,3V).
  • La broche de sortie envoie la tension à la broche d'entrée de l'Arduino.
Brochage du potentiomètre

※ NOTE THAT:

Les broches GND et VCC peuvent être inversées.

Comment ça fonctionne

La rotation de l'axe du potentiomètre peut aller de 0°, qui est le plus proche de GND, à un angle maximal, qui est le plus proche de la broche VCC, appelé ANGLE_MAX.

※ NOTE THAT:

La valeur de ANGLE_MAX est déterminée par le fabricant. En général, nous n'avons pas besoin de considérer cette valeur à moins que nous ne calculions un angle rotatif (voir la section des cas d'utilisation).

Comment fonctionne un potentiomètre

Le principe de fonctionnement :

  • Un utilisateur tourne l'arbre du potentiomètre
  • ⇒ L'angle du potentiomètre est modifié
  • ⇒ La résistance du potentiomètre est modifiée
  • ⇒ La tension dans la broche de sortie du potentiomètre est modifiée
  • ⇒ La valeur analogique lue par l'ESP8266 est modifiée

ESP8266 - Potentiomètre rotatif

Certaines broches de l'ESP8266 sont capables de fonctionner comme entrée analogique. Ces broches d'entrée analogique convertissent la tension (allant de 0V à VCC) en valeurs entières (de 0 à 1023), appelées valeur ADC ou valeur analogique.

Nous pouvons connecter une broche de sortie du potentiomètre à une broche d'entrée analogique. Cela nous permet de lire la valeur analogique de la broche et de la convertir en une valeur significative.

La valeur que l'ESP8266 reçoit n'est ni un angle ni une tension ; il s'agit plutôt d'une valeur entière allant de 0 à 1023.

Une fois que nous avons obtenu la valeur entière de la broche d'entrée analogique, nous pouvons recalibrer cette valeur à une autre. Considérons les applications.

Cas d'utilisation

  • Recaler à l'angle du potentiomètre.
  • Recaler à la tension du potentiomètre.
  • Recaler à une valeur contrôlable, telle que le volume d'une stéréo, la luminosité ou la vitesse d'un moteur à courant continu - ceci est le cas d'utilisation le plus courant.

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

Schéma de câblage du potentiomètre ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Voir plus dans l'agencement des broches de l'ESP8266 et comment alimenter l'ESP8266 et d'autres composants.

Comment programmer pour un potentiomètre

  • Accédez à la broche de sortie du potentiomètre avec analogRead() et lisez la valeur depuis la broche d'entrée.
analog_value = analogRead(A0);
  • Utilisez la fonction map() pour ajuster l'angle du potentiomètre.
angle = map(analog_value, 0, 1023, 0, ANGLE_MAX);
  • Ajustez la tension au niveau du potentiomètre.
voltage = map(analog_value, 0, 1023, 0, VCC);
  • Redimensionnez la valeur à quelque chose qui peut être contrôlé, comme le volume d'un stéréo, la luminosité ou la vitesse d'un moteur à courant continu.
value = map(analog_value, 0, 1023, VALUE_MIN, VALUE_MAX);
  • Par exemple, nous pouvons ajuster la luminosité d'une LED en la redimensionnant. Comme indiqué dans le [], la luminosité de la LED peut être régulée avec une valeur PWM allant de 0 (complètement éteinte) à 255 (totalement allumée). Ainsi, nous pouvons mapper la valeur analogique à la luminosité de la LED (de éteint à la plus brillante) de cette manière :
brightness = map(analog_value, 0, 1023, 0, 255);

Si vous souhaitez régler la LED d'une veilleuse tamisée à sa luminosité maximale,

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

※ NOTE THAT:

La fonction map() est limitée à la mise à l'échelle d'une valeur analogique vers le type int ou long. Si la valeur contrôlable est du type float, la fonction floatMap() doit être utilisée à la place de map().

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 ESP8266

/* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU 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/esp8266/esp8266-potentiometer */ #define POTENTIOMETER_PIN A0 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; } // The setup function runs once on reset or power-up void setup() { // Initialize the Serial to communicate with the Serial Monitor. Serial.begin(9600); } // The loop function repeats indefinitely. void loop() { // read the input on analog pin: int analog_value = analogRead(POTENTIOMETER_PIN); // Rescale to potentiometer's voltage (from 0V to 5V): float voltage = floatMap(analog_value, 0, 1023, 0, 5); // print out the value you read: Serial.print("Analog: "); Serial.print(analog_value); Serial.print(", Voltage: "); Serial.println(voltage); delay(1000); }

Étapes rapides

Pour commencer avec l'ESP8266 sur Arduino IDE, suivez ces étapes :

  • Consultez le tutoriel comment configurer l'environnement pour ESP8266 sur Arduino IDE si c'est la première fois que vous utilisez un ESP8266.
  • Connectez les composants comme indiqué dans le schéma.
  • Connectez la carte ESP8266 à votre ordinateur à l'aide d'un câble USB.
  • Ouvrez Arduino IDE sur votre ordinateur.
  • Choisissez la bonne carte ESP8266, par exemple (ex. NodeMCU 1.0 (Module ESP-12E)), et son port COM respectif.
  • Copiez le code et ouvrez-le dans Arduino IDE.
  • Une fois ouvert, appuyez sur le bouton Upload pour transférer le code vers l'ESP8266.
Téléversement de code Arduino IDE
  • Ouvrez le moniteur série.
  • Tournez le potentiomètre.
  • Vérifiez 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

Lancez-vous un défi

Utilisez le potentiomètre pour accomplir l'une des tâches suivantes :

Connaissances supplémentaires

  • Les broches GND et VCC peuvent être inversées sans convention spécifique. Tout ce dont vous devez vous soucier est que la valeur de tension sur la broche de sortie sera inversée lorsque ces broches sont échangées.

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!