I-logo ye-sheen.bot

← Ukuqonda Okujulile

Kungani i-delay() Iphula Amaphrojekthi we-Arduino Ekilasini (nokuthi Ungayifundisa Kanjani i-millis() Ezinganeni)

Okt 8, 2026·Sheen Robotics
Kungani i-delay() Iphula Amaphrojekthi we-Arduino Ekilasini (nokuthi Ungayifundisa Kanjani i-millis() Ezinganeni)

Ukusebenzisa i-delay() kwenza i-microcontroller ilale, kuphuphuthekise izinzwa (sensors) futhi kukhiye namamotho. Nansi indlela isifanekiso sengqondo sewashe lokubala isikhathi (stopwatch) esifundisa ngayo ukulawula isikhathi okungavimbi (non-blocking timing) kubafundi besigaba se-Senior Phase.

Umsebenzi we-delay() uphula amaphrojekthi we-Arduino ekilasini ngoba umisa i-microcontroller ngokuphelele. Sonke isikhathi sokubambezeleka (delay), iphrosesa ayenzi lutho: ayikwazi ukufunda inzwa yokushayisana (bump sensor), ayikwazi ukuhlola ibanga le-ultrasonic, futhi ayikwazi ukuphendula enkinobhweni yokumisa. Uma irobhothi elinamasondo liqhubekela phambili lapho lihlangana nokubambezeleka kwamasekhondi amabili, lizohamba lingaboni lize lishayise odongeni amasekhondi amabili agcwele ngaphambi kokwenza umyalelo walo olandelayo.

Ukuze ulungise lokhu kubafundi beBanga lesi-7 kuye kwelesi-9, awudingi ukufundisa i-threading, ama-hardware timer interrupt, noma ama-state machine e-object-oriented. Udinga isifanekiso sengqondo esisodwa, esibambekayo: ukubheka iwashe lesandla esikhundleni sokulala kancane.

Isakhiwo se-Bug yaseKilasini

Cishe kulo lonke uhlelo lokusebenza lokwethula irobhothiki, Isifundo 1 ukucwayiza okujwayelekile kwe-LED:

digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);

Kuyasebenza, kunikeza abafundi ukwaneliseka okusheshayo, futhi kutshala ibhomu elicashe phansi eliqhuma ngemva kwamasonto amathathu. Esifundweni 4, lapho abafundi becelwa ukuba bakhe indawo yokuwela abahamba ngezinyawo (ukucwayizisa isibani kanye nokubona ukucindezelwa kwenkinobho) noma i-rover egwema izithiyo (ukuphendula amamotho kanye nokufunda ibanga), ikhodi yabo iyabhidlika.

Umfundi ubhala i-loop ehlola inkinobho yokucindezela, ikhale i-buzzer, bese ibiza i-delay(1000). Lapho becindezela inkinobho, ibhodi livame ukubaziba. Kungani? Ngoba iphrosesa yayimatasa ibala imijikelezo engenamsebenzi ngaphakathi kokubambezeleka. Umunwe womuntu ucindezele futhi wakhulula inkinobho phakathi kwama-99% omjikelezo we-loop lapho i-chip yayilele ngokomsebenzi.

Ku-ATmega328P enejubane elingu-16 MHz, ukubiza i-delay(1000) kumisa kabi imijikelezo yewashi eyizigidi ezingu-16 yenza imiyalelo ye-assembly engenalutho. Irobhothi alenzi imisebenzi eminingi kanyekanye; lime nse.

Isifanekiso Sengqondo seWashe Lesandla

Ngaphambi kokubonisa abafundi ikhodi, basuse ezikrinini zabo ukuze ubakhombise umboniso wemizuzu emihlanu. Cela ivolontiya ukuba lenze umsebenzi: “Shaya ihlombe njalo ngemva kwamasekhondi amathathu, kodwa uma ngiwisa le phini, libambe ngaphambi kokuba lishaye phansi.”

Okokuqala, benze balingise i-delay(): batshele ukuthi ukuze babale amasekhondi amathathu, kumele bavale amehlo abo babale buthule bafike kuthathu engqondweni yabo. Wisa iphini ngesekhondi lesibili. Bazohluleka ngaso sonke isikhathi. Izinzwa zabo zazivaliwe ngesikhathi babala isikhathi.

Okwelandelayo, banikeze isifanekiso esingavimbi: batshele ukuthi bagcine amehlo abo evuleke kakhulu, babheke iwashi lodonga lasekilasini (noma iwashe lesandla ledijithali), futhi baqhubeke nokubuka isandla sakho. Bahlola isikhathi: uma sekudlule amasekhondi amathathu kusukela bashaya ihlombe okokugcina, bayashaya. Uma iphini liwa, basabela ngokushesha.

Lokhu kuguqula umqondo wokubala isikhathi usuke ekubeni isenzo (“linda amasekhondi amabili”) uye ekubeni ukuqhathanisa (“ingabe sesidlulile isikhathi esanele na?”).

Iphethini Eyinhloko: Imibuzo Emithathu

Lapho abafundi sebeliqonda iwashi elisodongeni, yethula i-millis(). Chaza ukuthi i-millis() imane nje iyiwashe lokubala isikhathi langaphakathi elaqala ukusebenza ngomzuzwana ngqo lapho i-Arduino ixhunywa kugesi. Alilokothi lime, futhi alilokothi limise ikhodi isikhashana.

