Projet 1 : Contrôler la LED

Nous allons d’abord apprendre à contrôler la LED.

image16

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

image17

image18

Résultat du test

Cliquez sur le bouton

image19

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.

image20

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.

image21

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