L4: Intentsitate aldakorreko LEDa

LED baten intentsitate kontrola PWM irteera baten bidez.

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 balioaPiztuta dagoen denboraGutxi gorabeherako emaitza
0%0Itzalita
25%25Argi gutxi
50%50Tarteko argia
100%100Argi maximoa

Seinalea piztuta dagoen denboraren ehunekoari lan-zikloa edo duty cycle esaten zaio.

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
  1. Jarri ESP32 garapen-plaka BatSTEM hedapen-plakaren gainean.
  2. 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.
  3. Konekta ezazu kable bat hedapen-plakaren D4 (GPIO4) pinetik prototipo-plakaren erdialdeko lerro libre bateraino.
  4. Jar ezazu 100 Ohm-eko erresistentzia bat, bere terminaletako bat GPIO4 pinera konektatutako kablearen lerro berean gera dadin.
  5. Konekta ezazu LED gorria: anodoak erresistentziaren beste terminalaren lerro berean geratu behar du, eta katodoak beste lerro batean geratu behar du.
  6. Konekta ezazu kable beltz bat LEDaren katodoaren lerroaren eta GND lerro urdinaren artean.
  7. Konekta ezazu garapen-plaka ordenagailura USB kablearekin.

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:

  1. Konfigurazioa blokean, sortu izena duen LED bat GPIO4 pinari konektatuta. NireLED deitu diezaiokezu.
  2. Begizta nagusian, jarri LEDa 0 balioan.
  3. Gehitu 1 segundo ko itxaronaldia.
  4. Jarri LEDa 25 balioan.
  5. Gehitu 1 segundo ko itxaronaldia.
  6. Jarri LEDa 50 balioan.
  7. Gehitu 1 segundo ko itxaronaldia.
  8. Jarri LEDa 75 balioan.
  9. Gehitu 1 segundo ko itxaronaldia.
  10. Jarri LEDa 100 balioan.
  11. Gehitu 1 segundo ko itxaronaldia.
Pausoz pauso
  1. Klikatu Gailuak eta arrastatu “izena duen LEDa” bloke bat konfigurazioa blokera.
  2. Idatzi NireLED LEDaren izen gisa.
  3. Hautatu GPIO4 pina; horra konektatu dugu kanpoko LEDa.
  4. Arrastatu “jarri LED” bloke bat begizta nagusira eta hautatu NireLED LEDa.
  5. Idatzi 0 balioa “jarri LED” blokean.
  6. Klikatu Denbora eta gehitu 1 segundo ko itxaron-bloke bat.
  7. Bikoiztu “jarri LED” eta “itxaron” blokeek osatutako bikotea, bost maila izan arte.
  8. Aldatu LEDaren balioak 0, 25, 50, 75 eta 100 izan daitezen.
  9. Sakatu Exekutatu botoia eta itxaron sketch-a konpilatu eta plakara transferitu arte.
  10. Ikusi nola aldatzen den LEDaren intentsitatea pausoz pauso.

Argi efektu leuna sortu

Orain LEDaren intentsitatea igo eta jaitsiko dugu. Eraiki ezazu sketch berri bat sekuentzia honekin:

  1. Jarri LEDa 0 balioan.
  2. Itxaron 200 milisegundo.
  3. Jarri LEDa 20 balioan.
  4. Itxaron 200 milisegundo.
  5. Jarri LEDa 40 balioan.
  6. Itxaron 200 milisegundo.
  7. Jarri LEDa 60 balioan.
  8. Itxaron 200 milisegundo.
  9. Jarri LEDa 80 balioan.
  10. Itxaron 200 milisegundo.
  11. Jarri LEDa 100 balioan.
  12. Itxaron 200 milisegundo.
  13. Errepikatu sekuentzia bera beherantz: 80, 60, 40, 20, 0.
Pausoz pauso
  1. Mantendu “izena duen LEDa” blokea konfigurazioan, GPIO4 pinera konektatuta.
  2. Begizta nagusian, jarri “jarri LED” blokeak eta itxaron-blokeak txandaka.
  3. Erabili lehenik gorantz doazen balioak: 0, 20, 40, 60, 80, 100.
  4. Ondoren, gehitu beherantz doazen balioak: 80, 60, 40, 20, 0.
  5. Jarri 200 milisegundoko itxaronaldia intentsitate-aldaketa bakoitzaren ondoren.
  6. Exekutatu sketch-a.

Sekuentzia amaitzen denean, begizta nagusia berriz hasieratik hasiko da; beraz, efektua etengabe errepikatuko 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:

  1. Begizta nagusian, gehitu “jarri pin … analogiko % … (e)ra” bloke bat.
  2. Idatzi 4 pinaren zenbaki gisa.
  3. Idatzi 0 balioa.
  4. Gehitu itxaronaldi bat.
  5. 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

  1. Aldatu itxaronaldiak, efektua azkarragoa edo motelagoa izan dadin.
  1. Aldatu tarteko balioak, LEDak intentsitate-maila gehiago izan ditzan.
  1. Sor ezazu argi-seinale bat hau egiten duena: pixkanaka intentsitatea igo, 2 segundoz ahalik eta gehien piztuta geratu eta bat-batean itzali.

  2. 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:

  1. 0
  2. 10
  3. 20
  4. 30
  5. 40
  6. 50
  7. 60
  8. 70
  9. 80
  10. 90
  11. 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:

  1. Igo intentsitatea tarteko hainbat baliorekin.
  2. LEDa 100era iristean, gehitu 2 segundoko itxaronaldia.
  3. Ondoren, jarri LEDa zuzenean 0 balioan.
  4. 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_ALED_B
0100
2080
4060
6040
8020
1000