Note

Bonjour, bienvenue dans la communauté SunFounder Raspberry Pi, Arduino & ESP32 sur Facebook ! Plongez au cœur de Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.

Pourquoi nous rejoindre ?

  • Support d’experts : Résolvez vos problèmes après-vente et défis techniques avec l’aide de notre communauté et de notre équipe.

  • Apprendre & Partager : Échangez des astuces et tutoriels pour améliorer vos compétences.

  • Avant-premières exclusives : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus exclusifs.

  • Réductions spéciales : Profitez de remises exclusives sur nos derniers produits.

  • Promotions festives et cadeaux : Participez à des concours et promotions spéciales.

👉 Prêt à explorer et créer avec nous ? Cliquez sur [ici] et rejoignez-nous dès aujourd’hui !

2.11 - Tournez le bouton

Dans les projets précédents, nous avons utilisé l’entrée numérique sur le Pico W. Par exemple, un bouton peut changer la broche du niveau bas (éteint) au niveau haut (allumé). C’est un état de fonctionnement binaire.

Cependant, le Pico W peut également recevoir un autre type de signal d’entrée : l’entrée analogique. Elle peut se situer dans n’importe quel état, de complètement fermé à complètement ouvert, avec une plage de valeurs possibles. L’entrée analogique permet au microcontrôleur de percevoir l’intensité de la lumière, du son, la température, l’humidité, etc., du monde physique.

Habituellement, un microcontrôleur nécessite un matériel supplémentaire pour implémenter l’entrée analogique : le convertisseur analogique-numérique (ADC). Mais le Pico W dispose lui-même d’un ADC intégré que nous pouvons utiliser directement.

pin_adc

Le Pico W possède trois broches GPIO capables de gérer des entrées analogiques : GP26, GP27, GP28. C’est-à-dire, les canaux analogiques 0, 1 et 2. De plus, il existe un quatrième canal analogique, connecté au capteur de température intégré, qui ne sera pas présenté ici.

Dans ce projet, nous essayons de lire la valeur analogique du potentiomètre.

Composants requis

Dans ce projet, nous avons besoin des composants suivants.

Il est pratique d’acheter un kit complet, voici le lien :

Nom

ARTICLES DANS CE KIT

LIEN D’ACHAT

Kit Kepler

450+

Kepler Ultimate Kit

Vous pouvez également les acheter séparément via les liens ci-dessous.

INTRODUCTION DES COMPOSANTS

QUANTITÉ

LIEN D’ACHAT

1

Découvrir le Pico W

1

ACHETER

2

Câble Micro USB

1

3

Plaque d’essai (Breadboard)

1

ACHETER

4

Fils de connexion (Jumper Wires)

Plusieurs

ACHETER

5

Résistance

1 (220Ω)

ACHETER

6

LED

1

ACHETER

7

Potentiomètre

1

ACHETER

Schéma

sch_pot

Le potentiomètre est un dispositif analogique que vous pouvez tourner dans deux directions différentes.

Connectez la broche centrale du potentiomètre à la broche analogique GP28. Le Raspberry Pi Pico W dispose d’un convertisseur analogique-numérique multi-canaux de 16 bits. Cela signifie qu’il convertit la tension d’entrée entre 0 et la tension de fonctionnement (3,3V) en une valeur entière comprise entre 0 et 1023, donc la valeur de GP28 varie de 0 à 1023.

La formule de calcul est indiquée ci-dessous.

Valeur numérique = (Tension analogique / 3,3V) * 1023

Ensuite, programmez la valeur de GP28 (potentiomètre) comme la valeur PWM de GP15 (LED). De cette manière, vous constaterez qu’en tournant le potentiomètre, la luminosité de la LED changera simultanément.

Câblage

wiring_pot

Code

Note

  • Vous pouvez ouvrir le fichier 2.11_turn_the_knob.ino sous le chemin kepler-kit-main/arduino/2.11_turn_the_knob.

  • Ou copiez ce code dans l”Arduino IDE.

  • N’oubliez pas de sélectionner la carte (Raspberry Pi Pico) et le port correct avant de cliquer sur le bouton Upload.

Lorsque le programme est en cours d’exécution, nous pouvons voir la valeur analogique actuellement lue par la broche GP28 dans le moniteur série. Tournez le bouton, et la valeur variera de 0 à 1023. En même temps, la luminosité de la LED augmentera au fur et à mesure que la valeur analogique augmentera.

Comment ça marche ?

Pour activer le moniteur série, vous devez démarrer la communication série dans setup() et définir le débit de données à 9600.

void setup() {
    pinMode(ledPin, OUTPUT);
    Serial.begin(9600);
}

Dans la fonction loop, la valeur du potentiomètre est lue, puis la valeur est mappée de 0-1023 à 0-255 et finalement la valeur après le mappage est utilisée pour contrôler la luminosité de la LED.

void loop() {
    int sensorValue = analogRead(sensorPin);
    Serial.println(sensorValue);
    int brightness = map(sensorValue, 0, 1023, 0, 255);
    analogWrite(ledPin, brightness);
}
  • analogRead() est utilisée pour lire la valeur de la broche sensorPin (potentiomètre) et l’attribue à la variable sensorValue.

int sensorValue = analogRead(sensorPin);
  • Imprimez la valeur de sensorValue dans le moniteur série.

Serial.println(sensorValue);
  • Ici, la fonction map(value, fromLow, fromHigh, toLow, toHigh) est requise car la valeur du potentiomètre lue est comprise entre 0-1023 et la valeur d’une broche PWM est comprise entre 0-255. Elle est utilisée pour re-mapper un nombre d’une plage à une autre.

int brightness = map(sensorValue, 0, 1023, 0, 255);
  • Maintenant, nous pouvons utiliser cette valeur pour contrôler la luminosité de la LED.

analogWrite(ledPin,brightness);