Lapā tiek izmantotas sīkdatnes 

RGB diodes (ESP32)


Problēmas apraksts

Tā kā esam apguvuši, kā pieslēgt LED diodes kontrolierim un darbināt tās ar pogu, pamēģināsim vadīt RGB gaismas elementu, ļaujot tam attēlot dažādas krāsas.


PWM

Lai vadītu RGB gaismas elementu, jāizmanto digitāla signāla modulācija (PWM).

PWM darbība ir kā slēdža pārslēgšana ļoti daudz reižu ļoti īsā laikā, simulējot high-low-high-low signālu.

https://cdn1.byjus.com/wp-content/uploads/2021/01/duty-cycle-of-pulse-width-modulation.png

Iestatot pietiekami augstu frekvenci, panākam nepārtrauktu RGB LED spīdēšanu.


Gaismas tonis

Lai kontrolētu gaismas toni, RGB LED elementam ir trīs kājas, kas apzīmētas ar R, G un B. Tās jāpieslēdz trīs mikrokontroliera GPIO kontaktiem, piemēram, 25, 26 un 27.

Ceturtā kāja Common PIN (Cathode) jāpieslēdz mikrokontroliera GND kontaktam.


Loģika

Nepieciešams importēt Pin un PWM funkcijas, lai definētu visus vajadzīgos elementus.

from machine import Pin, PWM
import time

Jādefinē krāsu kontakti, kas izmanto PWM ar vienādu frekvenci

red = PWM(Pin(25), freq=1000)
green = PWM(Pin(26), freq=1000)
blue = PWM(Pin(27), freq=1000)

Lai darbinātu LED diodi, jākonvertē RGB vērtības (0-255) uz tādām, ko saprot mikrokontrolieris (0-65535). Duty vērtība nosaka, cik ilgi spīdēs diode vienā high ciklā jeb cik spoži tā paspēs iespīdēties līdz brīdim, kad tā atkal nodzisīs. Tā kā PWM signāla modulācijas notiek ļoti ātri, spuldzītes mirgošana ir gandrīz neredzama, tā šķietami spīd ar vienādu spilgtumu.

red.duty_u16(int(r * 65535 / 255))
green.duty_u16(int(g * 65535 / 255))
blue.duty_u16(int(b * 65535 / 255))

Vieglāk ietērpt PWM kodu funkcijā, kas vienlaikus iestata vērtības RGB diodei.

def set_color(r, g, b):
    red.duty_u16(int(r * 65535 / 255))
    green.duty_u16(int(g * 65535 / 255))
    blue.duty_u16(int(b * 65535 / 255))

Testēšana

Izmēģini RGB LED diodi ar dažādām krāsām

YELLOW = (255, 255, 0)
RED = (255, 0, 0)
WHITE = (255, 255, 255)
# Pievieno 3 savas krāsas

Uzlabojumi

Pievieno slēdžus (slide switch), kas ļauj pārslēgt katras krāsas kontaktu starp minimālo 0 un maksimālo 255 vērtību.