Darasi na 14/31-2: Misali na coding na Arduino millis() 2 tare da taron
A cikin wannan koyawa, za ka koyi yadda ake amfani da aikin Arduino millis() don fara wani aiki kawai bayan wani ƙayyadadden lokaci ya wuce, ba tare da toshe sauran shirinka ba. Wannan dabara ce mai muhimmanci don ƙirƙirar ayyukan Arduino masu amsawa inda ayyuka da yawa ke buƙatar gudana a lokaci guda, kamar kyalkyala LEDs yayin karanta sensors ko kula da latsa maɓallin. Wannan misali na musamman yana mai da hankali kan fara wani abu bayan dakika biyar, amma dabara za a iya amfani da ita a yanayi da yawa na rayuwa.
Ga wasu misalai masu amfani na yadda za ka iya amfani da wannan tsari a cikin ayyukanka:
- Jinkirin kunnawa: Kunna fan ko famfo kawai bayan tsarin ya yi aiki na wani ƙayyadadden lokaci.
- Tsaro na haɗin kai: Bukatar a danna maɓallin kuma a riƙe shi na wani ɗan lokaci kafin yin wani aiki mai haɗari, kamar fara mota.
- Faɗakarwa bisa lokaci: Fara ƙararrawa ko sanarwa idan karatun sensor bai canza ba a cikin wani taga.
- Masu ƙidayar lokaci marasa toshewa: Ƙirƙiri mai ƙidayar lokaci na "watchdog" wanda ke sake saita na'urar idan ta zama mara amsawa.
Matsalar da wannan ke warwarewa ita ce iyakancewar aikin delay(). Lokacin da ka yi amfani da delay(5000), Arduino yana dakatar da aiwatar da kowane lambar code na waɗannan dakika biyar. Wannan yana da kyau ga ƙananan shirye-shirye, amma ya zama babbar matsala a cikin ayyuka masu rikitarwa inda kake buƙatar karanta sensors, sabunta nuni, ko sauraron latsa maɓallin yayin jira. Aikin millis(), wanda ke ƙidaya milliseconds tun lokacin da aka kunna board, yana ba ka damar duba lokaci ba tare da dakatar da shirin ba.
Kayan aikin da ake buƙata
- Arduino board (Uno, Nano, Mega, da sauransu)
- Maɓallin turawa
- Wayoyin haɗi
Jagorar Haɗin Waya
Haɗin waya don wannan misali yana da sauƙi sosai. Yana amfani da resistor na ciki na pull-up, don haka ba a buƙatar resistor na waje don maɓallin.
- Haɗa ƙafa ɗaya na maɓallin turawa zuwa fil ɗin GND akan Arduino.
- Haɗa ɗayan ƙafar maɓallin turawa zuwa fil ɗin dijital 2 akan Arduino.
Domin muna amfani da INPUT_PULLUP a cikin code, fil ɗin zai karanta HIGH lokacin da ba a danna maɓallin ba kuma LOW lokacin da aka danna shi, yana haɗa fil ɗin zuwa ƙasa. (a cikin bidiyo a 08:29)
Fahimtar Code
Wannan code yana nuna mai ƙidayar lokaci mai sauƙi bisa abubuwan da suka faru. Shirin yana ci gaba da buga ƙimar millis() na yanzu zuwa Serial Monitor. Lokacin da aka danna maɓallin kuma aka riƙe shi, kuma Arduino ya yi aiki na akalla dakika 5, zai buga "Take action" zuwa Serial Monitor. Muhimmin abu shine cewa duba millis() baya dakatar da buga lokaci na ci gaba.
Bari mu raba sassan code waɗanda mai amfani zai iya daidaitawa:
unsigned long event = 5000;// 5 seconds
Wannan shine mafi muhimmin canji don daidaitawa. Yana bayyana tsawon "event" ɗinka a milliseconds. A cikin wannan misali, an saita shi zuwa 5000, wanda yake daidai da dakika 5. Don canza jinkirin, kawai canza wannan lambar. Misali, saita shi zuwa 10000 zai sa aikin ya fara bayan dakika 10. Yana da muhimmanci a yi amfani da nau'in bayanai na unsigned long, domin ƙimar millis() na iya girma sosai kuma a ƙarshe zai wuce matsakaicin ƙimar int na yau da kullun, yana haifar da kurakurai a kwatanta. (a cikin bidiyo a 05:46)
pinMode(2,INPUT_PULLUP);
Wannan layin yana saita fil ɗin dijital 2 a matsayin shigarwa kuma yana kunna resistor ɗin ciki na pull-up. Wannan mataki ne mai muhimmanci wanda ke ba ka damar haɗa maɓallin ba tare da resistor na waje ba. Fil ɗin zai karanta HIGH ta tsohuwa kuma zai tafi LOW lokacin da aka danna maɓallin, yana haɗa shi zuwa ƙasa. Idan kana son amfani da wani fil daban, canza lambar 2 a nan da kuma a layin digitalRead(2) a cikin loop. (a cikin bidiyo a 08:46)
Dabara a cikin loop() tana da sauƙi. Yana karanta yanayin maɓallin. Idan an danna maɓallin (pb == LOW), sai ya duba idan lokacin yanzu (millis()) ya fi ko daidai da lokacin event ɗinka. Idan duka sharuɗɗan biyu sun cika, yana buga saƙon aikin. Sauran loop ɗin, wanda ke buga lokaci, yana ci gaba da gudana ba tare da katsewa ba, yana nuna ƙarfin millis() akan delay().
Wannan misali yana duba lokaci tun daga lokacin da Arduino ya fara. Misali na uku a cikin jerin bidiyon yana gina kan wannan ta hanyar rubuta lokacin farko da aka danna maɓallin kuma fara aiki kawai idan an danna na biyu bayan akalla dakika 5. Wannan dabara an rufe ta a Darasi 14/31-3: Arduino coding millis() misali 3 tare da maɓallin turawa.
Nuna Aikin Aiki Kai Tsaye
Da zarar ka loda code ɗin kuma ka buɗe Serial Monitor (a 9600 baud), za ka ga ci gaba na lambobi, wanda ke wakiltar milliseconds tun lokacin da aka kunna board. Idan ka danna kuma ka riƙe maɓallin turawa kafin dakika 5 su wuce, babu abin da zai faru. Duk da haka, idan ka danna kuma ka riƙe maɓallin bayan alamar dakika 5, za ka ga saƙon "Take action" an buga shi a cikin Serial Monitor. Aikin zai ci gaba da bugawa muddin ana riƙe maɓallin. Wannan yana nuna mai ƙidayar lokaci mara toshewa wanda ke ba da damar sauran code (bugawa) ya gudana ba tare da matsala ba. (a cikin bidiyo a 10:52)
Ayyukan da ke da alaƙa daga wannan bidiyo
Wannan bidiyo wani ɓangare ne na jerin darussa da yawa kan ayyukan lokaci da taswira na Arduino. Bincika sauran darussan da aka ƙirƙira daga wannan tushen abu ɗaya:
- Darasi 14/31-1: Arduino Millis (babu jinkiri) da ayyukan map | SunFounder Robojax
- Darasi 14/31-3: Arduino coding millis() misali na 3 tare da maɓallin turawa
- Darasi 14/31-4: Arduino coding map() misali na 1
- Darasi 14/31-5: Arduino coding map() misali na 2
Babuka
- [00:00] Gabatarwa ga millis() da SunFounder Kit
- [01:19] Menene millis() kuma me yasa ake amfani da shi maimakon delay()?
- [03:06] Nunin aiki: buga ƙimar millis()
- [05:46] Ƙirƙirar taron tare da millis() da unsigned long
- [08:29] Haɗawa da coding maɓallin turawa tare da INPUT_PULLUP
- [10:52] Gudanar da misalin taron tare da maɓallin turawa
- [12:14] Duban misali na 3: gano latsa maɓallin na biyu
- [17:20] Gabatarwa ga aikin map()
- [19:47] Coding da nunin aikin map() tare da LED
/*
Lesson 14/31: Arduino coding millis() example 2 with event
Get this code and watch video Download and resource page https://robojax.com/RJT597
YouTube video https://www.youtube.com/watch?v=lqgzQohNiIM
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
unsigned long event = 5000;// 5 seconds
void setup() {
Serial.begin(9600);//initialize serial monitor
Serial.println("Introduction to millis");
pinMode(2,INPUT_PULLUP);
}
void loop() {
// Robojax.com millis() example 1
Serial.println(millis());
int pb = digitalRead(2);// read pin 2
if(pb ==LOW)
{
if(millis() >= event)
{
Serial.println("Take action");
}// if end
}// if end
}// loop end
Abin da zaka iya bukata
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
-
Sauran
Albarkatun da kuma shafukan da za a duba
-
WajePurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Fayiloli📁
Jagoran Mai Amfani
-
SunFounder 3-in-1 Arduino Smart Car assembly manualThis document shows step by step assembly of SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB