குறியீட்டை தேடு

பாடம் 14/31-2: Arduino குறியீட்டு millis() எடுத்துக்காட்டு 2 நிகழ்வுடன்

பாடம் 14/31-2: Arduino குறியீட்டு millis() எடுத்துக்காட்டு 2 நிகழ்வுடன்

இந்த டுடோரியலில், Arduino millis() செயல்பாட்டை எவ்வாறு பயன்படுத்துவது என்பதை நீங்கள் கற்றுக்கொள்வீர்கள், இது ஒரு குறிப்பிட்ட காலம் கடந்த பிறகே ஒரு செயலைத் தூண்டுவதற்காக, உங்கள் நிரலின் மற்ற பகுதியைத் தடுக்காமல். இது பதிலளிக்கக்கூடிய Arduino திட்டங்களை உருவாக்குவதற்கான ஒரு அடிப்படை நுட்பமாகும், அங்கு பல பணிகள் ஒரே நேரத்தில் இயங்க வேண்டும், அதாவது சென்சார்களைப் படிக்கும்போது அல்லது பொத்தான் அழுத்தங்களைக் கண்காணிக்கும்போது LED களை ஒளிரச் செய்வது போன்றவை. இந்த குறிப்பிட்ட எடுத்துக்காட்டு ஐந்து வினாடிகளுக்குப் பிறகு ஒரு நிகழ்வைத் தூண்டுவதில் கவனம் செலுத்துகிறது, ஆனால் இந்த தர்க்கத்தை எண்ணற்ற நிஜ உலக சூழ்நிலைகளுக்குப் பயன்படுத்தலாம்.

சன்ஃபவுண்டர் கார் கூடியது

உங்கள் சொந்த திட்டங்களில் இந்த முறையை நீங்கள் எவ்வாறு பயன்படுத்தலாம் என்பதற்கான சில நடைமுறை எடுத்துக்காட்டுகள் இங்கே:

  • தாமதமான செயல்படுத்தல்: ஒரு அமைப்பு ஒரு குறிப்பிட்ட நேரத்திற்கு இயங்கிய பிறகே விசிறி அல்லது பம்பை இயக்கவும்.
  • பாதுகாப்பு இடைப்பூட்டல்கள்: ஒரு ஆபத்தான செயலைச் செய்வதற்கு முன், ஒரு மோட்டாரைத் தொடங்குவது போன்றவற்றுக்கு, ஒரு பொத்தானை அழுத்தி ஒரு கால அளவிற்கு வைத்திருக்க வேண்டும்.
  • நேர அடிப்படையிலான எச்சரிக்கைகள்: ஒரு சென்சார் வாசிப்பு ஒரு குறிப்பிட்ட சாளரத்திற்குள் மாறவில்லை என்றால் ஒரு அலாரம் அல்லது அறிவிப்பைத் தூண்டவும்.
  • தடுக்காத டைமர்கள்: ஒரு சாதனம் பதிலளிக்காமல் இருந்தால் அதை மீட்டமைக்கும் "வாட்ச்டாக்" டைமரை உருவாக்கவும்.

இது தீர்க்கும் முக்கிய பிரச்சனை delay() செயல்பாட்டின் வரம்பு ஆகும். நீங்கள் delay(5000) ஐப் பயன்படுத்தும்போது, Arduino அந்த ஐந்து வினாடிகளுக்கு வேறு எந்த குறியீட்டையும் இயக்குவதை நிறுத்துகிறது. எளிய ஸ்கெட்ச்களுக்கு இது நல்லது, ஆனால் காத்திருக்கும்போது சென்சார்களைப் படிக்க, காட்சிகளைப் புதுப்பிக்க அல்லது பொத்தான் அழுத்தங்களைக் கேட்க வேண்டிய சிக்கலான திட்டங்களில் இது ஒரு பெரிய பிரச்சனையாக மாறும். பலகை இயக்கப்பட்டதிலிருந்து மில்லி விநாடிகளை எண்ணும் millis() செயல்பாடு, நிரலை இடைநிறுத்தாமல் நேரத்தைச் சரிபார்க்க உங்களை அனுமதிக்கிறது.

தேவையான வன்பொருள்

  • Arduino பலகை (Uno, Nano, Mega, போன்றவை)
  • ஒரு புஷ் பொத்தான்
  • ஜம்பர் கம்பிகள்

வயரிங் வழிகாட்டி

