login

Author Topic: Button library  (Read 3209 times)

0 Members and 1 Guest are viewing this topic.

stevecooley

Button library
« on: December 01, 2011, 03:00:53 AM »
Hey there Alexander!  I'm super excited to see that you're continuing to develop the hardware abstraction libraries!!  I love the concept of the .held and .heldFor modes in the button library...  however, I'm having some issues getting some of my long-held buttons to realize they've been released. When I push them, I get times that seem to continue on without resetting back to zero.  I'm sure this is all a problem with my code, but I was wondering how I can test this?  I wrote this, but maybe you can suggest something better?

Quote
  if(dpad_up.uniquePress())
  {
    int now = millis();
    while(dpad_up.isPressed())
    {
      Serial.print("dpad up held for ");
      Serial.println(millis()-now);

      if(dpad_up.held())
      {
        Serial.println("up held");
      }
      if(dpad_up.heldFor(2000))
      {
        Serial.println("up held for 2000+");
      }  
    }

  }


Running this code will get me a lot of seemingly correct results.

Quote
dpad up held for 3
up held
dpad up held for 9
dpad up held for 12
dpad up held for 15
dpad up held for 19
dpad up held for 22
dpad up held for 26
dpad up held for 29

Over and over and over.  Then I move on to holding the button for 2000+ milliseconds.  All seems to be going fine.

Quote
dpad up held for 1987
dpad up held for 1991
dpad up held for 1995
dpad up held for 1999
dpad up held for 2002
up held for 2000+
dpad up held for 2009
up held for 2000+
dpad up held for 2016
up held for 2000+
dpad up held for 2024
up held for 2000+
dpad up held for 2031
up held for 2000+

Et Cetera.  I can do this over and over until one point.  Then this starts to happen:

Quote
dpad up held for 2923
up held for 2000+
dpad up held for 2931
up held for 2000+
dpad up held for 2938
up held for 2000+
dpad up held for 2945
dpad up held for 65539
up held
dpad up held for 65544
dpad up held for 65548
dpad up held for 65552
dpad up held for 65556
dpad up held for 65560
dpad up held for 65564
dpad up held for 65568
dpad up held for 65572

And then my button hold times don't reset anymore.  ??? 

I have a bunch of questions, actually, now that I've seen that you've added a bunch of new features to the button library.  My projects are all about the interface, so I'd love to think in a forward way and improve how my interfaces work internally and from the users perspective. But, I'll stick to this one question for now. :) Any tips on what I might be doing wrong?

brevig

Re: Button library
« Reply #1 on: December 02, 2011, 06:36:06 PM »
Hey, and thank you for your encouragement!

