Code de recherche

Leçon 14/31-4 : Exemple 1 de la fonction map() en programmation Arduino

Leçon 14/31-4 : Exemple 1 de la fonction map() en programmation Arduino

Ce tutoriel fait partie d'une série sur la programmation Arduino et se concentre sur l'utilisation pratique de la fonction map(). Dans cette leçon, vous apprendrez à convertir une valeur en pourcentage (0–100) en une valeur PWM (modulation de largeur d'impulsion) (0–255) pour contrôler la luminosité d'une LED. Au lieu de calculer manuellement que 60 % équivaut à 153, la fonction map() gère la conversion linéaire pour vous, rendant votre code plus propre et plus intuitif.

Cette technique est essentielle pour de nombreuses applications réelles où vous devez traduire des lectures de capteurs ou des entrées utilisateur dans différentes plages. Par exemple, vous pourriez l'utiliser pour :

  • Contrôler la vitesse d'un moteur à courant continu en fonction d'une lecture de potentiomètre.
  • Afficher la valeur brute d'un capteur de température sur une échelle de 0 à 100 %.
  • Mapper les coordonnées d'un joystick aux angles d'un servomoteur.
  • Ajuster la luminosité d'une LED en fonction d'un capteur de lumière ambiante.
  • Convertir une lecture analogique de 0-5 V en une valeur numérique de 0-1023 ou vice versa.

Matériel/Composants

Pour suivre ce projet, vous aurez besoin des composants suivants :

  • Carte Arduino (Uno, Nano, etc.)
  • Une LED
  • Une résistance de 220 ohms
  • Des fils de connexion
  • Une plaque d'essai (optionnelle, mais recommandée)

Guide de câblage

Dans la vidéo, l'instructeur démontre le projet en utilisant un montage de câblage issu d'une leçon précédente sur l'atténuation des LED. Le circuit est simple : connectez l'anode (broche longue) de la LED à une résistance de 220 ohms, puis connectez l'autre extrémité de cette résistance à la broche numérique 3 de l'Arduino. Connectez la cathode (broche courte) de la LED directement à la broche de masse (GND) de l'Arduino.

Explication du code

Le code de cet exemple est très concis, la logique principale résidant dans la fonction setup(). Décomposons les parties configurables par l'utilisateur.

int LEDpin = 3; //définit la broche pour la LED

Cette ligne définit la broche Arduino à laquelle votre LED est connectée. Dans cet exemple, elle est réglée sur la broche 3, qui est une broche compatible PWM, nécessaire pour la sortie analogique. Vous pouvez modifier ce numéro si vous connectez votre LED à une autre broche PWM.

int b=8;//60% de luminosité

C'est la variable clé que vous modifierez pour tester différents niveaux de luminosité. Elle représente la luminosité souhaitée en pourcentage. Le commentaire dans le code indique « 60 % », mais la valeur est réglée sur 8 à des fins de démonstration dans la vidéo. Vous pouvez la changer en n'importe quel entier entre 0 et 100. Par exemple, définir b = 60 représenterait un niveau de luminosité de 60 %.

int brightness = map(b, 0, 100, 0,255);

C'est le cœur de la leçon. La fonction map() prend votre valeur en pourcentage (b) et la convertit de sa plage d'origine (0 à 100) vers une nouvelle plage cible (0 à 255). Le résultat est stocké dans la variable brightness, qui est ensuite utilisée pour écrire une valeur analogique sur la broche de la LED.

analogWrite(LEDpin, brightness);// allume la LED avec 60% de luminosité

Enfin, cette ligne envoie la valeur mappée à la broche de la LED en utilisant analogWrite(). Cela définit le cycle de service de la LED, contrôlant ainsi efficacement sa luminosité. La beauté de cette approche est que vous n'avez qu'à modifier la variable b pour contrôler la LED, et la fonction map() gère tous les calculs nécessaires.

Projet/Démonstration en direct

Dans la vidéo, l'instructeur télécharge le code et démontre l'effet de la modification de la variable b. Lorsque b est réglé sur 8, le moniteur série affiche la valeur mappée de 20, et la LED est visiblement faible. Changer b à 90 donne une valeur mappée de 229, rendant la LED beaucoup plus lumineuse. Régler b à 100 mappe à 255, ce qui correspond à la pleine luminosité. Cette démonstration pratique montre clairement comment la fonction map() simplifie le processus de contrôle des sorties analogiques avec des valeurs en pourcentage conviviales.

Projets liés à cette vidéo

Chapitres

  • [00:00] Introduction au cours Arduino par Robojax
  • [01:19] Qu'est-ce que millis() et pourquoi l'utiliser
  • [05:46] Exemple 1 : Utilisation de millis() pour un événement temporisé
  • [08:29] Exemple 2 : Utilisation de millis() avec un bouton poussoir
  • [12:14] Exemple 3 : Détection d'une seconde pression de bouton après un délai
  • [17:20] Introduction à la fonction map()
  • [19:47] Explication du code pour l'exemple map()
  • [20:41] Démonstration en direct de la fonction map()

Images

Sunfounder car assembled
Sunfounder car assembled
919-Lesson 14/31-4: Arduino coding map() example 1
Langue: C++
/*
Lesson 14/31: Arduino coding map( ) example-1
Get this code and watch video Download and resource page https://robojax.com/RJT597
YouTube video https://www.youtube.com/watch?v=lqgzQohNiIM
 
  
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.* 
 * This code has been download from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */
int LEDpin = 3; //defind pin for LED
                   
 
 void setup() {
    Serial.begin(9600);//initialize serial monitor with 9600 baud
    pinMode(LEDpin, OUTPUT);//set pin as output
    int b=8;//60% brightness
    int brightness = map(b, 0, 100, 0,255);
    Serial.println(brightness);//print it on serial monitor
    analogWrite(LEDpin, brightness);// turn the LED on with 60% brightness   
 }

 void loop() {

 
 }
 

Fichiers📁

Manuel de l'Utilisateur