Yonke into engavimbi ingancishiswa ibe yimibuzo emithathu yolimi olulula ngaphakathi kwe-loop eqhubekayo:

  • Sithini isikhathi njengamanje? (Funda iwashe lokubala isikhathi: currentTime = millis())
  • Ngigcine nini ukwenza lesi senzo? (Bheka inothi eligciniwe: previousTime)
  • Ingabe sesidlulile isikhathi esidingekayo? (Yenza ukususa: currentTime - previousTime >= interval)

Uma impendulo yombuzo wesithathu kunguyebo, yenza isenzo bese ubuyekeza inothi: setha i-previousTime = currentTime. Uma impendulo kungucha, yeqa isenzo bese uqhubeka ngokushesha. Ngenxa yokuthi i-loop iqeda ngengxenyana yomzuzwana, ibhodi likhululekile ukufunda izinzwa ze-ultrasonic, ukuhlola ama-limit switch, nokuhlola ama-line-tracker izikhathi eziyizinkulungwane njalo ngomzuzwana.

Ukufundisa i-Syntax Ngaphandle Kokukhungatheka Kwabaqalayo

Kubafundi beBanga lesi-7 nelesi-8, i-boilerplate ye-C++ ephathelene ne-unsigned long ivame ukudala ukukhathazeka ngokwengqondo. Ezikoleni ezisebenza ngaphansi kohlelo lwezifundo lwe-Coding and Robotics olwashicilelwa ngokusemthethweni lwe-Senior Phase, abafundi bavame ukusebenza ezindaweni ezisebenzisa amabhulokhi noma ezihlelweni zokuhlela ezixubile.

Uma ufundisa ngamabhulokhi (njengezindawo ze-Arduino ezisekelwe ku-Scratch), ukuhumusha kulula: yethula ibhulokhi le-“timer” kanye ne-variable ebizwa ngokuthi last_time_checked. Gwema ngokuphelele ibhulokhi elithi “wait 1 second” uma sekwethulwe okokufaka okuyisisekelo.

Uma ufundisa i-Arduino C++ esekelwe embhalweni, ungatheli nje isibonelo esijwayelekile se-BlinkWithoutDelay ezikrinini zabo ngaphandle kokubasekela. Isibonelo esisemthethweni se-Arduino sihlanganisa imiqondo emibili ehlukene kanyekanye: ukulawula isikhathi okungavimbi kanye nokushintsha isimo (inverting an LED state variable). Yingakho izingane zidideka.

Hlukanisa ukuhlolwa kwesikhathi ku-logic. Sebenzisa lokhu kulandelana esikhundleni salokho:

  1. Khombisa ukwehluleka: Benze baqhube ukucwayiza kwe-LED besebenzisa i-delay() ngenkathi bezama ukucindezela inkinobho yokumisa esimweni esiphuthumayo. Buka ukukhungatheka lapho inkinobho yehluleka ukuphendula.
  2. Yethula i-variable yesikhathi: Babonise indlela yokuphrinta i-millis() ku-Serial Monitor ukuze babone izinombolo zikhuphuka ngokuqhubekayo. Lokhu kwenza umsebenzi ungabi yimfihlakalo—kumane kuyi-odometer yesikhathi.
  3. Bhala isivikelo esibekelwe isikhathi: Nikeza ithempulethi enokwesekwa lapho i-logic yokususa ihlukanisiwe nokuziphatha kwerobhothi.
Indlela YokwenzaIsimo SephrosesaUkusabela KwezinzwaUkufaneleka
delay(1000)Imi ku-busy-wait loopAyiboni ngokuphelele ngesikhathi sokubambezelekaImibukiso yomsebenzi owodwa, isethulo seBanga 4–6
Ukuqhathanisa kwe-millis()Isebenza ngokukhululeka ngejubane eligcwele lewashiKushesha ngokushesha (ukuhlola okungaphansi kwe-millisecond)Irobhothiki, ama-rover, amasistimu asebenzisanayo

Ukwenza Kunamathele Kumaphrojekthi Wasekilasini

Lapho abafundi besuka kuma-rover ahamba engaboni beya kuma-rover ahlola izinzwa ngokuqhubekayo, ulwazi lwabo lokususa amaphutha luyashintsha. Esikhundleni sokuzibuza ukuthi kungani i-bumper switch yehlulekile ukumisa i-DC motor, bangakwazi ukulandelela ukusebenza kwekhodi ngokucacile.

Uma isikole sakho sihlela inqubekelaphambili yamathemu amaningi kusuka ku-logic esekelwe emabhulokhini kuya kurobhothiki ebonakalayo, ukuba nokulandelana kokufundisa okuhlelekile kanye nezinhlelo ze-hardware eziqinisekisiwe kususa ukucagela. Ithimba lethu ku-Sheen Robotics for Schools lisebenzisana nothisha ukuhlanganisa le miqondo yama-embedded systems nezikhathi zasekilasini, liqinisekisa ukuthi abafundi bakha izifanekiso zengqondo ezinokwethenjelwa ngaphambi kokuba kuvele imikhuba emibi yokubhala ikhodi.

Uma umfundi eseqonda ukuthi ikhompyutha akufanele neze ihlale ivalwe amehlo ibala amasekhondi, usuke esenqamule umngcele osuka ekugijimiseni nje izikripthi uye ekubhaleni isofthiwe esabelayo, esebenza emhlabeni wangempela.

#arduino#imfundo yerobhothiki#ukubhala amakhodi#indlela yokufundisa#STEM

Okunye Ukuqonda Okujulile