Ilogo ye-sheen.bot

← Iimbono Nezifundo

Kutheni le nto i-delay() Iphazamisa Iiprojekthi ze-Arduino zaseKlasi (kunye Nendlela Yokufundisa i-millis() kubantwana)

Okt 8, 2026·Sheen Robotics
Kutheni le nto i-delay() Iphazamisa Iiprojekthi ze-Arduino zaseKlasi (kunye Nendlela Yokufundisa i-millis() kubantwana)

Ukusebenzisa i-delay() kulalisa i-microcontroller, kwenze ii-sensor zibe ziimfama kuze kuxhake iimotholo. Nantsi indlela imodeli yengqondo yewotshi yesandla efundisa ngayo ukubala ixesha okungathinteliyo kubafundi be-Senior Phase.

Umsebenzi we-delay() uphazamisa iiprojekthi zaseklasini ze-Arduino ngenxa yokuba umisa i-microcontroller ngokupheleleyo. Ebudeni balo lonke elo xesha lokulibaziseka, iprosesa ayenzi nto: ayikwazi kufunda i-sensor yongquzulwano (bump sensor), ayikwazi ukujonga umlinganiselo womgama nge-ultrasonic, kwaye ayikwazi kusabela kwiqhosha lokumisa (stop button). Ukuba irobhothi enamavili iyahamba xa idibana nokulibaziseka kwemizuzwana emibini, iza kuqhuba iyimfama ingqubane nodonga kangangemizuzwana emibini epheleleyo ngaphambi kokuba yenze umyalelo wayo olandelayo.

Ukulungisa oku kubafundi beBanga lesi-7 ukuya kwelesi-9, akukho mfuneko yokuba ufundise i-threading, i-hardware timer interrupts, okanye i-object-oriented state machines. Ufuna kuphela imodeli yengqondo enye ebambekayo: ukujonga iwotshi yesandla endaweni yokuthatha iqhula.

Ukwakheka kwe-Bug yaseKlasi

Phantse kuyo yonke inkqubo yokufundisa yentshayelelo yerobhothiki, Isifundo 1 kukuqhwanyaza okuqhelekileyo kwe-LED:

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

Iyasebenza, inika abafundi ulwaneliseko olukhawulezileyo, kwaye ityala umgibe wokuqiqa oza kuqhushumba kwiiveki ezintathu kamva. Kwisifundo 4, xa abafundi becelwa ukuba bakhe indawo yokuwela yabahambi ngeenyawo (ukuqhwanyaza isibane kunye nokubona ukucofwa kweqhosha) okanye i-rover ephepha imiqobo (ukujikelezisa iimotholo kunye nokufunda umgama), ikhowudi yabo iyawa phantsi.

Umfundi ubhala i-loop ejonga iqhosha lokucofa, ilayite i-buzzer, ize ibize i-delay(1000). Xa becofa iqhosha, ibhodi idla ngokubangxengxezelela. Kutheni kunjalo? Kungenxa yokuba iprosesa ibixakeke kukubala i-cycles ezingasebenziyo ngaphakathi kokulibaziseka. Umnwe womntu ucofe waza wakhulula iqhosha ngelo xesha le-99% yomjikelo we-loop apho i-chip ibilele ngendlela esebenzayo.

Kwi-ATmega328P enesantya se-16 MHz, ukubiza i-delay(1000) kumoshisa i-16 lezigidi zee-clock cycles kusenziwa imiyalelo ye-assembly engenanto. Irobhothi ayenzi izinto ezininzi ngaxeshanye (multitasking); ixhakeme kwaye imisiwe.

Imodeli Yengqondo Yewotshi Yesandla

Ngaphambi kokubonisa abafundi ikhowudi, basuse ezikrinini zabo ngomboniso wemizuzu emihlanu. Cela ivolontiya ukuba lenze umsebenzi: “Qhwaba izandla zakho rhoqo emva kwemizuzwana emithathu, kodwa ukuba ndiwisa le peni, yibambe ngaphambi kokuba ifikelele phantsi.”

Okokuqala, benze baxelise i-delay(): baxelele ukuba ukuze babale imizuzwana emithathu, kufuneka bavale amehlo abo baze babale ngaphakathi engqondweni ukuya kwisithathu. Yiwise ipeni kumzuzwana wesibini. Baza kusilela ngalo lonke ixesha. Ii-sensor zabo bezivaliwe ngelixa bebala ixesha.

Emva koko, banike imodeli engathinteliyo (non-blocking model): baxelele ukuba bagcine amehlo abo evuleke kakhulu, bajonge iwotshi eseludongeni lweklasi (okanye iwotshi yesandla yedijithali), kwaye baqhubeke bejonge isandla sakho. Bajonga ixesha: ukuba sekudlule imizuzwana emithathu ukusukela ekuqhwabeni kwabo kokugqibela, bakhwaba izandla. Ukuba ipeni iyawa, basabela ngoko nangoko.

Oku kutshintsha uluvo lokubala ixesha ukusuka kwisenzo (“linda imizuzwana emibini”) ukuya kuthelekiso (“ngaba ixesha elaneleyo selidlulile na?”).

Ipateni Engundoqo: Imibuzo Emithathu

Yakuba iqondakele kubafundi iwotshi eseludongeni, yazisa i-millis(). Cacisa ukuba i-millis() yiwotshi yangaphakathi yokumisa ixesha (stopwatch) eqale ukubala kanye ngaloo millisecond i-Arduino ixhunywe ngayo kumbane. Ayiphumli, kwaye ayisoze iyimise ikhowudi.

