Darasi na 14/31-3: Misalin coding na Arduino millis() na 3 tare da maɓallin turawa
Shin ka a taɓa buƙatar Arduino ɗinka ya tuna lokacin da wani abu ya faru—kamar latsa maɓalli—sannan ya ɗauki mataki daidai adadin lokaci daga baya, duk da yake yana kiyaye sauran shirinka yana gudana cikin sauƙi? Wannan ƙalubale ne na yau da kullun a shirye-shiryen Arduino, kuma mafita ita ce aikin millis(). Wannan koyawa, ɓangare na kwas ɗin Robojax Arduino, yana nuna misali mai amfani: gano idan an latsa maɓallin turawa karo na biyu bayan jinkirin daƙiƙa 5 ya wuce tun daga latsa na farko. Wannan dabara tana da muhimmanci don ƙirƙirar ayyuka masu amsawa, marasa toshewa inda lokaci ke da mahimmanci.
Wannan tsarin amfani da millis() don bin lokaci ba tare da dakatar da shirin ba yana da muhimmanci ga fannoni da yawa na aikace-aikace na gaske. Ga wasu ra'ayoyi don ƙarfafa ayyukan ku:
- Maɓallan da aka cire sautin: Aiwatar da tsarin inda dole ne a riƙe maɓalli na wani ɗan lokaci (misali, daƙiƙa 3) don kunna na'urar, yana hana latsawa na bazata.
- Ayyuka masu jeri: Ƙirƙiri tsarin inda wani abu, kamar faɗakarwar firikwensin motsi, ke shirya aiki na biyu wanda ke faruwa kawai idan wani abu ya faru a cikin wani ɗan lokaci.
- Masu ƙidayar lokaci na hulɗar mai amfani: Gina aikin da ke buƙatar shigar da "tabbatarwa" (kamar latsa maɓalli na biyu) a cikin ƙayyadadden lokaci don aiwatar da aiki mai mahimmanci, kamar aika umarni ko fara mota.
- Ƙofar firikwensin: Yi amfani da sigina na farko daga firikwensin don fara taga lokaci, wanda a cikinsa za a ɗauki karatun firikwensin na biyu daban a matsayin ingantacce ko kuma a watsar da shi.
Kayan aikin da ake buƙata
Wannan aikin yana amfani da kayan daga kayan SunFounder 3-in-1 Arduino, wanda ke da kyau don koyo. Za ku buƙaci:
- Allon Arduino (Uno, Nano, da sauransu)
- Maɓallin turawa na ɗan lokaci
- Wayoyin haɗi
Jagorar haɗin waya
Haɗin waya don wannan misali yana da sauƙi sosai, godiya ga resistors na ciki na Arduino, wanda ke kawar da buƙatar resistor na waje. (A cikin bidiyo a 08:29)
- 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.
Ta amfani da INPUT_PULLUP, fil ɗin yana haɗe da 5V a ciki, don haka yana karanta HIGH a al'ada. Lokacin da aka latsa maɓallin, yana haɗa fil ɗin zuwa GND, yana sa ya karanta LOW. Wannan ita ce dabara da za mu yi amfani da ita a cikin lambar.
Bayanin lambar
Jigon wannan aikin shine dabara da ke bin latsa maɓalli na farko sannan ta duba latsa na biyu bayan wani ɗan lokaci. An tsara lambar don zama mara toshewa, ma'ana ba za ta dakatar da aiwatar da wasu ayyuka a cikin loop() ɗinku ba.
A saman sketch ɗin, za ku sami maɓallan masu canzawa waɗanda mai amfani ke iya saita su waɗanda ke sarrafa halayen lokaci:
unsigned long event = 5000;// daƙiƙa 5
unsigned long buttonPushed =0;
event: Wannan shine muhimmin canjin lokaci. Yana saita tsawon jinkiri a millise seconds. A wannan misali, an saita shi zuwa5000, wanda yake daidai da daƙiƙa 5. Kuna iya canza wannan ƙimar zuwa kowane ɗan lokaci don dacewa da buƙatun aikin ku.buttonPushed: Wannan canjin ana amfani dashi azaman tuta da kuma tambarin lokaci. Yana farawa a0kuma ana sabunta shi zuwa ƙimarmillis()a karo na farko da aka latsa maɓallin. Wannan lokacin da aka adana ana amfani dashi don lissafin bambancin don duba latsa na biyu.
Dabarar a cikin aikin loop() tana aiki a matakai biyu. Na farko, yana karanta yanayin maɓallin kuma, idan an latsa shi a karo na farko (pb == LOW && buttonPushed == 0), yana rubuta lokacin yanzu ta hanyar millis() a cikin canjin buttonPushed. Mataki na biyu yana duba idan har yanzu an latsa maɓallin kuma idan an rubuta latsa na farko. Idan haka ne, yana lissafin bambancin lokaci tsakanin lokacin yanzu da lokacin latsa na farko. Idan wannan bambancin ya fi ko daidai da lokacin event ɗinku, yana aiwatar da aikin—a wannan yanayin, buga saƙo zuwa Serial Monitor.
Nuna aikin kai tsaye
A cikin bidiyo, an ɗora lambar zuwa Arduino, kuma an buɗe Serial Monitor don lura da halayen. (A cikin bidiyo a 16:03) Za ku ga ƙimar millis() tana bugawa akai-akai, tana nuna lokacin tun da shirin ya fara. Lokacin da kuka latsa maɓallin a karo na farko, za a buga saƙo kamar First push at:5019. Idan kun latsa maɓallin kuma kun riƙe shi fiye da daƙiƙa 5 daga latsa na farko, za a buga saƙon Action after 5 seconds of first push. Wannan yana nuna cewa ana kunna aikin kawai lokacin da latsa na biyu ya faru bayan jinkirin da aka ƙayyade ya wuce.
Ƙarfin wannan hanyar shine layin Serial.println(millis()) a saman loop ɗin yana ci gaba da gudana ba tare da katsewa ba, yana tabbatar da cewa dabaran lokaci ba ta toshe wasu lambobin daga aiwatarwa ba. Wannan shine babban fa'idar amfani da millis() maimakon aikin delay().
Ayyuka masu alaƙa daga wannan bidiyo
- Darasi na 14/31-1: Arduino Millis (ba jinkiri) da ayyukan map | SunFounder Robojax
- Darasi na 14/31-2: Arduino coding millis() misali na 2 tare da lamari
- Darasi na 14/31-4: Arduino coding map() misali na 1
- Darasi na 14/31-5: Arduino coding map() misali na 2
Babuka
- [00:00] Gabatarwa ga millis() da kwas ɗin
- [01:19] Menene millis() kuma me yasa ake amfani da shi?
- [03:06] Misali na farko na aiki: buga millis()
- [05:46] Amfani da millis() don haifar da lamari bayan daƙiƙa 5
- [08:29] Misali na 2: Aikin maɓallin turaw tare da jinkiri na daƙiƙa 5
- [12:14] Misali na 3: Gano latsa maɓallin na biyu bayan jinkiri
- [17:20] Gabatarwa ga aikin map()
- [19:47] Misali na aiki na yin taswira na kashi na hasken LED
/*
Lesson 14/31: Arduino coding millis() example 3 with push button
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
unsigned long buttonPushed =0;
void setup() {
Serial.begin(9600);//initialize serial monitor
Serial.println("Introduction to millis");
pinMode(2,INPUT_PULLUP);
}
void loop() {
// ilmoFan.com example-2 millis()
Serial.println(millis());
int pb = digitalRead(2);// read pin 2
if(pb ==LOW && buttonPushed ==0)
{
buttonPushed =millis();
Serial.print("First push at:");
Serial.println(buttonPushed);
}
if( pb ==LOW && buttonPushed >0 )
{
unsigned long difference = millis()- buttonPushed;
if( difference >= event)
{
Serial.println("Action after 5 seconds of first push");
}
}
}
Abin da zaka iya bukata
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
Albarkatun da kuma shafukan da za a duba
-
TakarduDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
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