Bincika Lambar

Darasi na 14/31-3: Misalin coding na Arduino millis() na 3 tare da maɓallin turawa

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.

Motar Sunfounder da aka haɗa

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 zuwa 5000, 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 a 0 kuma ana sabunta shi zuwa ƙimar millis() 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

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

Hotuna

Sunfounder car assembled
Sunfounder car assembled
Sunfounder car assembled
Sunfounder car assembled
918-Lesson 14/31-3: Arduino coding millis() example 3 with push button
Harshe: C++
/*
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");
      }
  }
  
}

Albarkatun da kuma shafukan da za a duba

Fayiloli📁

Jagoran Mai Amfani