Isiganeko ngasinye esingathinteliyo sinokuncitshiswa sibe yimibuzo emithathu ngolwimi olucacileyo ngaphakathi kwi-loop eqhubekayo:

  • Ngubani ixesha kanye ngoku? (Funda i-stopwatch: currentTime = millis())
  • Ugqibele nini ukwenza esi senzo? (Jonga inowuthi egciniweyo: previousTime)
  • Ngaba elo xesha lifunekayo selidlulile? (Yenza uthatho: currentTime - previousTime >= interval)

Ukuba impendulo kumbuzo wesithathu ngu-ewe, yenza isenzo uze uhlaziye inowuthi: seta previousTime = currentTime. Ukuba impendulo ngu-hayi, tsiba isenzo uze uqhubele phambili ngoko nangoko. Ngenxa yokuba i-loop igqiba ngeqhezu le-millisecond, ibhodi ikhululekile ukuba ifunde ii-ultrasonic sensors, ijonge ii-limit switches, kwaye ihlole ii-line-trackers amakhulu ngamawaka amatyeli ngomzuzwana ngamnye.

Ukufundisa i-Syntax Ngaphandle Kokongamela Abaqalayo

Kubafundi beBanga lesi-7 nelesi-8, i-boilerplate ye-C++ ejikeleze i-unsigned long idla ngokudala umthwalo onzima wokuqonda. Ezikolweni ezisebenza ngaphakathi kwikharityhulam ye-Coding and Robotics ye-Senior Phase ebhengeziweyo, abafundi badla ngokusebenza kwiindawo ezisebenzisa iibhloko (block-based) okanye abahleli bekhowudi abaxubileyo (hybrid editors).

Ukuba ufundisa ngeebhloko (ezifana neendawo ze-Arduino ezisekwe kwi-Scratch), ukuguqulela oku kucacile: yazisa ibhloko “yetayima” kunye ne-variable ebizwa ngokuba yi-last_time_checked. Yiphephe ngokupheleleyo ibhloko ethi “wait 1 second” sakuba sifakwe izixhobo zokufaka ulwazi (inputs) ezisisiseko.

Ukuba ufundisa i-Arduino C++ esekwe kumbhalo, musa ukubalahlela umzekelo oqhelekileyo we-BlinkWithoutDelay ezikrinini zabo ngaphandle kokubakhokela kancinci (scaffolding). Umzekelo osemthethweni we-Arduino udibanisa iingcamango ezimbini ezahlukeneyo ngaxeshanye: ukubala ixesha okungathinteliyo (non-blocking timing) kunye nokutshintsha ubume (state toggling, oko kukuthi ukuguqula i-variable yobume be-LED). Yiyo le nto abantwana bedideka.

Yahlula ukujongwa kwexesha kwi-logic. Sebenzisa olu luhlu endaweni yoko:

  1. Bonisa ukusilela: Benze baqhube ukuqhwanyaza kwe-LED besebenzisa i-delay() ngelixa bezama ukucofa iqhosha lokumisa likaxakeka. Bukela ukudideka nokukhathazeka xa iqhosha lisilela ukusabela.
  2. Yazisa i-variable yetayima: Babonise indlela yokuprinta i-millis() kwi-Serial Monitor ukuze babone amanani enyuka ngokuqhubekayo. Oku kususa ubunzima kulo msebenzi—ufana nje ne-odometer yexesha.
  3. Bhala i-wrapper ebalelwe ixesha: Bonelele ngetemplate enenkxaso apho i-logic yokuthatha yohlulwe kwindlela eziphatha ngayo irobhothi.
IndlelaUbume beProsesaUkusabela kwe-SensorUkulungela
delay(1000)Imisiwe kwi-busy-wait loopIyimfama ngokupheleleyo ngexesha lokulibazisekaIimboniso zomsebenzi omnye, intshayelelo yeBanga 4–6
Uthelekiso lwe-millis()Ibaleka ngokukhululekileyo ngesantya esipheleleyo seklokoKwangoko (sub-millisecond polling)Irobhothiki, ii-rover, iinkqubo ezisebenzisanayo

Ukwenza Oku Kuhlale kwiiProjekthi zaseKlasi

Xa abafundi besuka kwii-rover eziqhuba ziziimfama besiya kwii-rover ezihlola ii-sensor ngokuqhubekayo, amava abo okulungisa iimpazamo zekhowudi (debugging) ayaguquka. Endaweni yokuzibuza ukuba kutheni i-bumper switch isilele ukumisa i-DC motor, banokulandelela ukusebenza kwekhowudi ngokucacileyo.

Ukuba isikolo sakho siququzelela ukuhambela phambili kwamathemu amaninzi ukusuka kwi-logic yeebhloko ukuya kwirobhothiki ebambekayo, ukuba neendlela zokufundisa ezilungelelanisiweyo kunye nezixhobo zekhompyutha eziqinisekisiweyo kususa uqashiso. Iqela lethu e-Sheen Robotics for Schools lisebenzisana nabatitshala ukulungelelanisa ezi ngcamango zeenkqubo ezincanyathiselweyo (embedded systems) namaxesha eklasi, ukuqinisekisa ukuba abafundi bakha iimodeli zengqondo ezithembekileyo ngaphambi kokuba iziqhelo ezimbi zokubhala ikhowudi zingenelele.

Xa umfundi eqonda ukuba ikhompyutha akufuneki ihlale ivale amehlo ibala imizuzwana, baye babe bawile umda ukusuka ekubalekiseni nje izikripthi ukuya ekubhaleni isoftware esabelayo, yenyani yehlabathi.

#arduino#imfundo yerobhothiki#ukubhala ikhowudi#i-pedagogy#stem

Okungakumbi kwe-Iimbono Nezifundo