P3: Semaforo interaktiboa
Etiketak:
Semaforo interaktiboa
Zer errepasatuko duzu proiektu honetan
Proiektu honetan aurreko hiru ikasgaietan ikasitakoa konbinatuko dugu:
- Sakagailu bat konfiguratzea eta haren egoera irakurtzea.
- Botoia sakatzean eta askatzean sortzen diren gertaerak eta etenak.
- Timer bat erabiltzea aldizkako zeregin bat exekutatzeko.
- Uneko egoera gogoratzeko aldagaiak erabiltzea.
Aurretiazko baldintzak
Proiektu honetan ikasgai hauetan ikasitako kontzeptuak praktikan jarriko ditugu: L7: Sakagailua, L8: Sakagailua (2) eta L9: Timer-a.
Erronka
Eraiki ezazu semaforo bat RGB LED batekin, 2 segundo igarotzen diren bakoitzean kolorea automatikoki aldatzeko:
- Gorria.
- Berdea.
- Horia.
- Gorria berriz.
Gehitu sakagailu bat funtzio honekin:
- Sakatzean, semaforoa pausatu egiten da eta uneko kolorea mantentzen du.
- Askatzean, semaforoak berriz funtzionatzen du.
Hasi aurretik
Programak bi motatako gertaera independenteak izango ditu:
- Timer-aren gertaerak kolorea aldatzen du.
- Botoiaren gertaerek timer-a desaktibatzen edo aktibatzen dute.
Urratsa aldagaiak hurrengo aktibazioan zein kolore erakutsi behar den gogoratuko du.
Pistak
Kontsultatu pista hauek behar badituzu bakarrik. Lehenengo, saiatu begiratu gabe!
Ikusi pistak
- Konekta ezazu RGB LEDa GPIO16, GPIO17 eta GPIO18 pinetara.
- Konekta ezazu sakagailua GPIO4 pinera eta GNDra.
- Sortu Urratsa aldagaia, 0 hasierako balioarekin.
- Sortu Erritmoa izeneko timer bat, 2 segundo igarotzen diren bakoitzean salto egiteko.
- Erabili timer-aren gertaera gorria, berdea eta horia txandakatzeko.
- Botoiaren ON gertaeran, jarri Erritmoa desaktibatuta.
- OFF gertaeran, aktibatu berriz.
Erronkaren soluzioa
Kontsultatu soluzioa proiektua zure kabuz egiten saiatu ondoren. Beste pin edo denbora-tarte batzuk erabil ditzakezu, azken portaera bera bada.
Ikusi soluzioa
Materialak
- ESP32 garapen-plaka.
- BatSTEM hedapen-plaka.
- USB konexio-kablea.
- Prototipo-plaka.
- 4 hankako RGB LEDa, katodo komunekoa.
- 100 Ohm-eko 3 erresistentzia.
- Sakagailua.
- Konexio-kableak.
Eskema elektronikoa

Muntaketa

- Konekta ezazu GND prototipo-plakaren lerro urdinera.
- Jar ezazu RGB LEDa, hanka bakoitza lerro desberdin batean gera dadin.
- Konekta ezazu hanka komuna GNDra.
- Konekta ezazu R kanala GPIO16 pinera, G kanala GPIO17 pinera eta B kanala GPIO18 pinera, kanal bakoitza 100 Ohm-eko erresistentzia baten bidez.
- Jar ezazu sakagailua erdiko kanala zeharkatuz.
- Konekta ezazu sakagailuaren terminal bat GPIO4 pinera eta bestea GNDra.
- Konekta ezazu plaka ordenagailura.
Programa
Konfigurazioa blokean:
- Sortu NireLEDRGB izena duen RGB LED bat eta esleitu GPIO16 R kanalari, GPIO17 G kanalari eta GPIO18 B kanalari.
- Sortu NireSakagailua izena duen sakagailu bat, GPIO4 pinera konektatuta.
- Sortu Urratsa aldagaia, 0 hasierako balioarekin.
- Sortu Erritmoa timer-a, konfiguratu 2 segundoko tartearekin eta aktibatu automatikoki hasteko aukera.
Ondoren, sortu irudian agertzen diren hiru gertaerak:

“Erritmoa (e)k salto egiten duenean” blokean:
- Urratsa aldagaiaren balioa 0 bada, erakutsi gorria eta jarri Urratsa 1 balioan.
- Urratsa aldagaiaren balioa 1 bada, erakutsi berdea eta jarri Urratsa 2 balioan.
- Beste edozein kasutan, erakutsi horia eta jarri berriz Urratsa 0 balioan.
“NireSakagailua ON(e)ra aldatzen denean” blokean, desaktibatu Erritmoa.
“NireSakagailua OFF(e)ra aldatzen denean” blokean, aktibatu Erritmoa.
Egiaztatu kolorea ez dela aldatzen botoia sakatuta mantentzen duzun bitartean, eta sekuentziak jarraitzen duela askatzen duzunean.
Aukerako erronkak
- Aldatu semaforoaren erritmoa, 1 edo 5 segundoko tarteekin funtzionatzeko.
- Gehitu egoera urdin bat sekuentziari.
- Programatu botoia sakaldi bakar batekin pausa eta martxa txandakatzeko.
- Gehitu bigarren botoi bat, sekuentzia gorritik berriz hasteko.
- Bidali uneko kolorea COM monitorera timer-ak salto egiten duen bakoitzean. Konfiguratu COM ataka 115200 bps-ra: COM monitoreak abiadura horretan funtzionatzen du beti.
Proiektuaren laburpena
- Sakagailu bat konfiguratu eta erabili dugu.
- Botoia sakatzeko eta askatzeko gertaerei erantzun diegu.
- Sekuentzia bat exekutatu dugu timer baten bidez.
- Aldagai bat erabili dugu semaforoaren egoera gogoratzeko.
- Programa berean gertaera independenteak koordinatu ditugu.