કોડ શોધો

પાઠ 14/31-3: Arduino કોડિંગ millis() ઉદાહરણ 3 પુશ બટન સાથે

પાઠ 14/31-3: Arduino કોડિંગ millis() ઉદાહરણ 3 પુશ બટન સાથે

સનફાઉન્ડર કાર એસેમ્બલ

આ રીતે 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 સમય કરતાં વધારે અથવા બરાબર હોય, તો તે ક્રિયા કરે છે—આ કિસ્સામાં, સીરિયલ મોનિટર પર સંદેશ છાપે છે.

લાઇવ પ્રોજેક્ટ પ્રદર્શન

વિડિયોમાં, કોડ Arduino પર અપલોડ કરવામાં આવે છે, અને વર્તનનું અવલોકન કરવા માટે સીરિયલ મોનિટર ખોલવામાં આવે છે. (વિડિયોમાં 16:03 પર) તમે millis() મૂલ્ય સતત છાપતું જોશો, જે પ્રોગ્રામ શરૂ થયા પછીનો સમય દર્શાવે છે. જ્યારે તમે બટનને પ્રથમ વખત દબાવો છો, ત્યારે First push at:5019 જેવો સંદેશ છાપવામાં આવે છે. જો તમે બટનને ફરીથી દબાવો અને પ્રથમ દબાવવાથી 5 સેકન્ડથી વધુ સમય સુધી દબાવી રાખો, તો Action after 5 seconds of first push સંદેશ છાપવામાં આવે છે. આ દર્શાવે છે કે ક્રિયા ફક્ત ત્યારે જ ટ્રિગર થાય છે જ્યારે નિર્દિષ્ટ વિલંબ પસાર થયા પછી બીજું દબાવવું થાય.

આ અભિગમની શક્તિ એ છે કે લૂપની ટોચ પરની Serial.println(millis()) લાઇન વિક્ષેપ વિના ચાલુ રહે છે, જે સાબિત કરે છે કે સમય તર્ક અન્ય કોડને અમલમાં આવતા અટકાવતું નથી. આ delay() ફંક્શન કરતાં millis() નો ઉપયોગ કરવાનો મૂળભૂત ફાયદો છે.

આ વિડિયોના સંબંધિત પ્રોજેક્ટ્સ

પ્રકરણો

  • [00:00] મિલિસ() અને કોર્સનો પરિચય
  • [01:19] મિલિસ() શું છે અને તેનો ઉપયોગ કેમ કરવો?
  • [03:06] પ્રથમ વ્યવહારુ ઉદાહરણ: મિલિસ() છાપવું
  • [05:46] 5 સેકન્ડ પછી ઇવેન્ટ ટ્રિગર કરવા મિલિસ() નો ઉપયોગ
  • [08:29] ઉદાહરણ 2: 5-સેકન્ડ વિલંબ સાથે પુશ બટન ક્રિયા
  • [12:14] ઉદાહરણ 3: વિલંબ પછી બીજા બટન દબાવવાનું શોધવું
  • [17:20] મેપ() ફંક્શનનો પરિચય
  • [19:47] એલઇડી તેજ ટકાવારી મેપિંગનું વ્યવહારુ ઉદાહરણ

છબીઓ

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
ભાષા: 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");
      }
  }
  
}

સંસાધનો અને સંદર્ભો

ફાઇલો📁

વપરાશકર્તાનું માર્ગદર્શિકા