اطلاعیه

Collapse
No announcement yet.

Interrupt button debounce

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

    Interrupt button debounce

    سلام دوستان امیدوارم حالتون خوب باشه دوستان من یه مشکلی با دیبانس کردن دکمه دارم یه اینتراپت ایجاد کردن در آردوینو و یه دکمه قرار دادم که اگر کلید را فشار دادیم فلان کار رو بکنه اگر یا بار دیکه فشار دادیم فلان کا ر رو بکنه دوستان از روشهای مختلفی هم برای دیبانس کردن دکمه استفاده کردم ولی متاسفانه جواب نگرفتم کسی میدونه مشکل از کجاست؟
    اینم کد:
    if (flag_interrupt == 1 && statebutton == HIGH && millis() - Time > debunce) {

    digitalWrite(TURNON_LED_RED, HIGH);
    statebutton = LOW;
    flag_interrupt = 0;
    FAN_ID= 1;

    } else
    if (flag_interrupt == 0 && statebutton == LOW && millis() - Time > debunce) {
    // All Pins goes off it's mean the airconditioner is turn off
    FAN_ID= 0;

    statebutton = HIGH;

    FanGOESOFF();

    flag_interrupt = 1;
    Reset();
    }

    Time = debunce;
    در کنار کد از دیبانس Debounce سخت افزاری RC هم استفاده کردم جواب نداد.
    گمان میکنم توی اینتراپت همه دستورات رو با هم اجرا میکنه !
    امکانش هست که متد Millis() اصلا ساپورت نکنه توی اینتراپت ؟
    جدیدترین ویرایش توسط Network-Electronic; ۱۵:۲۷ ۱۳۹۸/۰۷/۲۲.

    #2
    پاسخ : Interrupt button debounce

    دوستان کسی نیست جواب من رو بده من خیلی درگیرم با این مسئله لرزش دکمه رو تا الان نتونستم بگیرم

    دیدگاه


      #3
      پاسخ : Interrupt button debounce

      نوشته اصلی توسط Network-Electronic نمایش پست ها
      دوستان کسی نیست جواب من رو بده من خیلی درگیرم با این مسئله لرزش دکمه رو تا الان نتونستم بگیرم
      بله تو اینتراپت نمیتونید از millis استفاده کنید. بجاش از delayMicroseconds استفاده کنید.
      دیبانس با RC هم قطعا جواب میده (بعد از حل کردن مشکل بالا)
      Si vis pacem, para bellum

      دیدگاه


        #4
        پاسخ : Interrupt button debounce

        نوشته اصلی توسط tiranoid نمایش پست ها
        بله تو اینتراپت نمیتونید از millis استفاده کنید. بجاش از delayMicroseconds استفاده کنید.
        دیبانس با RC هم قطعا جواب میده (بعد از حل کردن مشکل بالا)
        این قطعه کد رو ببنید:
        static unsigned long last_interrupt_time = 0;
        unsigned long interrupt_time = millis();

        if (flag_interrupt == 1 && statebutton == HIGH){

        if( interrupt_time - last_interrupt_time > 200){

        digitalWrite(TURNON_LED_RED, HIGH);
        statebutton = LOW;
        flag_interrupt = 0;
        pick= 1;
        }else {


        }
        به جای millis دستور delayMicroseconds رو بذارم یا باید کار دیکه ایی هم انجا م بدم ؟تغیرارتی توی کد باید انجام بشه؟

        دیدگاه


          #5
          پاسخ : Interrupt button debounce

          فایده ایی نداره استفاده میکنم جواب نمیده دوستان اگر اطلاعی دارین ممنون میشم یاری کنید

          دیدگاه


            #6
            پاسخ : Interrupt button debounce

            واقعا کسی نیست منو راهنمایی کنه من الان دو روز توی این تاپیک دارم صحفه رو ریفرش میکنم

            دیدگاه


              #7
              پاسخ : Interrupt button debounce

              نوشته اصلی توسط Network-Electronic نمایش پست ها
              واقعا کسی نیست منو راهنمایی کنه من الان دو روز توی این تاپیک دارم صحفه رو ریفرش میکنم
              با سلام
              کتابخانه های آماده در اینترنت هست که کارتون را انجام می ده. مثل
              Arduino library for debouncing momentary contact switches, detect press, release, long press and sequences with event definitions and callbacks. - evert-arias/EasyButton

              موفق باشید

              دیدگاه


                #8
                پاسخ : Interrupt button debounce

                نوشته اصلی توسط Quantum. نمایش پست ها
                با سلام
                کتابخانه های آماده در اینترنت هست که کارتون را انجام می ده. مثل
                Arduino library for debouncing momentary contact switches, detect press, release, long press and sequences with event definitions and callbacks. - evert-arias/EasyButton

                موفق باشید
                منبع خوبی رو ارئه دادین ممنون از شما
                یه عیبی داره این کتابخانه اینم اینکه اصلا به دیبانس کردن در اینتراپت اشاره نشده متاسفانه من دکمه رو در اینتراپت گذاشتم که در یک آن بعد از کلیک شدن یا نگه داشته شدن فرمان قطع و وصل رو صادر کنه.

                دیدگاه

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