Casharka 14/31-3: Arduino coding millis() tusaale 3 oo leh push button
Ma walig doonba u baahnaatay in Arduino-kaagu uu xusuusto goorta ay wax dhaceen—sida riixitaanka badhanka—ka dibna uu tallaabo qaado wakhti sax ah ka dib, inta aad sii wadayso in barnaamijkaagu si habsami leh u shaqeeyo? Tani waa caqabad caadi ah oo ku saabsan barnaamijyada Arduino, xalkuna waa shaqada millis(). Casharkan, oo qayb ka mid ah koorsada Arduino ee Robojax, wuxuu muujinayaa tusaale wax ku ool ah: ogaanshaha haddii badhan la riixo marka labaad ka dib 5 ilbiriqsi oo dib u dhac ah oo laga bilaabo riixitaankii koowaad. Farsamadani waxay aasaas u tahay abuurista mashaariic jawaab celin leh, oo aan xannibayn, halkaas oo wakhtigu muhiim u yahay.
Qaabkan isticmaalka millis() si loo raad raaco wakhtiga iyada oo aan la joojin barnaamijka, ayaa muhiim u ah codsiyo kala duwan oo dhab ah. Halkan waxaa ah fikrado kooban oo kugu dhiirigelin kara mashaariicdaada:
- Isku-xirnaanta Badhannada (Debounced Button Interfaces): Hirgeli nidaam halkaas oo badhan lagu hayo muddo gaar ah (tusaale, 3 ilbiriqsi) si loo shido qalab, taasoo ka hortagaysa riixitaanno shil ah.
- Falalka Isku-xigga (Sequential Actions): Abuur nidaam halkaas oo hal dhacdo, sida kicinta dareemaha dhaqdhaqaaqa, ay diyaariso tallaabo labaad oo dhacda oo keliya haddii dhacdo kale dhacdo gudaha wakhti go'an.
- Wakhtiyada Isdhexgalka Isticmaalaha (User Interaction Timers): Dhis mashruuc u baahan gelin "xaqiijin" (sida riixitaan badhan oo labaad) gudaha wakhti go'an si loo fuliyo shaqo muhiim ah, sida dirista amar ama bilowga matoorka.
- Xakamaynta Dareemaha (Sensor Gating): Isticmaal calaamad koowaad oo ka timid dareeme si aad u bilowdo wakhti, inta lagu jiro kaas oo akhrinta dareeme labaad oo kala duwan loo tixgeliyo inay sax tahay ama la iska indho tiro.
Qalabka Loo Baahan Yahay
Mashruucani wuxuu isticmaalaa qaybo ka mid ah xirmada Arduino ee SunFounder 3-in-1, taas oo ah il khayr leh oo lagu baranayo. Waxaad u baahan doontaa:
- Guddiga Arduino (Uno, Nano, iwm.)
- Badhan riixitaan oo ku meel gaar ah
- Fiilooyinka isku xirka (jumper wires)
Hagaha Xiritaanka
Xiritaanka tusaalahan aad ayuu u fudud yahay, mahadsantahay resistors-ka gudaha ee Arduino ee kor u jiidaya (pull-up), taasoo baabi'ineysa baahida resistor dibadeed. (Fiidiyowga 08:29)
- Ku xir hal lug oo ka mid ah badhanka riixitaanka ee GND pin-ka Arduino.
- Ku xir lugta kale ee badhanka riixitaanka ee pin-ka dhijitaalka ah ee 2 ee Arduino.
Adigoo isticmaalaya INPUT_PULLUP, pin-ka waxaa gudaha loogu xiraa 5V, sidaas darteed wuxuu akhriyaa HIGH si caadi ah. Marka badhanka la riixo, wuxuu ku xiraa pin-ka GND, taasoo keeneysa inuu akhriyo LOW. Tani waa caqliga aan ku isticmaali doonno koodhka.
Sharaxaadda Koodhka
Xudunta mashruucan waa caqliga raad raaca riixitaanka badhanka koowaad ka dibna hubiya riixitaan labaad ka dib muddo gaar ah. Koodhku waxaa loo qaabeeyey inuu noqdo mid aan xannibayn, taasoo la macno ah inuusan joojinayn fulinta hawlo kale oo ku jira loop()-kaaga.
Dusha qoraalka (sketch), waxaad ka heli doontaa doorsoomayaasha muhiimka ah ee isticmaaluhu beddeli karo, kuwaas oo xakameynaya habdhaqanka wakhtiga:
unsigned long event = 5000;// 5 ilbiriqsi
unsigned long buttonPushed =0;
event: Kani waa doorsoome wakhti oo muhiim ah. Wuxuu dejiyaa muddada dib u dhaca ee milliseken. Tusaalahan, waxaa loo dejiyay5000, taas oo u dhiganta 5 ilbiriqsi. Waxaad beddeli kartaa qiimahan si loo waafajiyo baahida mashruucaaga.buttonPushed: Doorsoomahan waxaa loo isticmaalaa calaamad iyo wakhti la xusuusto. Wuxuu ka bilaabmaa0waxaana loo cusboonaysiiyaa qiimahamillis()markii ugu horreysay ee badhanka la riixo. Wakhtigan kaydsan ayaa markaas loo isticmaalaa in lagu xisaabiyo farqiga hubinta riixitaanka labaad.
Caqliga ku jira shaqada loop() wuxuu u shaqeeyaa laba heerar. Marka hore, wuxuu akhriyaa xaaladda badhanka, haddii la riixo markii ugu horreysay (pb == LOW && buttonPushed == 0), wuxuu duubaa wakhtiga hadda jira iyada oo loo marayo millis() gudaha doorsoomaha buttonPushed. Heerka labaad wuxuu hubiyaa haddii badhanka wali la riixayo iyo haddii riixitaan koowaad la duubay. Haddii ay sidaas tahay, wuxuu xisaabiyaa farqiga wakhtiga ee u dhexeeya wakhtiga hadda iyo wakhtiga riixitaanka koowaad. Haddii farqigani uu ka weyn yahay ama la mid yahay wakhtigaaga event, wuxuu fuliyaa tallaabada—kiiskan, daabacaadda farriin ku saabsan Kormeerka Taxanaha (Serial Monitor).
Muuujinta Mashruuca Tooska ah
Fiidiyowga, koodhka waxaa lagu shubaa Arduino, waxaana la furayaa Kormeerka Taxanaha si loo arko habdhaqanka. (Fiidiyowga 16:03) Waxaad arki doontaa qiimaha millis() oo si joogto ah u daabacanaya, isagoo muujinaya wakhtiga tan iyo markii barnaamijku bilaabmay. Markaad riixdo badhanka markii ugu horreysay, farriin sida Riixitaankii koowaad wuxuu ahaa:5019 ayaa la daabacaa. Haddii aad riixdo badhanka mar labaad oo aad hayso in ka badan 5 ilbiriqsi laga bilaabo riixitaankii koowaad, farriinta Tallaabo ka dib 5 ilbiriqsi ee riixitaanka koowaad ayaa la daabacaa. Tani waxay muujineysaa in tallaabada lagu kiciyo oo keliya marka riixitaanka labaad uu dhaco ka dib dib u dhaca go'an ee dhammaaday.
Awoodda habkan ayaa ah in xariiqda Serial.println(millis()) ee dusha loop-ka ay sii socoto iyada oo aan la joojin, taasoo caddaynaysa in caqliga wakhtigu uusan xannibin koodhka kale ee fulinaya. Tani waa faa'iidada aasaasiga ah ee isticmaalka millis() marka loo eego shaqada delay().
Mashaariic la xiriira oo ka yimid fiidiyowgan
- Casharka 14/31-1: Arduino Millis (aan daahin) iyo shaqooyinka map | SunFounder Robojax
- Casharka 14/31-2: Arduino coding millis() tusaale 2 oo leh dhacdo
- Casharka 14/31-4: Arduino coding map() tusaale 1
- Casharka 14/31-5: Arduino coding map() tusaale 2
Cutubyada
- [00:00] Hordhaca millis() iyo koorsada
- [01:19] Waa maxay millis() iyo sababta loo isticmaalo?
- [03:06] Tusaalaha ugu horreeya ee la taaban karo: daabacaadda millis()
- [05:46] Isticmaalka millis() si loo kiciyo dhacdo ka dib 5 ilbiriqsi
- [08:29] Tusaale 2: Ficil badhanka riix oo leh daahin 5 ilbiriqsi ah
- [12:14] Tusaale 3: Ogaanshaha riixista badhanka labaad ka dib daahin
- [17:20] Hordhaca shaqada map()
- [19:47] Tusaale la taaban karo oo ku saabsan qiyaasidda boqolleyda iftiinka 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");
}
}
}
Waad u baahan tahay
-
AmaazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amaazon
-
Amaazon
-
Amaazon
-
Amaazon
Kheyraadka & Tixraacyada
-
DukumentiDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
DibeddaPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Faylasha📁
Buugga Isticmaalaha
-
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