இந்த எடுத்துக்காட்டுக்கான வயரிங் மிகவும் எளிது. இது ஒரு உள் புல்-அப் மின்தடையத்தைப் பயன்படுத்துகிறது, எனவே பொத்தானுக்கு வெளிப்புற மின்தடையம் தேவையில்லை.

  • புஷ் பொத்தானின் ஒரு காலை Arduino இல் உள்ள GND பின்னுடன் இணைக்கவும்.
  • புஷ் பொத்தானின் மற்ற காலை Arduino இல் உள்ள டிஜிட்டல் பின் 2 உடன் இணைக்கவும்.

குறியீட்டில் INPUT_PULLUP ஐப் பயன்படுத்துவதால், பொத்தான் அழுத்தப்படாதபோது பின் HIGH ஐயும், அழுத்தப்படும்போது LOW ஐயும் படிக்கும், பின்னை தரையுடன் இணைக்கும். (வீடியோவில் 08:29 இல்)

குறியீட்டைப் புரிந்துகொள்வது

இந்த குறியீடு ஒரு எளிய நிகழ்வு அடிப்படையிலான டைமரை நிரூபிக்கிறது. நிரல் தொடர்ந்து தற்போதைய millis() மதிப்பை சீரியல் மானிட்டருக்கு அச்சிடுகிறது. புஷ் பொத்தான் அழுத்தப்பட்டு வைத்திருக்கும்போது, மற்றும் Arduino குறைந்தது 5 வினாடிகளுக்கு இயங்கிக்கொண்டிருந்தால், அது "Take action" ஐ சீரியல் மானிட்டருக்கு அச்சிடும். முக்கிய விஷயம் என்னவென்றால், millis() சரிபார்ப்பு நேரத்தின் தொடர்ச்சியான அச்சிடலை நிறுத்தாது.

குறியீட்டின் பயனர்-கட்டமைக்கக்கூடிய பகுதிகளைப் பார்ப்போம்:

unsigned long event = 5000;// 5 வினாடிகள்

இது கட்டமைக்க மிக முக்கியமான மாறி. இது உங்கள் "நிகழ்வின்" கால அளவை மில்லி விநாடிகளில் வரையறுக்கிறது. இந்த எடுத்துக்காட்டில், இது 5000 ஆக அமைக்கப்பட்டுள்ளது, இது 5 வினாடிகளுக்கு சமம். தாமதத்தை மாற்ற, இந்த எண்ணை மாற்றவும். எடுத்துக்காட்டாக, அதை 10000 ஆக அமைப்பது 10 வினாடிகளுக்குப் பிறகு செயலைத் தூண்டும். unsigned long தரவு வகையைப் பயன்படுத்துவது மிக முக்கியம், ஏனெனில் millis() இன் மதிப்பு மிகப் பெரியதாக வளரக்கூடியது மற்றும் இறுதியில் ஒரு நிலையான int மாறியின் அதிகபட்ச மதிப்பை மீறும், இது ஒப்பீட்டில் பிழைகளை ஏற்படுத்தும். (வீடியோவில் 05:46 இல்)

pinMode(2,INPUT_PULLUP);

இந்த வரி டிஜிட்டல் பின் 2 ஐ உள்ளீடாக உள்ளமைத்து அதன் உள் புல்-அப் மின்தடையத்தை செயல்படுத்துகிறது. வெளிப்புற மின்தடையம் இல்லாமல் ஒரு பொத்தானை இணைக்க உங்களை அனுமதிக்கும் ஒரு முக்கிய உள்ளமைவு படியாகும். பின் இயல்பாக HIGH ஐப் படிக்கும், மேலும் பொத்தான் அழுத்தப்படும்போது LOW ஆகிவிடும், அதை தரையுடன் இணைக்கும். நீங்கள் வேறு பின்னைப் பயன்படுத்த விரும்பினால், இங்கே 2 என்ற எண்ணையும், லூப்பிற்குள் உள்ள digitalRead(2) வரியிலும் மாற்றவும். (வீடியோவில் 08:46 இல்)

loop() க்குள் உள்ள தர்க்கம் நேரடியானது. இது பொத்தானின் நிலையைப் படிக்கிறது. பொத்தான் அழுத்தப்பட்டால் (pb == LOW), அது தற்போதைய நேரம் (millis()) உங்கள் வரையறுக்கப்பட்ட event நேரத்தை விட அதிகமாகவோ அல்லது சமமாகவோ உள்ளதா என்பதைச் சரிபார்க்கிறது. இரண்டு நிபந்தனைகளும் உண்மையாக இருந்தால், அது செயல் செய்தியை அச்சிடுகிறது. லூப்பின் மீதமுள்ள பகுதி, நேரத்தை அச்சிடும், தடையின்றி தொடர்ந்து இயங்குகிறது, இது delay() ஐ விட millis() இன் சக்தியை நிரூபிக்கிறது.

