اطلاعیه

Collapse
No announcement yet.

مدت زمان فشرده شدن دکمه

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مدت زمان فشرده شدن دکمه

    سلام
    چطور میتونم مدت زمان یک کلید پل 4 پایه رو تشخیص بدم ؟

    #2
    پاسخ : مدت زمان فشرده شدن دکمه

    با یه میکرو کنترلر و یه ال سی دی کاراکتری میتونی این کارو انجام بدی
    باید برنامه نویسی بدونی
    آرزوی سرافرازی برای ایران عزیز . . .


    دیدگاه


      #3
      پاسخ : مدت زمان فشرده شدن دکمه

      درود ، مثالی از چند حالت فشردن کلید در این لینک اومده . کلید پل ۴ پایه رو متوجه نشدم . اگر پوش باتون منظورتون هست پایه ها دوتا دوتا مشترک هستند ..
      در مثال مذکور ، لحظه فشرده شدن و لحظه رها شدن رو با تابع millis ثبت می*کنه و مقادیر رو از هم کم می*کنه که میشه مدت زمان فشرده بودن کلید .
      روش های زیادی برای این کار هست .

      دیدگاه


        #4
        پاسخ : مدت زمان فشرده شدن دکمه

        ممنون از پاسخ گوییتون منظورم همون برنامه نویسیش بود دقیقا با کدوم تابع یا کدی میشه این زمان رو بدست اورد؟ من هر چی گشتم پیدا نمیکنم میشه تعداد دفعات فشرده شدن رو تشخیص داد ولی زمانش رو پیدا نمیکنم

        دلیل: ادغام دو پست برای جلوگیری از اسپم

        ممنون آقا مسعود عزیز
        یک سوال من قبلا این کد رو وارسی کردم ولی متوجه کارکرد تابع millis نشدم این تابعد در واقع از زمان استارت مدار شروع به شمارش میکنه ؟

        دیدگاه


          #5
          پاسخ : مدت زمان فشرده شدن دکمه

          درود ، دقیقا این یک شمارنده زمان هست از لحظه روشن شدن آردو میشمره و واحد زمان اون میلی ثانیه هست ، بسیار کاربردی هست چون هیچ بار پردازش اضافه ای ندارد
          مثال میزنم که برای شما قابل لمس باشه . این متن دقیقا توضیح چند خط اول مثال موجود در لینک هست ، تطابق بدید متوجه میشوید.

          بررسی کلید که باید چک کنید وضعیت قبلی کلید ، صفر باشه و وضعیت فعلی ، یک . به این معنی که کلید فشرده شده .

          ذخیره میلیس در یک متغیر
          Pushtime=millis();

          بررسی کلید که باید چک کنید وضعیت قبلی کلید ، یک باشه و وضعیت فعلی ، صفر . به این معنی که کلید از حالت فشرده رها شده .

          ذخیره مجدد میلیس در یک متغیر جدید
          Releasetime=millis();

          و حالا کم کردن این دو عدد از هم
          Duration = Releasetime - Pushtime ;

          دیدگاه


            #6
            پاسخ : مدت زمان فشرده شدن دکمه

            نوشته اصلی توسط Masood Ashoori نمایش پست ها
            درود ، دقیقا این یک شمارنده زمان هست از لحظه روشن شدن آردو میشمره و واحد زمان اون میلی ثانیه هست ، بسیار کاربردی هست چون هیچ بار پردازش اضافه ای ندارد
            مثال میزنم که برای شما قابل لمس باشه . این متن دقیقا توضیح چند خط اول مثال موجود در لینک هست ، تطابق بدید متوجه میشوید.

            بررسی کلید که باید چک کنید وضعیت قبلی کلید ، صفر باشه و وضعیت فعلی ، یک . به این معنی که کلید فشرده شده .

            ذخیره میلیس در یک متغیر
            Pushtime=millis();

            بررسی کلید که باید چک کنید وضعیت قبلی کلید ، یک باشه و وضعیت فعلی ، صفر . به این معنی که کلید از حالت فشرده رها شده .

            ذخیره مجدد میلیس در یک متغیر جدید
            Releasetime=millis();

            و حالا کم کردن این دو عدد از هم
            Duration = Releasetime - Pushtime ;

            عالی ممنون ازتون

            دیدگاه


              #7
              پاسخ : مدت زمان فشرده شدن دکمه

              با اجازه دوستان من کدی که نوشتم رو اینجا هم قرار میدم تا اگه ایرادی داره امر کنین وگر نه برای استفاده دوستان دیگه


              کد:
              [FONT=Yekan]int inPin = 7;[/FONT]long secs_held;
              unsigned long firstTime; 
              boolean buttonPressed;
              boolean onec =true;
              
              
              void setup() {
                Serial.begin(9600);         
                digitalWrite(inPin, HIGH);  
              }
              
              
              void loop() {
                  if(digitalRead(inPin) == HIGH) 
                  {
                      if(onec == true)
                      {
                          buttonPressed = true;
                          firstTime = millis();
                          Serial.print("First Time: ");
                          Serial.println(firstTime);
                          onec = false;
                      }
                  }
                  if(digitalRead(inPin) == LOW && buttonPressed == true ) 
                  { 
                    millis_held = (millis() - firstTime);
                    secs_held = millis_held / 1000;
                    Serial.print("Hold Time: ");
                    Serial.println(secs_held);
                    buttonPressed = false;
                    onec = true;
                  }
              [FONT=Yekan]}[/FONT]

              دیدگاه

              لطفا صبر کنید...
              X