Teach ikasgaia
STM32 Arduino APIarekin (1/4): LEDa keinuka
Erabili STM32 CodeIDE Arduino APIarekin: idatzi setup() eta loop(), piztu eta itzali benetako LED bat txandaka, eta jaso konpilazioaren eta plakarako kargaren ebidentzia.
Hasi saioa irakasle-kontu batekin klase-saioa prestatzeko. Ikasleak klase-kode batekin sartzen dira.
Lehen aldia duzu LabsLand-en? Sortu irakasle-kontua
Ikaskuntza-emaitzak
STM32 plaka baterako oinarrizko Arduino programa bat idaztea.
Plaka prestatzen duen kodea eta errepikatzen den kodea bereiztea.
Benetako irteera digital baten portaeraren ebidentzia jasotzea.
Ikaslearen jardueraren aurrebista
Jardueraren edukia
Aurrebista soilik. Klase-saio batean, ikasleek erantzunak bete eta lana irakasleari bidal diezaiokete.
Laborategia ireki aurretik
8 min
STM32 Arduino ikastaroa · 4 saiotatik 1.a. Benetako STM32 Nucleo plaka bat programatuko duzu CodeIDE bidez, Arduino APIa erabiliz. Programaren egiturak Arduino gogoraraziko dizu, baina pinek STM32 izenak dituzte, hala nola PB5 edo PA8. Ikasgai honek behar duzun guztia azaltzen du; ez duzu aurretik beste saiorik egin behar.
LEDa aldizka piztu eta itzaltzea gailu baten «taupada» gisa erabil daiteke, programak exekutatzen jarraitzen duela ikusteko. Gaurko galdera da: instrukzio gutxi batzuekin sor al daiteke taupada erregular eta behagarri bat benetako plakan?
Mikrokontrolagailuak ez ditu esaldiak «ulertzen»: instrukzio zehatzak exekutatzen ditu. Gaur irteera digital bat, LED bat eta bi itxaronaldi besterik ez dugu behar.
Arduino programa batean (sketch deritzonean):
setup()behin exekutatzen da programa abiatzean, plaka prestatzeko.loop()behin eta berriz exekutatzen da programak martxan jarraitzen duen bitartean.pinMode(pin, OUTPUT)instrukzioak pina irteera gisa konfiguratzen du.digitalWrite(pin, HIGH)instrukzioak maila altua ezartzen du;LOWbalioak, baxua. Jarduera honetako LEDaHIGHbalioarekin pizten da, etaLOWbalioarekin itzaltzen da.
Begizta nagusiak honako egitura izango du:
digitalWrite(LED_AZUL, HIGH);
delay(1000);
digitalWrite(LED_AZUL, LOW);
delay(1000);
LED_AZUL izenak LED urdina adierazten du. Kodeko izen bat da; erabili berdin programa osoan.
loop() barruan LEDa 1000 ms piztuta eta 1000 ms itzalita badago, zer patroi errepikatu beharko litzateke?
Jarri LEDa keinuka eta probatu
24 min
Argazki honek STM32 Nucleo WB55RG plaka ezagutzen lagunduko dizu. Plaka bakarrik ageri da; benetako urruneko laborategian, LEDak eta beste osagai batzuk konektatuta dituen muntaketa batean dago. Ez duzu kablerik konektatu behar: muntaketan erabilgarri dagoen LED bat erabiliko duzu.
Plaka partekatutako benetako ekipoa da. Ilaran itxaron behar baduzu, osatu aurreikuspena eta lau TODO hutsuneak, eta jarraitu ziklo bati paperean. Gorde kodea ilaran sartu aurretik. Konpilazioak huts egiten badu, berrikusi adierazitako lehen lerroa, giltzak eta puntu eta komak. Kargak huts egiten badu, gorde kodea, egiaztatu plakaren eta erreserbaren egoera eta saiatu berriz behin; arazoak jarraitzen badu, eskatu irakasleari laguntza. Itxaronaldiko lanak edo taldeko erakustaldi batek ez dituzte zure bi behaketak ordezten: osatu benetako plakarako sarbidea duzunean.
STM32 Nucleo WB55RG plakaren erreferentziazko argazkia. Urruneko laborategian, plaka dagoeneko kableatuta dagoen muntaketaren parte da. Lehen saio honetan Arduino kodearekin erabiliko duzu: idatzi, konpilatu, plakan kargatu eta behatu.
Ireki laborategia bloke honetatik. CodeIDEn, hautatu
main.inoeditore-fitxa.Ordeztu haren edukia beheko hasierako programarekin.
Osatu 1.–4. TODO hutsuneak. Iruzkin bakoitzak zer kode mota behar den azaltzen du, erantzuna eman gabe. Bilatu
TODOmain.inofitxategian: konpilatu aurretik ez da bat ere geratu behar. Hutsuneak osatu ondoren, kendu osatutako TODO iruzkinak ere.Gorde
main.ino, sakatu Compilar (konpilatu) eta itxaron konpilazioa ondo amaitu dela adierazten duen mezua agertu arte. Konpilatzeak kodea egiaztatu eta itzultzen du; oraindik ez du benetako plakako programa aldatzen.Konpilazioa ondo amaitu ondoren, sakatu Subir (plakan kargatu) eta itxaron karga zuzen amaitu dela dioen mezua agertu arte. Kargatzeak konpilatutako bertsio hori instalatzen du plakan.
Behatu LED urdina gutxienez hiru ziklo osoz. Jaso hasierako portaera hori, aldaketarik gabe, 1. errenkadan.
Aldatu soilik
PARPADEO_MS: aukeratu kameran bereiz daitekeen beste tarte bat,250 mseta2000 msartekoa. Gorde, konpilatu, kargatu, behatu hiru ziklo eta bete 2. errenkada.
Klase-saio batean erabilgarri
#include <Arduino.h>
const int LED_AZUL = PB5;
const int PARPADEO_MS = TODO_INTERVALO_PARPADEO; // TODO 1: segundo bateko tartea, ms-tan
void setup() {
pinMode(LED_AZUL, TODO_DIRECCION_LED); // TODO 2: LEDa kontrolatzeko aukera ematen duen modua
}
void loop() {
digitalWrite(LED_AZUL, TODO_NIVEL_ENCENDIDO); // TODO 3: pizteko maila
delay(PARPADEO_MS);
digitalWrite(LED_AZUL, TODO_NIVEL_APAGADO); // TODO 4: itzaltzeko kontrako maila
delay(PARPADEO_MS);
}
PARPADEO_MS aldagaiak itxaronaldi bakoitzaren iraupena adierazten du, milisegundotan. Ziklo osoak piztuta eta itzalita emandako bi tarteak hartzen ditu.
Bete taula programa plakan probatu ondoren. Erabili bi errenkada soilik, eta utzi gainerakoak hutsik TEACHek gehiago erakusten baditu:
- 1. errenkada: hasierako programa,
1000 mstartearekin osatua. - 2. errenkada: aldatu duzun bertsioa.
- Behatutako patroia atalean, idatzi benetako plakan ikusi duzuna.
- Doikuntza edo arazoa atalean, idatzi
bat ere ezondo funtzionatu badu; bestela, zer berrikusiko zenukeen.
| Probatutako bertsioa | delay-ren balioa (ms) | Behatutako patroia | Bat dator aurreikuspenarekin? | Doikuntza edo arazoa |
|---|---|---|---|---|
Deskribatu programa benetako plakan exekutatu dela erakusten duen ebidentzia zehatz bat. Izendatu irteera, adierazi probatutako bi itxaronaldi-balioak ms-tan, eta konparatu gutxienez hasierako hiru ziklo aldaketaren ondorengo beste hiru ziklorekin.
Entregatu kodea
8 min
Entregatu aurretik, gorde azken kodea main.ino fitxategian. Irakasleak erabilitako pina, pinMode, bi digitalWrite instrukzioak eta probatutako delay balioa ikusi behar ditu. Bilatu TODO berriro: entregatutako fitxategian ez da bat ere geratu behar.
Entregatu azken main.ino fitxategia
Gorde main.ino erantsi aurretik. Kode-kopiak konpilatu eta plakan kargatu duzun azken programa erakutsi behar du, irakasleak hura berrikus dezan.
Amaierako hausnarketa
10 min
Azaldu setup() eta loop() arteko aldea, LEDa keinuka jartzeko zure programa adibide gisa erabiliz. Gehitu zergatik komeni den aldi bakoitzean gauza bakar bat aldatzea akatsak bilatu eta zuzentzean.
Bihurtu aurrebista hau klase-saio batean
Jarraitu LabsLand Teach-era ikasgai hau ikasleekin erabiltzeko eta kontuaren sarbidea berrikusteko.
Lehen aldia duzu LabsLand-en? Sortu irakasle-kontua