இந்த எடுத்துக்காட்டு Arduino தொடங்கிய தருணத்திலிருந்து நேரத்தைச் சரிபார்க்கிறது. வீடியோ தொடரில் உள்ள மூன்றாவது எடுத்துக்காட்டு, முதல் பொத்தான் அழுத்தத்தின் நேரத்தைப் பதிவுசெய்து, குறைந்தது 5 வினாடிகளுக்குப் பிறகு இரண்டாவது அழுத்தம் ஏற்பட்டால் மட்டுமே ஒரு செயலைத் தூண்டுவதன் மூலம் இதை உருவாக்குகிறது. அந்த தர்க்கம் பாடம் 14/31-3: Arduino coding millis() example 3 with push button இல் உள்ளடக்கப்பட்டுள்ளது.

நேரடி திட்ட ஆர்ப்பாட்டம்

நீங்கள் குறியீட்டைப் பதிவேற்றி சீரியல் மானிட்டரை (9600 பாடில்) திறந்தவுடன், பலகை இயக்கப்பட்டதிலிருந்து மில்லி விநாடிகளைக் குறிக்கும் எண்களின் தொடர்ச்சியான ஸ்ட்ரீமைக் காண்பீர்கள். 5 வினாடிகள் கடக்கும் முன் புஷ் பொத்தானை அழுத்திப் பிடித்தால், எதுவும் நடக்காது. இருப்பினும், 5 வினாடி குறியைத் தாண்டிய பிறகு பொத்தானை அழுத்திப் பிடித்தால், சீரியல் மானிட்டரில் "Take action" என்ற செய்தி அச்சிடப்படுவதைக் காண்பீர்கள். பொத்தானைப் பிடித்திருக்கும் வரை செயல் தொடர்ந்து அச்சிடப்படும். இது மற்ற குறியீடு (அச்சிடுதல்) தடையின்றி இயங்க அனுமதிக்கும் ஒரு தடுக்காத டைமரை நிரூபிக்கிறது. (வீடியோவில் 10:52 இல்)

இந்த வீடியோவுடன் தொடர்புடைய திட்டங்கள்

இந்த வீடியோ Arduino நேரம் மற்றும் வரைபட செயல்பாடுகள் குறித்த பல பகுதி தொடரின் ஒரு பகுதியாகும். இதே மூலப் பொருளிலிருந்து உருவாக்கப்பட்ட மற்ற பயிற்சிகளை ஆராயுங்கள்:

அத்தியாயங்கள்

  • [00:00] millis() மற்றும் SunFounder கிட் அறிமுகம்
  • [01:19] millis() என்றால் என்ன, ஏன் delay() க்கு பதிலாக இதைப் பயன்படுத்த வேண்டும்?
  • [03:06] நடைமுறை ஆர்ப்பாட்டம்: millis() மதிப்பை அச்சிடுதல்
  • [05:46] millis() மற்றும் unsigned long உடன் ஒரு நிகழ்வை உருவாக்குதல்
  • [08:29] INPUT_PULLUP உடன் புஷ் பொத்தானை இணைத்து குறியீடு எழுதுதல்
  • [10:52] புஷ் பொத்தானுடன் நிகழ்வு எடுத்துக்காட்டை இயக்குதல்
  • [12:14] எடுத்துக்காட்டு 3 இன் முன்னோட்டம்: இரண்டாவது பொத்தான் அழுத்தத்தை கண்டறிதல்
  • [17:20] map() செயல்பாட்டின் அறிமுகம்
  • [19:47] LED உடன் map() செயல்பாட்டை குறியீடு செய்து ஆர்ப்பாட்டம் செய்தல்

படங்கள்

Sunfounder car assembled
Sunfounder car assembled
Sunfounder car assembled
Sunfounder car assembled
917-Lesson 14/31-2: Arduino coding millis() example 2 with event
மொழி: 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

நீங்கள் தேவைப்படும் எண்ணங்கள்

வளங்கள் மற்றும் மேற்கோள்கள்

கோப்புகள்📁

பயனர் கையேடு