Projet 1 : Contrôler la LED
Nous allons d’abord apprendre à contrôler la LED.

Principe de fonctionnement
La LED est une diode électroluminescente, qui peut être intégrée dans un module électronique. Elle s’allume si nous contrôlons les broches pour produire un niveau haut, sinon elle reste éteinte.
Paramètres
Tension de fonctionnement |
DC 3~5V |
|---|---|
Courant de fonctionnement |
<20mA |
Puissance |
0.1W |
Broche de contrôle
LED jaune |
12 |
|---|---|
\ |
Projet 1.1 Clignotement de la LED
Description
Nous pouvons faire sortir un niveau haut et un niveau bas sur la broche de la LED pour la faire clignoter.
Code de test
from machine import Pin
import time
led = Pin(12, Pin.OUT)# Build an LED object, connect the external LED light to pin 0, and set pin 0 to output mode
while True:
led.value(1)# turn on led
time.sleep(1)# delay 1s
led.value(0)# turn off led
time.sleep(1)# delay 1s
Ouvrir le code d’exemple


Résultat du test
Cliquez sur le bouton

On peut voir que la LED jaune clignote.
Projet 1.2 LED ‘respiration’
Description
Une “LED respirante” est un phénomène où la luminosité d’une LED change progressivement de sombre à lumineuse puis de nouveau à sombre, en continu, donnant l’illusion que la LED “respire”. Mais comment contrôler la luminosité de la LED ?
Il est logique d’utiliser le PWM. En faisant varier le nombre de niveaux haut et bas sur une unité de temps, plus le niveau haut occupe de temps, plus la valeur du PWM est grande et plus la LED est brillante.

Code de test
import time
from machine import Pin,PWM
#The way that the ESP32 PWM pins output is different from traditionally controllers.
#It can change frequency and duty cycle by configuring PWM’s parameters at the initialization stage.
#Define GPIO 0’s output frequency as 10000Hz and its duty cycle as 0, and assign them to PWM.
pwm =PWM(Pin(12,Pin.OUT),10000)
try:
while True:
#The range of duty cycle is 0-1023, so we use the first for loop to control PWM to change the duty
#cycle value,making PWM output 0% -100%; Use the second for loop to make PWM output 100%-0%.
for i in range(0,1023):
pwm.duty(i)
time.sleep_ms(1)
for i in range(0,1023):
pwm.duty(1023-i)
time.sleep_ms(1)
except:
#Each time PWM is used, the hardware Timer will be turned ON to cooperate it. Therefore, after each use of PWM,
#deinit() needs to be called to turned OFF the timer. Otherwise, the PWM may fail to work next time.
pwm.deinit()
Résultat du test
Cliquez sur le bouton.

La LED s’assombrit puis s’éclaircit progressivement, de manière cyclique, comme si elle respirait.