I must say that your code looks good, and that I suspect you might have stumbled upon a bug  :-[.

Could you try this:
Code: [Select]
if(dpad_up.uniquePress())
{
  int now = millis();
  while(dpad_up.isPressed())
  {
    Serial.print("> up held for ");
    Serial.print(millis()-now);
    Serial.print(" | ");
    Serial.println(dpad_up.holdTime());

    if(dpad_up.held())
    {
      Serial.println("> -up held");
    }
    if(dpad_up.heldFor(2000))
    {
      Serial.print("> -up held for at least 2000");
    } 
  }
}


I see that my time variables are ints which will only work for the 60 first seconds or so if I wrote my logic in a greedy way. This sample code will reveal that to me.
If this turns out to be a bug I'll fix it right away, and commit a patch to the github source.

EDIT: When I read it again, it might actually help just to change your now to be of type unsigned long like this:
Code: [Select]
unsigned long now = millis();
« Last Edit: December 02, 2011, 06:39:38 PM by brevig »

stevecooley

Re: Button library
« Reply #2 on: December 03, 2011, 02:24:59 AM »
Ok, I ran the test.  It does seem to still happen.  I've posted the full log of events to pastebin here:

http://pastebin.com/gGsjh6YD

My usage pattern was to press and hold the button for a long time to trigger all of the events, then to click click click to see if it was resetting the hold timer, then click and hold, click click click, etc.  I'm sure you'll get the picture by looking at the log.

Then, right at the end when I stopped, you can see the timer jumping to the 65000+ numbers.  Once that happened, I figured I could stop logging data.

-steve

stevecooley

Re: Button library
« Reply #3 on: December 03, 2011, 02:37:03 AM »
Aha, wait a second. I was just looking at my results again and started wondering what I was looking at.  Then I replied, and noticed your edit. I'll try your suggestion now.

stevecooley

Re: Button library
« Reply #4 on: December 03, 2011, 02:43:17 AM »
Ok. So. A new behavior is happening now. That definitely improved the hold/heldFor behavior, but after a while of testing this new unsigned long variable, the heldFor >2000 flag is getting stuck, even after I let go of the button.  You can see a rather long set of data where it appears to be working just fine, then in the last couple of page scrolls of data, the >2000 state is stuck as being true.

http://pastebin.com/HLhkFUur

brevig

Re: Button library
« Reply #5 on: December 03, 2011, 11:48:49 AM »
Hey again,

I have looked briefly at the code for this feature, and I think I have found and fixed the bug. (I do not have my Wiring nearby)

Could you replace your Button.h and Button.cpp with
https://raw.github.com/WiringProject/Wiring/master/framework/libraries/Button/Button.h
https://raw.github.com/WiringProject/Wiring/master/framework/libraries/Button/Button.cpp


Would you agree if I say that you probably get errors after about one minute of testing?
This patch will fix that.

stevecooley

Re: Button library
« Reply #6 on: December 03, 2011, 02:39:50 PM »
Yep, I'd even go so far as to say 65 seconds. :) I will check on this tonight.

stevecooley

Re: Button library
« Reply #7 on: December 16, 2011, 08:09:29 PM »
Uh. Hmm. hang on. Something's not right. 

stevecooley

Re: Button library
« Reply #8 on: December 16, 2011, 08:17:20 PM »
Ok, sorry for the delay.  I had a 3d printer on order, and it arrived, so naturally I disappeared down a deeeeeep chasm afterwards.  There's something wrong with it, so I was able to resurface and test this out. 

Initially the changes you posted were acting strangely for me, but then I realized I needed to change one of my code's variable from an int to a long as well for it to work correctly.  SO... now I can do things like this:

Code: [Select]
up held for 2000+
dpad up held for 68366
up held for 2000+
dpad up held for 68373
up held for 2000+
dpad up held for 68381
up held for 2000+
dpad up held for 68388
up held for 2000+
dpad up held for 68395
up held for 2000+
dpad up held for 68403
up held for 2000+
dpad up held for 68410
up held for 2000+
dpad up held for 68418
up held for 2000+
dpad up held for 68425
dpad up held for 3
up held
dpad up held for 9
dpad up held for 12
dpad up held for 15
dpad up held for 19
dpad up held for 22
dpad up held for 26
dpad up held for 29
dpad up held for 33
dpad up held for 36
dpad up held for 40
dpad up held for 43
dpad up held for 47


and it's all good in the hood.  Thanks so much for your help!!

Danniell32

Download video and MP3 youtube
« Reply #9 on: October 26, 2017, 01:09:08 PM »
<a href="https://xn--pgbg3edz.tv/watch?v=XHJKHtBFKAU">تحميل الفيديو و MP3 عراقي طالعه روحه من سيد فاقد ههههههههههههه  </a><br>يكول القضية الحسينية مثل الرياضيات 1 و2 و3 هههههه يحشش بطريقة مختلفة ينتقد بيها سيد فاقد يكله المدبك سيد فاقد استجن ويكلة انت دور حلوين سيد فاقد هي ما</br>
<a href="https://xn--pgbg3edz.tv/watch?v=OUvkd8EziUE">تحميل الفيديو و MP3 ياقارورة بنت عراقيه تخبل تقلد باسم الكربلائي صوتها يجنن لاتفوتكم قارورة 1439هــ  </a><br>كلمات البحثباسم الكربلائي قارورة 2017 محرم 1439يابو فاضل  باسم الكربلائي 2018لطميات حماسية للمشاية 2018لطميات حسينية حماسية محرم 1439 هــلطميات فزاعي</br>
<a href="https://xn--pgbg3edz.tv/watch?v=NC5E3ywK0EI">تحميل الفيديو و MP3 حمزه القيسي سبب وفاته واخر لقاء له كان يتكلم عن اتصالات حبيبته  </a><br></br>
<a href="https://xn--pgbg3edz.tv/watch?v=LPCwK6t3bKY">تحميل الفيديو و MP3 اعتقال سيد فاقد بسبب هاي القصيدة  </a><br></br>
<a href="https://xn--pgbg3edz.tv/watch?v=kjtc4K33Kok">تحميل الفيديو و MP3 كامل مفيد وحمبي  صاحب البرج   #ولاية_بطيخ #تحشيش #الموسم_الثالث  </a><br>المواقع الالكترونيه الرسميه لبرنامج ولاية بطيخ http://www.meloncityshow.com▶director: Ali fadhal▶Network Administrator : Ibrahim khlel aldujailiLike o</br>
<a href="https://xn--pgbg3edz.tv/watch?v=S7YX4QZ-g3I">تحميل الفيديو و MP3 شاهد غضب سيد محمد الصافي على البنت التي قلدت باسم الكربلائي في قصيدة ياقارورة  </a><br></br>
<a href="https://xn--pgbg3edz.tv/watch?v=USAwlthA7lU">تحميل الفيديو و MP3 كردي يحرق العلم العراقي فجاء الرد سريعا من جندي عراقي غيور _ شاهد ماذا حصل بعدها  </a><br>كردي يحرق العلم العراقي فجاء الرد سريعا من جندي عراقي غيور _ شاهد ماذا حصل بعدها</br>
<a href="https://xn--pgbg3edz.tv/watch?v=BqGGsE6MTEk">تحميل الفيديو و MP3 بەپەلە
ڕێگری لە پاڤێڵ تاڵەبانی ئەكرێ  لە سەیارەكەی دابەزێ  دوای فرۆشتنی كەركوك  </a><br>KURDISH LIFE 24/7 BO HAMU KURDEKI BA SHARAFA!Agar Kanalakaye Ematan Ba Dlla Tikaya Liku Subscribe Bikan!Harchtik Ema Daiabazenin Shart Nia Ra Xoman Bi</br>
<a href="https://xn--pgbg3edz.tv/watch?v=Jm6TOEZ83eQ">تحميل الفيديو و MP3 يخيمات  الرادود عمار الكناني  محرم -١٤٣٩  بغداد - جامع ذي الفقار  </a><br>يخيماتأداء: الملا عمار الكنانيكلمات: الشاعر علي عويز الشويليمونتاج وتنفيذ: حارث العكيليمكساج : عباس الحواجالمجلس: جامع ذي الفقار- العراق - بغدادمحرم ا</br>
<a href="https://xn--pgbg3edz.tv/watch?v=UaIdAPLAH6I">تحميل الفيديو و MP3 ملخص  اهداف مباراة يوفنتوس واودينيزي [6 2  ] [شاشة كاملة ] محمد بركات  </a><br>http://www.moujazkoora.com موقعhttps://twitter.com/MoujazTvhttps://goo.gl/rghkvx القناة الثانية صفحتنا على الفيسبوك...... https://goo.gl/BTmTqGملخص  ا</br>
<a href="https://xn--pgbg3edz.tv/watch?v=JLv5TmC1ivA">تحميل الفيديو و MP3 دايلر - مدرسة (فيديو كليب حصري)  2017  </a><br>دايلر يعود بفيديو كليب حصري ، يتكلم عن اثار الشهرة على الدراسة وان النجاح الحقيقي يتحقق بالعلم .⊙ شكرا لك على المشاهده , فعّل زر التنبيهات (  ) عشان </br>
<a href="https://xn--pgbg3edz.tv/watch?v=pvKiTRlbbOE">تحميل الفيديو و MP3 حقيقة وسبب وفاة الفنان عراقي حمزة القيسي  </a><br>انا لله وانا اليه راجعون قبل قليل وردنا خبر وفاة الفنان العراقي حمزة القيسي     • سبب الوفاة ؟   - وذلك اثر سكته قلبيه حدثت له بشكل مفاجئنسأل الله ان </br>
<a href="https://xn--pgbg3edz.tv/watch?v=LMUoUKEa_IQ">تحميل الفيديو و MP3 تحشيش # اول مجدي يحصل بدقيقه 20 الف _ تحشيش عراقي   مصطفى ستار  </a><br>حبايبي خلوني اوصل مليون  باقرب وقت انشرو  الهاش تاك #توصيل مصطفى ستار الى المليون ــــــــــــــــــــــــــــــــــترابط عباس حيدر   https://www.yout</br>
<a href="https://xn--pgbg3edz.tv/watch?v=BOo-2F3tHs4">تحميل الفيديو و MP3 رد باسم الكربلائي على قصيده سيد فاقد خطير جداً شاهد  </a><br>حسابي على الفيسبوك https://www.facebook.com/mohamed4651فدوه شباب اشتركو بالقناة ولايك للفيديو</br>
<a href="https://xn--pgbg3edz.tv/watch?v=XAZtP3yAinE">تحميل الفيديو و MP3 حقيقة وفاه الفنان حمزه القيسي بس الي عنده غيرة يشوف الفديو للنهاية  </a><br>#تابعووني#انستا tabark_music#اشترك_في#القناه_للمزيد #ادعمنا_للوصول_200k#مشتركالفنان حمزة القيسيحقيقة وفاة الفنان حمزة القيسيعاجل وفاه الفنان حمزه الق</br>
<a href="https://xn--pgbg3edz.tv/watch?v=wjyXy0G9iNU">تحميل الفيديو و MP3 خط احمر - جريمة قتل بشعة - تقتل زوجها بمساعدة ابنتها وعشيقها (اصغر من ابنائها) بث في 11 10 2017  </a><br>حلقة من برنامج (خط أحمر)(قتل زوجها بمساعدة ابنتها وعشيقها (اصغر من ابنائها) ) بث في 35ر10 مساء 11 10 2017قناة السومرية  - اعداد وتقديم: بلال صفاء - تص</br>
<a href="https://xn--pgbg3edz.tv/watch?v=LlQyW-89Wp0">تحميل الفيديو و MP3 وفاة الفنان العراقي حمزة القيسي أثر جلطة  قلبية مفاجئة   </a><br>Created by VideoShow:http://videoshowapp.com/free</br>
<a href="https://xn--pgbg3edz.tv/watch?v=iWuFdCDXtL0">تحميل الفيديو و MP3 علي عدنان يتعارك ويه ماندزوكيتش ويتسبب بطرده  </a><br></br>
<a href="https://xn--pgbg3edz.tv/watch?v=z3y6zNBErD0">تحميل الفيديو و MP3 جاسم الحجي كلام خطير بعد هروب الاكراد من كركوك اذا كردي لتشوف المقطع  </a><br></br>