பாடம் 14/31-3: Arduino குறியீட்டு millis() எடுத்துக்காட்டு 3 புஷ் பொத்தானுடன்
உங்கள் Arduino ஒரு நிகழ்வு எப்போது நடந்தது என்பதை—பொத்தான் அழுத்தம் போன்றவை—நினைவில் வைத்து, பின்னர் ஒரு குறிப்பிட்ட நேரத்திற்குப் பிறகு செயலைச் செய்ய வேண்டுமா, அதே நேரத்தில் உங்கள் நிரலின் மற்ற பகுதிகள் சீராக இயங்குமாறு பார்த்துக்கொள்ள வேண்டுமா? இது Arduino நிரலாக்கத்தில் ஒரு பாரம்பரிய சவால், மற்றும் தீர்வுmillis() செயல்பாடு ஆகும். இந்த டுடோரியல், Robojax Arduino பாடத்தின் ஒரு பகுதியாக, ஒரு நடைமுறை உதாரணத்தை நிரூபிக்கிறது: முதல் அழுத்தத்திற்குப் பிறகு 5 வினாடி தாமதம் கடந்த பிறகு, ஒரு புஷ் பொத்தான் இரண்டாவது முறை அழுத்தப்பட்டதா என்பதைக் கண்டறிதல். இந்த நுட்பம், நேரம் முக்கியமான இடங்களில் பதிலளிக்கக்கூடிய, தடுக்காத திட்டங்களை உருவாக்குவதற்கான அடிப்படையாகும்.
நிரலை நிறுத்தாமல் நேரத்தைக் கண்காணிக்க millis() ஐப் பயன்படுத்தும் இந்த முறை, பரந்த அளவிலான நிஜ உலக பயன்பாடுகளுக்கு அவசியம். உங்கள் சொந்த திட்டங்களுக்கு ஊக்கமளிக்க சில யோசனைகள் இங்கே:
- டிபவுன்ஸ் செய்யப்பட்ட பொத்தான் இடைமுகங்கள்: ஒரு சாதனத்தை இயக்க, ஒரு பொத்தானை ஒரு குறிப்பிட்ட கால அளவு (எ.கா., 3 வினாடிகள்) அழுத்தி வைத்திருக்க வேண்டிய ஒரு அமைப்பை செயல்படுத்தவும், தற்செயலான அழுத்தங்களைத் தடுக்கவும்.
- வரிசைமுறை செயல்கள்: ஒரு நிகழ்வு, மோஷன் சென்சார் தூண்டுதல் போன்றவை, ஒரு குறிப்பிட்ட நேர சாளரத்தில் மற்றொரு நிகழ்வு நடந்தால் மட்டுமே ஏற்படும் ஒரு இரண்டாம் நிலை செயலை ஆயுதமாக்கும் ஒரு அமைப்பை உருவாக்கவும்.
- பயனர் தொடர்பு டைமர்கள்: ஒரு கட்டளை அனுப்புதல் அல்லது மோட்டாரைத் தொடங்குதல் போன்ற ஒரு முக்கிய செயல்பாட்டை இயக்க, ஒரு குறிப்பிட்ட நேரத்திற்குள் "உறுதிப்படுத்தல்" உள்ளீடு (இரண்டாவது பொத்தான் அழுத்தம் போன்றவை) தேவைப்படும் ஒரு திட்டத்தை உருவாக்கவும்.
- சென்சார் கேட்டிங்: ஒரு சென்சாரிலிருந்து முதல் சிக்னலைப் பயன்படுத்தி ஒரு நேர சாளரத்தைத் தொடங்கவும், அந்த நேரத்தில் இரண்டாவது, வேறுபட்ட சென்சாரின் வாசிப்பு செல்லுபடியாகும் அல்லது புறக்கணிக்கப்படும்.
தேவையான வன்பொருள்
இந்த திட்டம் SunFounder 3-in-1 Arduino கிட்டில் இருந்து கூறுகளைப் பயன்படுத்துகிறது, இது கற்றலுக்கு ஒரு சிறந்த ஆதாரமாகும். உங்களுக்கு தேவைப்படும்:
- Arduino பலகை (Uno, Nano, போன்றவை)
- ஒரு தற்காலிக புஷ் பொத்தான்
- ஜம்பர் கம்பிகள்
வயரிங் வழிகாட்டி
இந்த உதாரணத்திற்கான வயரிங் மிகவும் எளிது, Arduino இன் உள் புல்-அப் மின்தடையங்களுக்கு நன்றி, இது வெளிப்புற மின்தடையத்தின் தேவையை நீக்குகிறது. (வீடியோவில் 08:29 இல்)
- புஷ் பொத்தானின் ஒரு காலை Arduino இன் GND பின்னுடன் இணைக்கவும்.
- புஷ் பொத்தானின் மற்ற காலை Arduino இன் டிஜிட்டல் பின் 2 உடன் இணைக்கவும்.
INPUT_PULLUP ஐப் பயன்படுத்துவதன் மூலம், பின் உள்நாட்டில் 5V உடன் இணைக்கப்படுகிறது, எனவே இது பொதுவாக HIGH ஐப் படிக்கிறது. பொத்தான் அழுத்தப்படும்போது, அது பின்னை GND உடன் இணைக்கிறது, இதனால் அது LOW ஐப் படிக்கிறது. இது நாம் குறியீட்டில் பயன்படுத்தும் தர்க்கம்.
குறியீடு விளக்கம்
இந்த திட்டத்தின் மையமானது, முதல் பொத்தான் அழுத்தத்தைக் கண்காணித்து, பின்னர் ஒரு குறிப்பிட்ட நேர இடைவெளிக்குப் பிறகு இரண்டாவது அழுத்தத்தைச் சரிபார்க்கும் தர்க்கம் ஆகும். குறியீடு தடுக்காத வகையில் வடிவமைக்கப்பட்டுள்ளது, அதாவது இது உங்கள் loop() இல் மற்ற பணிகளின் செயல்பாட்டை நிறுத்தாது.
ஸ்கெட்ச்சின் மேற்புறத்தில், நேர நடத்தையைக் கட்டுப்படுத்தும் முக்கிய பயனர்-கட்டமைக்கக்கூடிய மாறிகள் காணலாம்:
unsigned long event = 5000;// 5 வினாடிகள்
unsigned long buttonPushed =0;
event: இது முக்கியமான நேர மாறி. இது மில்லி விநாடிகளில் தாமத கால அளவை அமைக்கிறது. இந்த உதாரணத்தில், இது5000ஆக அமைக்கப்பட்டுள்ளது, இது 5 வினாடிகளுக்கு சமம். உங்கள் திட்டத்தின் தேவைகளுக்கு ஏற்ப இந்த மதிப்பை வேறு எந்த கால அளவிற்கும் மாற்றலாம்.buttonPushed: இந்த மாறி ஒரு கொடி மற்றும் நேர முத்திரையாகப் பயன்படுத்தப்படுகிறது. இது0இல் தொடங்குகிறது மற்றும் பொத்தான் முதல் முறை அழுத்தப்படும்போதுmillis()இன் மதிப்பிற்கு புதுப்பிக்கப்படுகிறது. இந்த சேமிக்கப்பட்ட நேரம் பின்னர் இரண்டாவது அழுத்த சரிபார்ப்புக்கான வேறுபாட்டைக் கணக்கிடப் பயன்படுகிறது.
loop() செயல்பாட்டில் உள்ள தர்க்கம் இரண்டு நிலைகளில் செயல்படுகிறது. முதலில், இது பொத்தானின் நிலையைப் படிக்கிறது, மேலும் அது முதல் முறை அழுத்தப்பட்டால் (pb == LOW && buttonPushed == 0), அது millis() மூலம் தற்போதைய நேரத்தை buttonPushed மாறியில் பதிவு செய்கிறது. இரண்டாவது நிலை, பொத்தான் இன்னும் அழுத்தப்பட்டுள்ளதா மற்றும் முதல் அழுத்தம் பதிவு செய்யப்பட்டுள்ளதா என்பதைச் சரிபார்க்கிறது. அப்படியானால், அது தற்போதைய நேரத்திற்கும் முதல் அழுத்த நேரத்திற்கும் இடையிலான நேர வேறுபாட்டைக் கணக்கிடுகிறது. இந்த வேறுபாடு உங்கள் event நேரத்தை விட அதிகமாகவோ அல்லது சமமாகவோ இருந்தால், அது செயலைச் செய்கிறது—இந்த விஷயத்தில், Serial Monitor க்கு ஒரு செய்தியை அச்சிடுகிறது.
நேரடி திட்ட ஆர்ப்பாட்டம்
வீடியோவில், குறியீடு Arduino க்கு பதிவேற்றப்படுகிறது, மேலும் நடத்தையைக் கவனிக்க Serial Monitor திறக்கப்படுகிறது. (வீடியோவில் 16:03 இல்) millis() மதிப்பு தொடர்ந்து அச்சிடப்படுவதை நீங்கள் காண்பீர்கள், இது நிரல் தொடங்கியதிலிருந்து நேரத்தைக் காட்டுகிறது. நீங்கள் பொத்தானை முதல் முறை அழுத்தும்போது, First push at:5019 போன்ற ஒரு செய்தி அச்சிடப்படுகிறது. முதல் அழுத்தத்திலிருந்து 5 வினாடிகளுக்கு மேல் பொத்தானை மீண்டும் அழுத்தி வைத்திருந்தால், Action after 5 seconds of first push என்ற செய்தி அச்சிடப்படுகிறது. குறிப்பிட்ட தாமதம் கடந்த பிறகு இரண்டாவது அழுத்தம் ஏற்படும்போது மட்டுமே செயல் தூண்டப்படுகிறது என்பதை இது நிரூபிக்கிறது.
இந்த அணுகுமுறையின் சக்தி என்னவென்றால், loop இன் மேற்புறத்தில் உள்ள Serial.println(millis()) வரி இடையூறு இல்லாமல் தொடர்ந்து இயங்குகிறது, இது நேர தர்க்கம் மற்ற குறியீட்டை செயல்படுத்துவதைத் தடுக்காது என்பதை நிரூபிக்கிறது. delay() செயல்பாட்டை விட millis() ஐப் பயன்படுத்துவதன் அடிப்படை நன்மை இதுவே.
இந்த வீடியோவிலிருந்து தொடர்புடைய திட்டங்கள்
- பாடம் 14/31-1: Arduino Millis (தாமதம் இல்லை) மற்றும் map செயல்பாடுகள் | SunFounder Robojax
- பாடம் 14/31-2: Arduino coding millis() எடுத்துக்காட்டு 2 நிகழ்வுடன்
- பாடம் 14/31-4: Arduino coding map() எடுத்துக்காட்டு 1
- பாடம் 14/31-5: Arduino coding map() எடுத்துக்காட்டு 2
அத்தியாயங்கள்
- [00:00] millis() மற்றும் பாடநெறி அறிமுகம்
- [01:19] millis() என்றால் என்ன, ஏன் அதைப் பயன்படுத்த வேண்டும்?
- [03:06] முதல் நடைமுறை எடுத்துக்காட்டு: millis() அச்சிடுதல்
- [05:46] 5 வினாடிகளுக்குப் பிறகு ஒரு நிகழ்வைத் தூண்ட millis() பயன்படுத்துதல்
- [08:29] எடுத்துக்காட்டு 2: 5-வினாடி தாமதத்துடன் புஷ் பட்டன் செயல்
- [12:14] எடுத்துக்காட்டு 3: தாமதத்திற்குப் பிறகு இரண்டாவது பட்டன் அழுத்தத்தைக் கண்டறிதல்
- [17:20] map() செயல்பாட்டின் அறிமுகம்
- [19:47] 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");
}
}
}
நீங்கள் தேவைப்படும் எண்ணங்கள்
-
அமேசான்SunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
அமேசான்
-
அமேசான்
-
அமேசான்
-
அமேசான்
வளங்கள் மற்றும் மேற்கோள்கள்
-
ஆவணங்கள்Documentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
வெளியுறுப்புPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
கோப்புகள்📁
பயனர் கையேடு
-
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