اطلاعیه

Collapse
No announcement yet.

استفاده از یک کلید برای 2 کار

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

    استفاده از یک کلید برای 2 کار

    سلام.

    آقا ما یه پروژه بهمون خورده یه مشکلی برام پیش اومده گفتم نظر شما هم بپرسم.
    یه کلید داریم که اگه این کلید یه بار فشار داده شود باید یه کاری بکنه و اگه همان کلید رو 5 ثانیه نگه داریم یه کاره دیگه ای انجام میده.

    این برنامه رو دارم با بیسیک مینویسم. و کلید رو از دستور Debounce میخونم.
    وقتی از این دستور استفاده میکنیم با لبه بالا رونده عمل انجام میشه.
    من خودم میگم وقتی کلید رو زد یه تایمر رو start کنم و بعد از هر 50 میلی ثانیه یه بار دوباره کلید رو دوباره چک کنم اگه زیر 500 میلی ثانیه بود به منزله یه بار فشار دادن (و انجام کار اول صورت گیرد)حساب کنم ولی اگه بیشتر از 5 ثانیه بود به منزله کار دوم حساب کنم.

    به نظر شما راه خودم عملیه ؟ نظر شما هم خیلی برام مهمه.منتظرم
    www.icesi.ir

    #2
    پاسخ : استفاده از یک کلید برای 2 کار

    نوشته اصلی توسط میلاد موسوی
    سلام.

    آقا ما یه پروژه بهمون خورده یه مشکلی برام پیش اومده گفتم نظر شما هم بپرسم.
    یه کلید داریم که اگه این کلید یه بار فشار داده شود باید یه کاری بکنه و اگه همان کلید رو 5 ثانیه نگه داریم یه کاره دیگه ای انجام میده.

    این برنامه رو دارم با بیسیک مینویسم. و کلید رو از دستور Debounce میخونم.
    وقتی از این دستور استفاده میکنیم با لبه بالا رونده عمل انجام میشه.
    من خودم میگم وقتی کلید رو زد یه تایمر رو start کنم و بعد از هر 50 میلی ثانیه یه بار دوباره کلید رو دوباره چک کنم اگه زیر 500 میلی ثانیه بود به منزله یه بار فشار دادن (و انجام کار اول صورت گیرد)حساب کنم ولی اگه بیشتر از 5 ثانیه بود به منزله کار دوم حساب کنم.

    به نظر شما راه خودم عملیه ؟ نظر شما هم خیلی برام مهمه.منتظرم
    درود، ارادت
    به نظر من که راه خودت خوبه عملی هم که هست. میلاد جان هدف از این کار چیه؟ یعنی پروژه جوری شده که بیشتر از یک پین رو نمیتونی برای دگمه اختصاص بدی یا اینکه داری نحوه کار اینجور دگمه ها رو آزمایش میکنی؟
    از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
    هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
    اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
    اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
    شاد و موفق باشید

    دیدگاه


      #3
      پاسخ : استفاده از یک کلید برای 2 کار

      من خودم با دو تا کلید راحت ترم ولی وقتی طرف گفته اینطوری میخوام ما هم باید بگیم چشم...در اوردن یه لقمه نون حلال سخته دیگه :agree:
      www.icesi.ir

      دیدگاه


        #4
        پاسخ : استفاده از یک کلید برای 2 کار

        سلام :smile:

        If Pinb.0 = 0 Then
        Waitms 20 'Debounce giri baraye klid
        If Pinb.0 = 0 Then 'mitoonid meghdare debounce ra taghir bedid

        For X = 0 To 1000
        If Pinb.0 = 1 Then Goto Label1
        Waitms 5
        Next X

        If Pinb.0 = 0 Then Goto Label2

        End If
        End If

        اگه کلید رو کمتر از 5 ثانیه فشار بدید برنامه به برچسب Label1 و اگه بیشتر از 5 ثانیه فشار بدید به Label2 پرش می کنه

        پایه ی مورد نظر باید پول پ باشد
        ِِDie for Life, Not Live to Die
        Freedom Fighter
        " ناخود گاه، هريك از ما ، از ناميرائي خود يقين دارد " . فروید

        دیدگاه


          #5
          پاسخ : استفاده از یک کلید برای 2 کار

          چیا جان برنامت درسته ولی به درده من نمیخوره چون تو لوپ اصلیه برنامه دارم 12 تا 7سگمنت رو رفرش میکنم.باید حتما از تایمر استفاده کنم
          www.icesi.ir

          دیدگاه


            #6
            پاسخ : استفاده از یک کلید برای 2 کار

            سلام
            من چند ماه پیش با همین مشکل درگیر بودم. خودم یه طوری حلش کردم که زیاد راضی نیستم. اما chia جان به من ایده داد. شما از همین برنامه chia استفاده کن. منتها برای اینکه 7seg ها در زمان تاخیر از کار نیفتن به جای هر کدام از تاخیر ها یک حلقه ایجاد کن که داخلش فرمانهایی برای رفرش کردن 7seg ها باشه. با این کار هم تاخیر خواهی داشت و هم اعداد نمایش داده میشن. :biggrin:
            دلا یاران سه قسمند ار بدانی
            زبانی اند و نانی اند و جانی
            به نانی نان بده از در برانش
            محبت کن به یاران زبانی
            و لیکن یار جانی را به دست آر
            به جانش جان بده تا می توانی

            دیدگاه


              #7
              پاسخ : استفاده از یک کلید برای 2 کار

              سلام

              خب آقا میلاد شما بهتره که رفرش رو با تایمر بکنید و کار ساده ای مثل جاروب کلید رو با برنامه نویسی انجام بدید
              ِِDie for Life, Not Live to Die
              Freedom Fighter
              " ناخود گاه، هريك از ما ، از ناميرائي خود يقين دارد " . فروید

              دیدگاه


                #8
                پاسخ : استفاده از یک کلید برای 2 کار

                نوشته اصلی توسط میلاد موسوی
                چیا جان برنامت درسته ولی به درده من نمیخوره چون تو لوپ اصلیه برنامه دارم 12 تا 7سگمنت رو رفرش میکنم.باید حتما از تایمر استفاده کنم
                سلام میتونم بپرسم 7سگمنت هاتو با چی یا چه برنامه ای رفلش میکنین میشه توضیح بدین
                انجام پروژه هاي برنامه نويسي اندرويد
                [glow=red,2,300]نرم افزار نقشه هاي پاور کامپيوتر اندوريد[/glow]
                http://cafebazaar.ir/app/?id=com.atxdroid

                دیدگاه


                  #9
                  پاسخ : استفاده از یک کلید برای 2 کار

                  سلام
                  من تو یکی از پروژهای دانشجویی همین مشکل را داشتم که به این صورت حلش کردم
                  Config Portb.1 = Input
                  Dim A As Byte

                  Do
                  If Pinb.1 = 1 Then
                  Do
                  If Pinb.1 = 0 Then Exit Do
                  Incr A
                  Loop

                  Select Case A
                  Case Is < 100
                  'Key1
                  Case Is > 100
                  'Key2
                  End Select
                  End If
                  Loop
                  End

                  دیدگاه


                    #10
                    پاسخ : استفاده از یک کلید برای 2 کار

                    چیا جان منظوره شما اینه که من داخل لوپ اصلیه برنامه کلید رو تست کنم و توسط یه تایمر و زمان سرریز اون 7سگمنت رو رفرش کنم.؟

                    محسن جان برنامه رو فعلا به این صورت نوشتم :

                    Do
                    If Selec = 1 Then Goto Milad1


                    Reset Portd.4

                    Set Portd.0
                    Portb = Lookup(a1 , 7segment)
                    Waitms 2.5
                    Reset Portd.0


                    Set Portc.0
                    Portb = Lookup(a2 , 7segment)
                    Waitms 2.5
                    Reset Portc.0


                    Set Portc.1
                    Portb = Lookup(a3 , 7segment)
                    Waitms 2.5
                    Reset Portc.1


                    Set Portc.4
                    Portb = Lookup(a4 , 7segment)
                    Waitms 2.5
                    Reset Portc.4

                    Set Portd.4



                    Set Portd.1
                    Portb = Lookup(a5 , 7segment)
                    Waitms 2.5
                    Reset Portd.1


                    Set Portd.2
                    Portb = Lookup(a6 , 7segment)
                    Waitms 2.5
                    Reset Portd.2


                    Set Portc.2
                    Portb = Lookup(a7 , 7segment)
                    Waitms 2.5
                    Reset Portc.2


                    Set Portc.3
                    Portb = Lookup(a8 , 7segment)
                    Waitms 2.5
                    Reset Portc.3


                    Loop

                    البته این نصفشه کل برنامه رو نذاشتم.

                    www.icesi.ir

                    دیدگاه


                      #11
                      پاسخ : استفاده از یک کلید برای 2 کار

                      نوشته اصلی توسط میلاد موسوی
                      چیا جان منظوره شما اینه که من داخل لوپ اصلیه برنامه کلید رو تست کنم و توسط یه تایمر و زمان سرریز اون 7سگمنت رو رفرش کنم.؟

                      محسن جان برنامه رو فعلا به این صورت نوشتم :

                      Do
                      If Selec = 1 Then Goto Milad1


                      Reset Portd.4

                      Set Portd.0
                      Portb = Lookup(a1 , 7segment)
                      Waitms 2.5
                      Reset Portd.0


                      Set Portc.0
                      Portb = Lookup(a2 , 7segment)
                      Waitms 2.5
                      Reset Portc.0


                      Set Portc.1
                      Portb = Lookup(a3 , 7segment)
                      Waitms 2.5
                      Reset Portc.1


                      Set Portc.4
                      Portb = Lookup(a4 , 7segment)
                      Waitms 2.5
                      Reset Portc.4

                      Set Portd.4



                      Set Portd.1
                      Portb = Lookup(a5 , 7segment)
                      Waitms 2.5
                      Reset Portd.1


                      Set Portd.2
                      Portb = Lookup(a6 , 7segment)
                      Waitms 2.5
                      Reset Portd.2


                      Set Portc.2
                      Portb = Lookup(a7 , 7segment)
                      Waitms 2.5
                      Reset Portc.2


                      Set Portc.3
                      Portb = Lookup(a8 , 7segment)
                      Waitms 2.5
                      Reset Portc.3


                      Loop

                      البته این نصفشه کل برنامه رو نذاشتم.

                      بله منظورم همینه :agree:
                      ِِDie for Life, Not Live to Die
                      Freedom Fighter
                      " ناخود گاه، هريك از ما ، از ناميرائي خود يقين دارد " . فروید

                      دیدگاه


                        #12
                        پاسخ : استفاده از یک کلید برای 2 کار

                        سلام
                        یکی به من بیسواد بدبخت و......
                        این قسمتو توضیح بده جریان lookup چیه
                        Portb = Lookup(a2 , 7segment)
                        انجام پروژه هاي برنامه نويسي اندرويد
                        [glow=red,2,300]نرم افزار نقشه هاي پاور کامپيوتر اندوريد[/glow]
                        http://cafebazaar.ir/app/?id=com.atxdroid

                        دیدگاه


                          #13
                          پاسخ : استفاده از یک کلید برای 2 کار

                          مقدار a2 مثلا 5 هستش این کد میاد از برچسب 7سگمنت خط 5 رو روی پورت b میذاره.(از این راحت تر نمیتونم بگم)
                          www.icesi.ir

                          دیدگاه


                            #14
                            پاسخ : استفاده از یک کلید برای 2 کار

                            من با basecom کار نکردم ولی 2 تا نکته میگم شاید به دردت بخوره:
                            1- می تونی از کانتر نرم افزاری استفاده کنی و هر بار حلقه اصلی یه بار اجرا شد کانتر یکی اضافه بشه برای اینکه زمان تاخیری که کانتر ایجاد می کنه محاسبه بشه تمام تاخیرهای حلقه رو جمع میکنی ضرب در تعداد شمارش حلقه میکنی!
                            2- این خیلی مهمه: وقتی یه لحظه کلید مورد نظر قطع شد باید مقدار کانتر رو صفر کنی چون اگه چند بار پشت سر هم کلید فشرده بشه کانتر مقدار میگیره و تاخیر درستی ارائه نمیده
                            البته اینایی که گفتم توو c خیلی راحته نمیدونم توو basecom هم میشه یا نه؟ :mrgreen:
                            اگر ندانی کجا میروی هر راهی تو را باخود خواهد برد.

                            دیدگاه


                              #15
                              پاسخ : استفاده از یک کلید برای 2 کار

                              نوشته اصلی توسط میلاد موسوی
                              مقدار a2 مثلا 5 هستش این کد میاد از برچسب 7سگمنت خط 5 رو روی پورت b میذاره.(از این راحت تر نمیتونم بگم)
                              جریان برچسب 7 سگمنت چیه میتونم بپرسم چی نوشتین (خیلی فزولم نه :biggrin
                              من چقدر بیسوادم بدبختم........ :angry:
                              انجام پروژه هاي برنامه نويسي اندرويد
                              [glow=red,2,300]نرم افزار نقشه هاي پاور کامپيوتر اندوريد[/glow]
                              http://cafebazaar.ir/app/?id=com.atxdroid

                              دیدگاه

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