Bincika Lambar

Darasi na 14/31-2: Misali na coding na Arduino millis() 2 tare da taron

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.

Motar Sunfounder da aka haɗa

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:

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

Hotuna

Sunfounder car assembled
Sunfounder car assembled
Sunfounder car assembled
Sunfounder car assembled
917-Lesson 14/31-2: Arduino coding millis() example 2 with event
Harshe: C++
/*
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

Albarkatun da kuma shafukan da za a duba

Fayiloli📁

Jagoran Mai Amfani