L4: Intentsitate aldakorreko LEDa
Etiketak:
Kategoriak:
Intentsitate aldakorreko LEDa
Zer ikasiko duzu ikasgai honetan
Ikasgai honetan honako hauek landuko ditugu:
- Kanpoko LED baten intentsitatea kontrolatzea garapen-plakatik.
- PWM irteerak. Zer diren eta zertarako balio duten.
Aurretiazko baldintzak
Ikasgai hau jarraitu ahal izateko, aldez aurretik 1. ikasgaia: Nire lehen proiektua, 2. ikasgaia: LED diodoa eta 3. ikasgaia: LED diodoa (2) osatu behar dituzu. Ikasgai honetan aurreko ikasgaiko muntaketa mota bera erabiliko dugu, baina LEDa piztuta eta itzalita edukitzeaz gain, tarteko balioekin kontrolatzen ikasiko dugu.
Azalpen teorikoa
Gehiago jakin nahi dut!
Piztuta, itzalita… eta tarteko mailak
Aurreko ikasgaietan LEDa oso modu errazean erabili dugu:
- 100 balioa: LEDa pizten da.
- 0 balioa: LEDa itzaltzen da.
Baina proiektu askotan ez dugu soilik argi bat piztu edo itzali nahi. Batzuetan nahi izaten dugu gutxi distiratzea, asko distiratzea edo pixkanaka aldatzen joatea. Adibidez:
- Giro-argi bat.
- Intentsitatea handitzen duen adierazle bat.
- Poliki pizten den argi-alarma bat.
- “Arnasketa” efektu bat, argia intentsitate handiagoan eta txikiagoan jartzen duena.
Hori lortzeko, LEDaren intentsitatea kontrolatu behar dugu.
Pin digital batek tarteko balioak eman al ditzake?
Plakaren pin digital bat bi egoera nagusitan egon daiteke:
- ON: tentsio positibora konektatuta.
- OFF: GNDra konektatuta.
Horrek arazo bat dirudi: ON eta OFF besterik badaude, nola lor dezakegu LED batek %25ean, %50ean edo %75ean piztuta itxura ematea?
Irtenbidea LEDa oso azkar piztu eta itzaltzea da. Hain azkar, non gure begiek ez baitituzte keinuak banaka ikusten, distira handiagoa edo txikiagoa duen argi bat baizik.
PWM irteerak
PWM siglek Pulse Width Modulation esan nahi dute; euskaraz, pultsu-zabaleraren modulazioa.
Izenak korapilatsua dirudien arren, oinarrizko ideia sinplea da:
- LEDa ia denbora guztian piztuta badago, oso distiratsu ikusiko dugu.
- LEDa denboraren zati txiki bat soilik piztuta badago, argi gutxi ematen duela ikusiko dugu.
- LEDa denboraren erdian piztuta eta beste erdia itzalita badago, tarteko intentsitatearekin ikusiko dugu.
Adibidez, denbora-tarte oso labur batean:
| LEDari bidalitako balioa | Piztuta dagoen denbora | Gutxi gorabeherako emaitza |
|---|---|---|
| 0 | %0 | Itzalita |
| 25 | %25 | Argi gutxi |
| 50 | %50 | Tarteko argia |
| 100 | %100 | Argi maximoa |
Seinalea piztuta dagoen denboraren ehunekoari lan-zikloa edo duty cycle esaten zaio.
Ez duzu izen teknikoa gogoratu beharrik ikasgaia osatzeko. Garrantzitsuena ideia ulertzea da: PWMarekin LEDa oso azkar piztu eta itzaltzen da, eta horri esker, hautematen dugun distira kontrola dezakegu.
Zergatik ez dugu keinurik ikusten?
Gure begiek ez dituzte aldaketa guztiak hautematen oso azkar gertatzen badira. Antzeko zerbait gertatzen da zineman edo bideoetan: mugimendu jarraitua ikusten dugu, nahiz eta irudi finko asko bata bestearen atzean agertzen diren.
PWMarekin antzeko zerbait gertatzen da. LEDa ON eta OFF egoeren artean aldatzen da, askotan segundoko. Oso azkar gertatzen denez, gure begiak argi indartsuago edo ahulago gisa interpretatzen du emaitza.
Atal praktikoa
Material hauek behar dituzu:
- ESP32 garapen-plaka.
- BatSTEM hedapen-plaka.
- USB konexio-kablea.
- Prototipo-plaka.
- LED gorria.
- 100 Ohm-eko erresistentzia.
- Konexio-kableak.
Eskema elektronikoa eta konexio-diagrama
Ikasgai honetan 3. ikasgaiko: LED diodoa (2) muntaketa berrerabiliko dugu. Kanpoko LEDa garapen-plakaren GPIO pin batera konektatuta egongo da, babes-erresistentzia baten bidez.
GPIO4 pina erabiliko dugu, aurreko ikasgaian bezala.

Eskema elektronikoa

