اطلاعیه

Collapse
No announcement yet.

قراردادن کلید روی فلاشر

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

    قراردادن کلید روی فلاشر

    با سلام برای قرار دادن کلید روی فلاشر از چه چیزی استفاده کنم کسی در مورد برنامه نویسیش با بسکام چیزی میدونه میخام با یه بار فشار کلید فلاشر ثابت بشه و با یه بار فشار دیگه افکتهاش اجرا بشن البته فلاشر سه کاناله هست که پین0 و1و2 پرت دی خروجیان
    کسی میتونه کمک کنه؟؟؟
    متن برنامه اینه که از پین بی 1 میخام کلید فشاری یا همون شاستی وصل کنم در مورد وصل کردن سخت افزاریهم توضیح بدین ممنونمیشم ایا از منفر رگولاتور وصل میشه مقاومتی چیزی نمیخاد
    کد:
    $regfile = "m8def.dat"
    $crystal = 1000000
    Config Portd = Output
    Dim A As Byte
           Do
           For A = 1 To 10
     Portd.0 = 1
     Portd.1 = 0
     Portd.2 = 0
     Waitms 700
     Portd.0 = 0
     Portd.1 = 1
      Portd.2 = 0
     Waitms 700
     Portd.0 = 0
     Portd.1 = 0
      Portd.2 = 1
     Waitms 700
    
     Portd.0 = 0
     Portd.1 = 1
     Portd.2 = 0
     Waitms 700
     Portd.0 = 1
     Portd.1 = 0
      Portd.2 = 0
     Waitms 700
    
    
        Next A
        For A = 1 To 50
        Portd.0 = 0
     Portd.1 = 0
     Portd.2 = 0
     Waitms 80
     Portd.0 = 1
     Portd.1 = 1
      Portd.2 = 1
     Waitms 80
     Portd.0 = 0
     Portd.1 = 0
      Portd.2 = 0
     Waitms 80
     Portd.0 = 1
     Portd.1 = 1
      Portd.2 = 1
     Waitms 80
      Portd.0 = 0
     Portd.1 = 0
     Portd.2 = 0
     Waitms 80
     Portd.0 = 1
     Portd.1 = 1
      Portd.2 = 1
     Waitms 80
     Portd.0 = 0
     Portd.1 = 0
      Portd.2 = 0
     Waitms 80
     Portd.0 = 1
     Portd.1 = 1
      Portd.2 = 1
     Waitms 80
    
        Next A
        For A = 1 To 5
     Portd.0 = 1
     Portd.1 = 0
     Portd.2 = 1
     Waitms 1000
     Portd.0 = 0
     Portd.1 = 1
      Portd.2 = 0
     Waitms 1000
     Portd.0 = 1
     Portd.1 = 0
      Portd.2 = 1
     Waitms 1000
     Portd.0 = 0
     Portd.1 = 1
     Portd.2 = 0
     Waitms 1000
     Portd.0 = 1
     Portd.1 = 0
      Portd.2 = 1
    
     Waitms 1000
     Portd.0 = 0
     Portd.1 = 1
      Portd.2 = 0
      Waitms 1000
      Next A
      For A = 1 To 5
     Portd.0 = 1
     Portd.1 = 0
      Portd.2 = 0
     Waitms 1000
     Portd.0 = 0
     Portd.1 = 1
     Portd.2 = 1
     Waitms 1000
     Portd.0 = 1
     Portd.1 = 0
      Portd.2 = 0
     Waitms 1000
     Portd.0 = 0
     Portd.1 = 1
      Portd.2 = 1
     Waitms 1000
     Next A
      For A = 1 To 5
     Portd.0 = 0
     Portd.1 = 0
     Portd.2 = 1
     Waitms 1000
     Portd.0 = 1
     Portd.1 = 1
      Portd.2 = 0
     Waitms 1000
     Portd.0 = 0
     Portd.1 = 0
      Portd.2 = 1
     Waitms 1000
     Portd.0 = 1
     Portd.1 = 1
      Portd.2 = 0
      Waitms 1000
      Next A
    
     Portd.0 = 0
     Portd.1 = 0
     Portd.2 = 0
    
     For A = 1 To 5
     Waitms 1000
     Portd.0 = 0
     Portd.1 = 1
      Portd.2 = 1
     Waitms 1000
     Portd.0 = 1
     Portd.1 = 0
      Portd.2 = 0
     Waitms 1000
    
     Portd.0 = 0
     Portd.1 = 1
      Portd.2 = 1
     Waitms 1000
     Portd.0 = 1
     Portd.1 = 0
      Portd.2 = 0
     Waitms 1000
     Portd.0 = 0
     Portd.1 = 1
      Portd.2 = 1
     Waitms 1000
     Portd.0 = 1
     Portd.1 = 0
      Portd.2 = 0
     Waitms 1000
    
     Portd.0 = 0
     Portd.1 = 1
      Portd.2 = 1
     Waitms 1000
     Portd.0 = 1
     Portd.1 = 0
      Portd.2 = 0
     Waitms 1000
     Next A
         For A = 1 To 5
     Portd.0 = 0
     Portd.1 = 0
     Portd.2 = 0
     Waitms 1000
     Portd.0 = 1
     Portd.1 = 1
      Portd.2 = 1
     Waitms 1000
     Portd.0 = 0
     Portd.1 = 0
      Portd.2 = 0
     Waitms 1000
      Portd.0 = 1
     Portd.1 = 1
      Portd.2 = 1
     Waitms 1000
     Portd.0 = 0
     Portd.1 = 0
     Portd.2 = 0
     Waitms 1000
     Portd.0 = 1
     Portd.1 = 1
      Portd.2 = 1
     Waitms 1000
     Portd.0 = 0
     Portd.1 = 0
      Portd.2 = 0
       Portd.0 = 1
     Portd.1 = 1
      Portd.2 = 1
     Waitms 1000
     Portd.0 = 0
     Portd.1 = 0
     Portd.2 = 0
     Waitms 1000
     Portd.0 = 1
     Portd.1 = 1
      Portd.2 = 1
     Waitms 1000
     Portd.0 = 0
     Portd.1 = 0
      Portd.2 = 0
       Portd.0 = 1
     Portd.1 = 1
      Portd.2 = 1
     Waitms 1000
     Portd.0 = 0
     Portd.1 = 0
     Portd.2 = 0
     Waitms 1000
     Portd.0 = 1
     Portd.1 = 1
      Portd.2 = 1
     Waitms 1000
     Portd.0 = 0
     Portd.1 = 0
      Portd.2 = 0
    
        Next A
    
    
    
    
            Loop
            End

    #2
    پاسخ : قراردادن کلید روی فلاشر

    سلام
    برنامه یکم شلوغه و یکم هم غیر استاندارد میتونی یکار دیگه کنی اولا برای قرار دادن شستی باید یا وقفه استفاده کنی یا از دستور debounce استفاده کنی که من وقفه خارجی رو پیشنهاد میدم که در این صورت دستت خیلی باز هستش وخیلی کارای بهتری میتونی انجام بدی برای استفاده از وقفه باید وقفه رو اول کانفیگ کنی بعد فعال کنی وبراش یه زیر برنامه بنویسی وتو زیر برنامه هر چی که دلت میخات براش بنویسی برای راهنمایی میتونی تو بسکام این فرامانو بنویسی بعد کلید f1رو بزنی وهلپ بسکام توضیحات لازمه رو داده بازم اگه مشکلی دشتی در خدمتم
    config intrrupts
    config int0
    config int1
    on int1 label
    MEHRENIA1366@GMAIL.COM
    مغز انسان خيلي پيچيده است و بخاطر همين هميشه دنبال راه حلهاي پيچيده ميگرده با کمي تامل ميشه راه حلهاي ساده تري رو پيدا کرد.هميشه پيچدگي وحجم بالا نشانه داشتن علم زياد نيست.

    دیدگاه


      #3
      پاسخ : قراردادن کلید روی فلاشر

      همونطور که دوست عزیزمون اون بالا گفتن می تونید یا به صورت معمولی یک پین رو به صورت ورودی تعریف کنید و توی حلقه همیشه درست چک کنید، یا اینکه از وقفه خارجی استفاده کنید.
      در هر صورت بهتره که پین متصل به کلید رو Pull-up یا Pull-down کنید که میشه به صورت سخت افزاری توسط یه مقاومت اهم بالای موازی شده با کلید باشه یا به صورت نرم افزاری از داخل برنامه (فقط Pull-up)
      از طرف دیگه کاری که من خودم واسه اینجور درایور ها میکردم دکمه رو وصل می کردم به ریست، با هر بار ریست شدن میکرو یه متغیر eeprom به مقدارش افزوده میشد، بعد طبق مقدار این متغیر یکی از برنامه های تعریف شده اجرا میشد... (اینم یه راهیه!!!)

      «پشتکار» «پشتکار» «پشتکار»

      دیدگاه


        #4
        پاسخ : قراردادن کلید روی فلاشر

        نوشته اصلی توسط کنجکاو!
        همونطور که دوست عزیزمون اون بالا گفتن می تونید یا به صورت معمولی یک پین رو به صورت ورودی تعریف کنید و توی حلقه همیشه درست چک کنید، یا اینکه از وقفه خارجی استفاده کنید.
        در هر صورت بهتره که پین متصل به کلید رو Pull-up یا Pull-down کنید که میشه به صورت سخت افزاری توسط یه مقاومت اهم بالای موازی شده با کلید باشه یا به صورت نرم افزاری از داخل برنامه (فقط Pull-up)
        از طرف دیگه کاری که من خودم واسه اینجور درایور ها میکردم دکمه رو وصل می کردم به ریست، با هر بار ریست شدن میکرو یه متغیر eeprom به مقدارش افزوده میشد، بعد طبق مقدار این متغیر یکی از برنامه های تعریف شده اجرا میشد... (اینم یه راهیه!!!)
        با تشکر از دوستان
        الان وقت یادگیری شو ندارم میتونید همین برنامه رو زحمتشو بکشید باید تابلو رو فردا تحویل بدم طرف میخاد با یه دکمه یا کلیدی چیزی افکتها اجرا بشن و با یه بار دیگه فشار دکمه تابلو حالت ثابت روشن بشه لازم به توضیحه که سه تا پین دی 0و1و2 میخام خروجی باشن و پین بی1 هم کلید باشه روش بردشو حاظری دارم با اتمگا8
        فقط یه نفر زحمت برنامه شو بکشن ممنون میشم ان شاالله سر فرصت برنامه نویسی شو هم یاد میگیرم البته با کمک شما

        دیدگاه


          #5
          پاسخ : قراردادن کلید روی فلاشر

          یکی نبود کار ما رو راه بندازه فردا باید کارو تحویل بدم

          دیدگاه


            #6
            پاسخ : قراردادن کلید روی فلاشر

            کلید رو به پایه ریست میکرو متصل کن و پایه دیگه کلید رو به زمین:
            بعد از کانفیگ کردن میکرو و پایه های خروجی برای استفاده از eeprom از این تیکه کد قبل Main...GotoMain استفاده کن:
            کد:
            Readeeprom S , 10
            Incr S
            If S > 4 Then S = 1
            
            Writeeeprom S , 10
            خب حالا زیرش قسمت Main برنامه که یه حلقه همیشه درسته رو مینویسی:
            کد:
            Main:
            
            
            Select Case S
            Case 1 : Goto S1
            Case 2 : Goto S2
            Case 3 : Goto S3
            Case 4 : Goto S4
            
            End Select
            Goto Main
            
            End
            حالا می تونی چهار زیر برنامه بنویسی به اسم های S1, S2, S3 و S4 (و اگه بخوای میتونی بیشترش هم بکنی فقط یادت باشه توی تیکه کد بالایی توی اون شرط مقدار درنظر گرفته شده برای شرط رو عوض کنی!)
            مثلا می نویسی:
            کد:
            S1:
            PORTD = &HFF
            goto s1
            به همین راحتی!!!
            موفق باشی

            «پشتکار» «پشتکار» «پشتکار»

            دیدگاه


              #7
              پاسخ : قراردادن کلید روی فلاشر

              با تشکر از راهنماییتون ولی این کدها به زبان بیسیک نیست که من بسکام کار میکنم

              دیدگاه


                #8
                پاسخ : قراردادن کلید روی فلاشر

                نوشته اصلی توسط رسول21
                با تشکر از راهنماییتون ولی این کدها به زبان بیسیک نیست که من بسکام کار میکنم
                دوست عزیز قصد جسارت ندارم اما شما هنوز با اصول برنامه نویسی بیسیک اشنا نیستید و دستوراتش رو نمی شناسید با این حال از دوستان می خواین راهنماییتون کنن!
                اول یه سری به اینجا بزن و بعد از اشنایی با دستورات خودت راحت می تونی برنامه رو بنویسی. نتونستی هم خودم در حد توان در خدمتم:::

                چرا ناراحتی پاتریک!
                + امروز ی بچه دیدم سرچهارراه گل میفروخت
                - از دیدنش ناراحت شدی؟
                + نه
                پس چی ناراحتت کرده
                + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
                ------------------------------------------------------------------------------------------------------
                تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
                ------------------------------------------------------------------------------------------------------
                محصولات

                دیدگاه


                  #9
                  پاسخ : قراردادن کلید روی فلاشر

                  نوشته اصلی توسط رسول21
                  با تشکر از راهنماییتون ولی این کدها به زبان بیسیک نیست که من بسکام کار میکنم
                  دوست عزیز منم چون شما گفته بودین با بسکام نوشتم کدها رو ها!!!

                  «پشتکار» «پشتکار» «پشتکار»

                  دیدگاه


                    #10
                    پاسخ : قراردادن کلید روی فلاشر

                    نوشته اصلی توسط کنجکاو!
                    کلید رو به پایه ریست میکرو متصل کن و پایه دیگه کلید رو به زمین:
                    بعد از کانفیگ کردن میکرو و پایه های خروجی برای استفاده از eeprom از این تیکه کد قبل Main...GotoMain استفاده کن:
                    کد:
                    Readeeprom S , 10
                    Incr S
                    If S > 4 Then S = 1
                    
                    Writeeeprom S , 10
                    خب حالا زیرش قسمت Main برنامه که یه حلقه همیشه درسته رو مینویسی:
                    کد:
                    Main:
                    
                    
                    Select Case S
                    Case 1 : Goto S1
                    Case 2 : Goto S2
                    Case 3 : Goto S3
                    Case 4 : Goto S4
                    
                    End Select
                    Goto Main
                    
                    End
                    حالا می تونی چهار زیر برنامه بنویسی به اسم های S1, S2, S3 و S4 (و اگه بخوای میتونی بیشترش هم بکنی فقط یادت باشه توی تیکه کد بالایی توی اون شرط مقدار درنظر گرفته شده برای شرط رو عوض کنی!)
                    مثلا می نویسی:
                    کد:
                    S1:
                    PORTD = &HFF
                    goto s1
                    به همین راحتی!!!
                    موفق باشی
                    میشه همینو برام کامل بنویسی و تستش کنی که کامپایل میشه یانه زحمتتون زیاد میشه من که زیاد چیزی سر در نیاوردم برای استفاده از ایپرام اول برنامه نباید فعال بشه بعدش من دو حالت میخام یکی اینکه چند تا حالت صفر و یک به پینهای 0و1و2 پرت دی بدم اینجا شو خودتون یه دو سه تا حالت با زمان ویت 100 میلی بهش بدین من خودم ویرایشش میکنم بعد با فشار یه کلید میخام هر سه پین یک باشن یعنی دیگه فلاشر نزنه و ثابت بمونه و با یه فشار کلید بره حالت فلاشر

                    دیدگاه


                      #11
                      پاسخ : قراردادن کلید روی فلاشر

                      بفرما عزیز اینم کد؛
                      ولی شدیداً توصیه میکنم در حد همین کاری که می کنی که فقط نیاز به GPIOی میکرو میشه رو یادبگیری، یادگرفتن این برنامه کمتر از 15دقیقه طول میکشه ولی از همه بی نیازت می میکنه!
                      برنامه ات رو کپی کن توی بسکام و اون خطهای سبزی که با فارسی مشخص کردم رو با برنامه فلاشر خودت عوض کن:

                      کد:
                      $regfile = "m8def.dat"
                      $crystal = 1000000
                      
                      Config Portd = Output
                      
                      Dim S As Byte
                      
                      Readeeprom S , 10
                      Incr S
                      If S > 2 Then S = 1
                      
                      Writeeeprom S , 10
                      
                      Main:
                      
                      
                      Select Case S
                      Case 1 : Goto S1
                      Case 2 : Goto S2
                      
                      End Select
                      Goto Main
                      
                      End
                      
                      S1:
                        Portd = &HFF
                      Goto S1
                      
                      S2:
                        'برنامه فلاشر رو اینجا بذار
                      Goto S2
                      موفق باشی

                      «پشتکار» «پشتکار» «پشتکار»

                      دیدگاه


                        #12
                        پاسخ : قراردادن کلید روی فلاشر

                        نوشته اصلی توسط کنجکاو!
                        بفرما عزیز اینم کد؛
                        ولی شدیداً توصیه میکنم در حد همین کاری که می کنی که فقط نیاز به GPIOی میکرو میشه رو یادبگیری، یادگرفتن این برنامه کمتر از 15دقیقه طول میکشه ولی از همه بی نیازت می میکنه!
                        برنامه ات رو کپی کن توی بسکام و اون خطهای سبزی که با فارسی مشخص کردم رو با برنامه فلاشر خودت عوض کن:

                        کد:
                        $regfile = "m8def.dat"
                        $crystal = 1000000
                        
                        Config Portd = Output
                        
                        Dim S As Byte
                        
                        Readeeprom S , 10
                        Incr S
                        If S > 2 Then S = 1
                        
                        Writeeeprom S , 10
                        
                        Main:
                        
                        
                        Select Case S
                        Case 1 : Goto S1
                        Case 2 : Goto S2
                        
                        End Select
                        Goto Main
                        
                        End
                        
                        S1:
                          Portd = &HFF
                        Goto S1
                        
                        S2:
                          'برنامه فلاشر رو اینجا بذار
                        Goto S2
                        موفق باشی
                        خیلی ممنون رفیق برنامه رو تو بسکام بردم برنامه فلاشر خودمو هم ریختم کامپایل شد حالا باید برم عملی تستش کنم ببینم چی میشه
                        فقط یه سوال دیگه من هر تعداد حالت بخام میتونم اضافه کنم که با هر بار فشار کلید یا همون ریست شدن میکرو بره اون حالت رو اجرا کنه؟پس باید زیر برنامه براش تعریف کنم و برنامه شو قرار بدم ؟

                        دیدگاه


                          #13
                          پاسخ : قراردادن کلید روی فلاشر

                          نوشته اصلی توسط کنجکاو!
                          بفرما عزیز اینم کد؛
                          ولی شدیداً توصیه میکنم در حد همین کاری که می کنی که فقط نیاز به GPIOی میکرو میشه رو یادبگیری، یادگرفتن این برنامه کمتر از 15دقیقه طول میکشه ولی از همه بی نیازت می میکنه!
                          برنامه ات رو کپی کن توی بسکام و اون خطهای سبزی که با فارسی مشخص کردم رو با برنامه فلاشر خودت عوض کن:

                          کد:
                          $regfile = "m8def.dat"
                          $crystal = 1000000
                          
                          Config Portd = Output
                          
                          Dim S As Byte
                          
                          Readeeprom S , 10
                          Incr S
                          If S > 2 Then S = 1
                          
                          Writeeeprom S , 10
                          
                          Main:
                          
                          
                          Select Case S
                          Case 1 : Goto S1
                          Case 2 : Goto S2
                          
                          End Select
                          Goto Main
                          
                          End
                          
                          S1:
                            Portd = &HFF
                          Goto S1
                          
                          S2:
                            'برنامه فلاشر رو اینجا بذار
                          Goto S2
                          موفق باشی

                          مهندس راه حل عالی بود ممنون.

                          فقط منطق این خط چیه ؟
                          Dim S As Byte

                          Readeeprom S , 10
                          Incr S
                          If S > 2 Then S = 1

                          Writeeeprom S , 10

                          یعنی از آدرس 10 eeprom میخونه و یکی افزایش میده و اگر بزرگتر از 2 بود 1 میکنه و مینویسه داخل آدرس 10 eeprom ?

                          دیدگاه


                            #14
                            پاسخ : قراردادن کلید روی فلاشر

                            خیلی ممنون رفیق برنامه رو تو بسکام بردم برنامه فلاشر خودمو هم ریختم کامپایل شد حالا باید برم عملی تستش کنم ببینم چی میشه
                            فقط یه سوال دیگه من هر تعداد حالت بخام میتونم اضافه کنم که با هر بار فشار کلید یا همون ریست شدن میکرو بره اون حالت رو اجرا کنه؟پس باید زیر برنامه براش تعریف کنم و برنامه شو قرار بدم ؟
                            امیدوارم مشکلت حل شده باشه!
                            آره عزیز، هر تعدادی که بخوای می تونی اضافه کنی فقط حواست باشه که توی شرط اولیه مربوط به چک کردن متغیر eeprom اونو تأثیر بدی

                            مهندس راه حل عالی بود ممنون.

                            فقط منطق این خط چیه ؟
                            Dim S As Byte

                            Readeeprom S , 10
                            Incr S
                            If S > 2 Then S = 1

                            Writeeeprom S , 10

                            یعنی از آدرس 10 eeprom میخونه و یکی افزایش میده و اگر بزرگتر از 2 بود 1 میکنه و مینویسه داخل آدرس 10 eeprom ?
                            خواهش می کنم
                            دقیقاً درست گفتی! با اینکار شماره برنامه مورد نظر رو به دست میاریم!
                            نیاز به مدار خاصی هم برای کلید نیست و پایه اضافی هم اشغال نمیشه!
                            موفق باشی

                            «پشتکار» «پشتکار» «پشتکار»

                            دیدگاه


                              #15
                              پاسخ : قراردادن کلید روی فلاشر

                              چند تا سوال دیگه برام پیش اومد ممنون میشم جواب بدین
                              1-اگه من بخام دو تا سیم که به پایه ریست و گروند وصل شده رو بکشم بیارم تا کلید حدود 5 یا 6 متری جواب میده نویز میندازه راحش چیه؟البته یه شب تابلو رو زدم رو حالت یک بود البته با سیم کوتاه کلید بعد صبح اومدم دیدم حالت فلاشر عوض شده میکرو خودش ریست شده بود؟علتش چیه
                              2-دیگه اگه مدار خاموش بشه بعد روشن کنیم از کدوم برنامه شروع بکار میکنه از 1 میاد یا هر برنامه ای که خاموش شده بود میاره؟
                              3-این حافظه ایپرام که ما ازش استفاده کردم با ریست میکرو حالا هزار یا چند هزار بار ازبین نمیره کلا محدودیت دفعات ریست داره یا نه؟
                              ببخشید سوالاتم زیاد شد؟

                              دیدگاه

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