Osagaien konexioa prototipo-plakan
Pausoz pauso
- Jarri ESP32 garapen-plaka BatSTEM hedapen-plakaren gainean.
- Konekta ezazu kable beltz bat hedapen-plakaren GND konektorearen eta prototipo-plakaren lerro urdinaren artean. Hori izango da gure 0 volteko, erreferentzia edo GND lerroa.
- Konekta ezazu kable bat hedapen-plakaren D4 (GPIO4) pinetik prototipo-plakaren erdialdeko lerro libre bateraino.
- Jar ezazu 100 Ohm-eko erresistentzia bat, bere terminaletako bat GPIO4 pinera konektatutako kablearen lerro berean gera dadin.
- Konekta ezazu LED gorria: anodoak erresistentziaren beste terminalaren lerro berean geratu behar du, eta katodoak beste lerro batean geratu behar du.
- Konekta ezazu kable beltz bat LEDaren katodoaren lerroaren eta GND lerro urdinaren artean.
- Konekta ezazu garapen-plaka ordenagailura USB kablearekin.
Gogoratu LEDak polaritatea duela. Praktikan LEDa ez bada pizten, berrikusi anodoa eta katodoa norabide egokian jarrita daudela eta erresistentzia seriean dagoela LEDarekin.
Kodea
Ikasgai honetan bi sketch sortuko ditugu. Lehenengoan intentsitate-maila desberdinak probatuko ditugu. Bigarrenean, LEDaren distira handitu eta txikitu egingo dugu, pixkanaka.
Gehiago jakin nahi dut!
LED baterako goi-mailako blokea erabiltzen dugunean, balioak ez du zertan 0 edo 100 bakarrik izan. Tarteko balioak ere erabil ditzakegu. BatSTEM Cloud arduratzen da LEDak distira handiagoa edo txikiagoa izan dezan behar den PWM seinalea sortzeaz.
Horri esker, programaren ideian jar dezakegu arreta, PWM seinalearen xehetasun guztiak eskuz konfiguratu beharrik gabe.
GPIO kategorian behe-mailako aukera bat ere badago: “jarri pin … analogiko % … (e)ra” blokea. Bloke horrek GPIO pin batera zuzenean portzentaje bat bidaltzeko aukera ematen du. Ikasgai honetan “LEDa izena duen” blokea erabiliko dugu lehenik, argiagoa delako eta pauso bakoitzean pin zenbakia gogoratu beharrik ez dagoelako.
Intentsitate desberdinak probatu
Eraiki eta exekutatu sketch hau:

- Konfigurazioa blokean, sortu izena duen LED bat GPIO4 pinari konektatuta. NireLED deitu diezaiokezu.
- Begizta nagusian, jarri LEDa 0 balioan.
- Gehitu 1 segundo ko itxaronaldia.
- Jarri LEDa 25 balioan.
- Gehitu 1 segundo ko itxaronaldia.
- Jarri LEDa 50 balioan.
- Gehitu 1 segundo ko itxaronaldia.
- Jarri LEDa 75 balioan.
- Gehitu 1 segundo ko itxaronaldia.
- Jarri LEDa 100 balioan.
- Gehitu 1 segundo ko itxaronaldia.
Pausoz pauso
- Klikatu Gailuak eta arrastatu “izena duen LEDa” bloke bat konfigurazioa blokera.
- Idatzi NireLED LEDaren izen gisa.
- Hautatu GPIO4 pina; horra konektatu dugu kanpoko LEDa.
- Arrastatu “jarri LED” bloke bat begizta nagusira eta hautatu NireLED LEDa.
- Idatzi 0 balioa “jarri LED” blokean.
- Klikatu Denbora eta gehitu 1 segundo ko itxaron-bloke bat.
- Bikoiztu “jarri LED” eta “itxaron” blokeek osatutako bikotea, bost maila izan arte.
- Aldatu LEDaren balioak 0, 25, 50, 75 eta 100 izan daitezen.
- Sakatu Exekutatu botoia eta itxaron sketch-a konpilatu eta plakara transferitu arte.
- Ikusi nola aldatzen den LEDaren intentsitatea pausoz pauso.
Maila batzuk bereiztea kostatzen bazaizu, saiatu LEDa alde batetik begiratzen edo gelako argia pixka bat jaisten. LED batzuetan distira-aldeak errazago ikusten dira beste batzuetan baino.
Argi efektu leuna sortu
Orain LEDaren intentsitatea igo eta jaitsiko dugu. Eraiki ezazu sketch berri bat sekuentzia honekin:

- Jarri LEDa 0 balioan.
- Itxaron 200 milisegundo.
- Jarri LEDa 20 balioan.
- Itxaron 200 milisegundo.
- Jarri LEDa 40 balioan.
- Itxaron 200 milisegundo.
- Jarri LEDa 60 balioan.
- Itxaron 200 milisegundo.
- Jarri LEDa 80 balioan.
- Itxaron 200 milisegundo.
- Jarri LEDa 100 balioan.
- Itxaron 200 milisegundo.
- Errepikatu sekuentzia bera beherantz: 80, 60, 40, 20, 0.
Pausoz pauso
- Mantendu “izena duen LEDa” blokea konfigurazioan, GPIO4 pinera konektatuta.
- Begizta nagusian, jarri “jarri LED” blokeak eta itxaron-blokeak txandaka.
- Erabili lehenik gorantz doazen balioak: 0, 20, 40, 60, 80, 100.
- Ondoren, gehitu beherantz doazen balioak: 80, 60, 40, 20, 0.
- Jarri 200 milisegundoko itxaronaldia intentsitate-aldaketa bakoitzaren ondoren.
- Exekutatu sketch-a.
Sekuentzia amaitzen denean, begizta nagusia berriz hasieratik hasiko da; beraz, efektua etengabe errepikatuko da.
Efektu mota honi fade edo pixkanakako argi-trantsizioa esaten zaio. Benetako proiektuetan, argiak bat-batean aldatu beharrean, modu atseginagoan aldatzeko erabiltzen da.
Ideia bera GPIO blokeekin
Gehiago jakin nahi dut!
Goi-mailako blokeek LED batekin lan egiteko aukera ematen digute izen bat erabiliz. Baina pina zuzenean ere kontrola dezakegu GPIO kategoriako blokeekin.
Probatzeko, sketch baliokide bat eraiki dezakezu “jarri pin … analogiko % … (e)ra” blokea erabiliz:
- Begizta nagusian, gehitu “jarri pin … analogiko % … (e)ra” bloke bat.
- Idatzi 4 pinaren zenbaki gisa.
- Idatzi 0 balioa.
- Gehitu itxaronaldi bat.
- Errepikatu ideia bera 25, 50, 75 eta 100 balioekin.
Emaitza “jarri LED” blokearen antzekoa izango da, baina orain GPIO pina zuzenean kontrolatuko duzu. Modu horrek aukera gehiago ematen ditu, baina pinaren zenbakiarekin arreta handiagoa izatea ere eskatzen du.
Ariketa gehigarriak edo erronkak
- Aldatu itxaronaldiak, efektua azkarragoa edo motelagoa izan dadin.
Itxaronaldia luzatzen baduzu, aldaketa motelagoa izango da. Murrizten baduzu, aldaketa azkarragoa izango da.
- Aldatu tarteko balioak, LEDak intentsitate-maila gehiago izan ditzan.
10eko balioekin proba dezakezu: 0, 10, 20, 30… 100era iritsi arte. Efektua leunagoa izango da, baina bloke gehiago beharko dituzu.
Sor ezazu argi-seinale bat hau egiten duena: pixkanaka intentsitatea igo, 2 segundoz ahalik eta gehien piztuta geratu eta bat-batean itzali.
Konektatu bigarren LED bat beste GPIO pin batera, eta sor ezazu efektu bat non batek intentsitatea handitzen duen besteak behera egiten duen bitartean.
Ikasitakoaren laburpena
- Ikasi dugu LED batek ez duela zertan piztuta edo itzalita bakarrik egon behar.
- Bitarteko balioak erabili ditugu kanpoko LED baten intentsitatea kontrolatzeko.
- PWMak distira-maila desberdinak simulatzeko aukera ematen duela ikusi dugu, LEDa oso azkar piztu eta itzaliz.
- Trantsizio-efektu bat sortu dugu, non argiaren intentsitatea igo eta jaitsi egiten den.
- Aurreko ikasgaiko muntaketa berrerabili dugu LEDa kontrolatzeko modu berri bat ikasteko.
Hurrengo pausoak
- Ikasi hainbat kolore kontrolatzen RGB LED batekin 5. ikasgaian.
Ariketa osagarrien soluzioak
Erakutsi
Efektu leunagoa 10eko urratsekin
Distira-aldaketa leunagoa sortzeko, bitarteko balio gehiago erabil ditzakegu. Adibidez:
- 0
- 10
- 20
- 30
- 40
- 50
- 60
- 70
- 80
- 90
- 100
Ondoren, sekuentzia bera errepikatuko dugu kontrako noranzkoan. Programa luzeagoa izango da, baina maila baten eta hurrengoaren arteko aldaketa ez da hain bortitza izango.
Pixkanaka pizten den argi-seinalea
Hirugarren erronka ebazteko, ideia hau erabil dezakegu:
- Igo intentsitatea tarteko hainbat baliorekin.
- LEDa 100era iristean, gehitu 2 segundoko itxaronaldia.
- Ondoren, jarri LEDa zuzenean 0 balioan.
- Gehitu beste itxaronaldi bat sekuentzia errepikatu aurretik.
Bi LED kontrako noranzkoan
LED baten intentsitatea handitu ahala bestearena txikitzeko, bi LED izendun sortu behar ditugu konfigurazioa blokean. Adibidez:
- LED_A, GPIO4 pinean.
- LED_B, erabilgarri dagoen beste GPIO pin batean.
Ondoren, begizta nagusiko pauso bakoitzean, aurkako balioak erabiliko ditugu:
| LED_A | LED_B |
|---|---|
| 0 | 100 |
| 20 | 80 |
| 40 | 60 |
| 60 | 40 |
| 80 | 20 |
| 100 | 0 |