اطلاعیه

Collapse
No announcement yet.

اشکال در برنامه نویسی لظفا بیاین

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

    اشکال در برنامه نویسی لظفا بیاین

    سلام. دوستان من برنامه واسه سوال زیر نوشتم ولی جواب نمیده نمیدونم چطور باید برنامه stop بنویسم که تحت هرشرایطی تو الویت باشه و اجرا بشه ممنون میشم اگه راهنماییم کنید.
    در یک فرآیند تولیدی دو عدد موتور وجود دارد و یک شستی start و stop. خط را طوری طراحی کنید که با تحریک شستی start موتور اول روشن شده و بعد از وقفه 5s موتور دوم نیز روشن شود. بعد از گذشت 7s از روشن شدن موتور دوم، موتور اول خاموش شده و اگر موتور دوم روشن بود و سنسور تحریک شده بود موتور دوم خاموش شده و بعد از 5s موتور اول روشن شود. در هر صورت با زدن stop همه چیز خاموش شود...

    $regfile = "m8def.dat"
    $crystal = 8000000
    Config Portb.6 = Input
    Config Portb.7 = Input
    Config Portb.5 = Input
    Start Alias Pinb.6
    Stop Alias Pinb.7
    Sensor Alias Pinb.5
    Config Portd.7 = Output
    Config Portd.6 = Output
    Motor1 Alias Portd.6
    Motor2 Alias Portd.7
    Do
    Debounce Start , 1 , Label1
    Debounce Sensor , 1 , Sensor1
    Debounce Stop , 1 , Label2
    Loop
    End


    Label1:


    Set Motor1
    Wait 5
    Set Motor2
    Wait 7
    Reset Motor1
    Set Motor2
    Return


    Label2:
    Reset Motor1
    Reset Motor2
    Return




    Sensor1:
    If Motor2 = 1 Then
    Reset Motor2
    Wait 5
    Set Motor1
    End If


    Return

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

    کسی نیست

    #2
    پاسخ : اشکال در برنامه نویسی لظفا بیاین

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

    ادمین انتقال نقل و قول کار نمیکنه اینجا!

    دیدگاه


      #3
      پاسخ : اشکال در برنامه نویسی لظفا بیاین

      به ما هنوز تایمر آموزشش ندادند گفتند با این مدل دستورات بنویسیم با حلقه های شرطی هم نوشتم جواب نداد. میشه راهنماییم کنید

      دیدگاه


        #4
        پاسخ : اشکال در برنامه نویسی لظفا بیاین

        اگر تایمر نمیدونی
        میتونی به جای دستور wait از دستور waitms در داخل یک لوپ استفاده کنی
        برای تمرین الان یه برنامه بنویس که نوسط یک لوپ و دستور waitms 10 یک تاخیر 5 ثانیه تولید کنه تا بعد

        دیدگاه


          #5
          پاسخ : اشکال در برنامه نویسی لظفا بیاین

          از این روش هم میتونی استفاده کنی:
          کد:
          For Timetemp = 0 To 5000
            Debounce Stopfunc , 1 , Stopfunction
            Waitms 1
           Next
          به جای 5000 هر عددی میخای بزار - به همون اندازه میلی ثانیه وقفه میخوره. و هر دستوری که میخای که چک کنی رو هم داخل این for next بنویس.
          جای دستور wait 5 تو کد خودت بیا کل اینو بزار و اونو پاک کن.

          موفق باشید.
          به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
          (پیش به سوی هدف)

          دیدگاه


            #6
            پاسخ : اشکال در برنامه نویسی لظفا بیاین

            نوشته اصلی توسط hosseinam نمایش پست ها
            از این روش هم میتونی استفاده کنی:
            کد:
            For Timetemp = 0 To 5000
              Debounce Stopfunc , 1 , Stopfunction
              Waitms 1
             Next
            به جای 5000 هر عددی میخای بزار - به همون اندازه میلی ثانیه وقفه میخوره. و هر دستوری که میخای که چک کنی رو هم داخل این for next بنویس.
            جای دستور wait 5 تو کد خودت بیا کل اینو بزار و اونو پاک کن.

            موفق باشید.
            خیلی ممنون ببخشید یک سوال داشتم یعنی به جای هر کدوم ار دستور wait باید اینو بذارم و متغییر Timetemp رو چه طور باید تعریف کنم

            دیدگاه


              #7
              پاسخ : اشکال در برنامه نویسی لظفا بیاین

              برنامه اینجوری نوشتم بازم خطا میده
              $regfile = "m8def.dat"
              $crystal = 8000000
              Config Portb.6 = Input
              Config Portb.7 = Input
              Config Portb.5 = Input
              Dim Temp Word
              Start1 Alias Pinb.6
              Stop1 Alias Pinb.7
              Sensor Alias Pinb.5
              Config Portd.7 = Output
              Config Portd.6 = Output
              Motor1 Alias Portd.6
              Motor2 Alias Portd.7
              Do
              Debounce Stop1 , 1 ,Stopfunction
              Debounce Start1 , 1 , Startfunction


              Loop
              End




              Startfunction:
              Set Motor1
              For Temp = 0 To 5000
              Debounce Stop1 , 1 , Stopfunction
              Waitms 1
              Next


              Set Motor2
              Wait 7
              Reset Motor1
              Set Motor2


              Return






              Stopfunction:
              Reset Motor1
              Reset Motor2


              Return

              دیدگاه


                #8
                پاسخ : اشکال در برنامه نویسی لظفا بیاین

                یکی بیاد کمکم کنه از صبح دارم کار میکنم جواب نمیده

                دیدگاه


                  #9
                  پاسخ : اشکال در برنامه نویسی لظفا بیاین

                  نوشته اصلی توسط elham5570 نمایش پست ها
                  خیلی ممنون ببخشید یک سوال داشتم یعنی به جای هر کدوم ار دستور wait باید اینو بذارم و متغییر Timetemp رو چه طور باید تعریف کنم

                  خوب باید اینقدری پهنا داشته باشه این متغییر که بیاد اعدادی که میخای رو پوشش بده دیگه مثلا اینجا چون 5000 میخای و اینتیجر هم تا 65536 پوشش میده . میتونی از integer هم استفاده کنید.

                  یکی بیاد کمکم کنه از صبح دارم کار میکنم جواب نمیده
                  شما بیا اون for next رو یه تابع wait در نظر بگییر. بجای اون 7 ثانیه هم اینو بزار.
                  در ضمن بیا یه متغییر flag از نوع بیت تعریف کن . و متغییر رو بزار داخل تابع استوپ. وقتی که استوپ فراخانی شد بیا اون متغییر رو یک کن. و بعد با یه دستور if که داخل همون for next مینویسی بیا چک کن که آیا متغییر flag مساوی با یک شده بیا با دستور exit sub از تابع خارج شو. یادت باشه داخل حلقه دوباره این متغییر رو برای استفاده دوباره صفر کنی.
                  به این دلیل که مثلا اگه داخل تابع استارت استوپ زدی - دیگه زمان ها 5 ثانیه و 7 ثانیه نیاد سپری شه تا دوباره به سرعت بتونی استارت رو از حلقه اول بزنی بزنی.
                  داری درست پیش میری دیگه. مشکلت کجاست؟؟
                  به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
                  (پیش به سوی هدف)

                  دیدگاه


                    #10
                    پاسخ : اشکال در برنامه نویسی لطفا بیاین

                    همین برنامه که شما گفتین نوشتم ولی همین خط for و خط تعربف متغییرش خطا میده سیمولیت نمیشه. میشه همین چیزی که گفتین بنویسین من هنک کردم فردام باید اینو تحویل بدم. واقعا ممنونم .

                    حسین آقا میشه برنامشو خودتون تو بسگام اجرا گنید بفرستین . خیلی خسته شدم از نه صبح دارم هی مینویسم پروگرم می کنم جواب نمیده.

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

                    برنامه START STOP درست شد میشه بگین برنامه سنسورشو کجا بنویسم چون اونجور که خودم نوشتم اجرا نمیشه قبلی هام خراب میشه

                    دیدگاه


                      #11
                      پاسخ : اشکال در برنامه نویسی لظفا بیاین

                      اینو باید تو حلقه اصلی برنامت بزاری :

                      کد:
                      If Sensor = 1 And Motor2 = 1 Then
                      
                       
                       Reset Motor2
                       Wait 5
                       Set Motor2
                      
                      End If
                      اگه میخای چیزی رو چک کنی بجای wait بیا همون for next رو بنویس.
                      من نمیدونم شما تا کجا نوشتیمن که. داری درست میری مسیر رو.
                      به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
                      (پیش به سوی هدف)

                      دیدگاه


                        #12
                        پاسخ : اشکال در برنامه نویسی لظفا بیاین

                        نوشته اصلی توسط hosseinam نمایش پست ها
                        اینو باید تو حلقه اصلی برنامت بزاری :


                        کد:
                        If Sensor = 1 And Motor2 = 1 Then
                        
                         
                         Reset Motor2
                         Wait 5
                         Set Motor2
                        
                        End If
                        اگه میخای چیزی رو چک کنی بجای wait بیا همون for next رو بنویس.
                        من نمیدونم شما تا کجا نوشتیمن که. داری درست میری مسیر رو.
                        ببخشید یعنی دستور دیبانس سنسور باید در زیر برنامه استارت بنویسم نوشتم استارت و استپ بهم ریخت. چون تو برنامه استارت وقتی موتور 2 روشن شد باید چک کنه اگه سنسور یک شده بود که موتور دو خاموش و موتور یک بعد پنج تانیه روشن بشه
                        $regfile = "m8def.dat"
                        $crystal = 8000000
                        Config Portb.6 = Input
                        Config Portb.7 = Input
                        Config Portb.5 = Input
                        Dim Temp As Integer




                        Start1 Alias Pinb.6
                        Stop1 Alias Pinb.7
                        Sensor Alias Pinb.5
                        Config Portd.7 = Output
                        Config Portd.6 = Output
                        Motor1 Alias Portd.6
                        Motor2 Alias Portd.7
                        Do
                        Debounce Stop1 , 1 ,Stopfunction
                        Debounce Start1 , 1 , Startfunction
                        Rem debounce Sensor , 1 , Sensorfunction
                        Loop
                        End




                        Startfunction:
                        Set Motor1
                        For Temp = 0 To 5000
                        Debounce Stop1 , 1 , Stopfunction
                        Rem Debounce Sensor , 1 , Sensorfunction
                        Waitms 1
                        Next Temp


                        Set Motor2


                        For Temp = 0 To 7000
                        Debounce Stop1 , 1 , Stopfunction
                        Rem Debounce Sensor , 1 , Sensorfunction
                        Waitms 1
                        Next Temp




                        Reset Motor1
                        Set Motor2


                        Return






                        Stopfunction:


                        Reset Motor1
                        Reset Motor2


                        Return




                        Sensorfunction:
                        Reset Motor2
                        Wait 5
                        Set Motor1
                        Return

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

                        اینو نوشتم فقط موتور 1 روشن میشه موتور 2 هم هر چند ثانیه چشمک میزنه استپ هم کار نمی کنه


                        $regfile = "m8def.dat"
                        $crystal = 8000000
                        Config Portb.6 = Input
                        Config Portb.7 = Input
                        Config Portb.5 = Input
                        Dim Temp As Integer




                        Start1 Alias Pinb.6
                        Stop1 Alias Pinb.7
                        Sensor Alias Pinb.5
                        Config Portd.7 = Output
                        Config Portd.6 = Output
                        Motor1 Alias Portd.6
                        Motor2 Alias Portd.7
                        Do
                        Debounce Stop1 , 1 ,Stopfunction
                        Debounce Start1 , 1 , Startfunction
                        Debounce Sensor , 1 , Sensorfunction
                        Loop
                        End




                        Startfunction:
                        Set Motor1
                        For Temp = 0 To 5000
                        Debounce Stop1 , 1 , Stopfunction
                        Debounce Sensor , 1 , Sensorfunction
                        Waitms 1
                        Next Temp


                        Set Motor2


                        For Temp = 0 To 7000
                        Debounce Stop1 , 1 , Stopfunction
                        Debounce Sensor , 1 , Sensorfunction
                        Waitms 1
                        Next Temp




                        Reset Motor1
                        Set Motor2


                        Return






                        Stopfunction:


                        Reset Motor1
                        Reset Motor2


                        Return




                        Sensorfunction:


                        If Sensor = 1 And Motor2 = 1 Then




                        Reset Motor2
                        Wait 5
                        Set Motor2


                        End If

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

                        من منتظرما

                        دیدگاه


                          #13
                          پاسخ : اشکال در برنامه نویسی لظفا بیاین

                          هیشکی نیست

                          دیدگاه


                            #14
                            پاسخ : اشکال در برنامه نویسی لظفا بیاین

                            نوشته اصلی توسط elham5570 نمایش پست ها
                            هیشکی نیست
                            برنامتو اپ لود کن دقیق بگو چی میخوای تا ساعت 1 هستم

                            دیدگاه


                              #15
                              پاسخ : اشکال در برنامه نویسی لظفا بیاین

                              دیشب کمی مشکل رخ داد اصلا پست ها تو تاپیکک مشخص نبود.
                              کد و اونطور که فکر میکردم شما میخایین رو براتون اصلاح کردم.
                              چون با زدن استارت موتور روشن میشه و بر میگرده به حلقه اصلی - شما باید همونجا چک کنید که سنسور زده شد یا نه. یجای دیگه که باید چک بشه دخل خود استارت زمانی که موتور دوم روشن شد و منتظر هست که متور اول خاموش بشه هست.
                              کد:
                              $regfile = "m8def.dat"
                              $crystal = 8000000
                              Config Portb.6 = Input
                              Config Portb.7 = Input
                              Config Portb.5 = Input
                              
                              
                              
                              Declare Sub Startfunction
                              Declare Sub Stopfunction
                              Declare Sub Sensorfunction
                              
                              
                              
                              Dim Temp As Integer
                              
                              
                              Start1 Alias Pinb.6
                              Stop1 Alias Pinb.7
                              Sensor Alias Pinb.5
                              Config Portd.7 = Output
                              Config Portd.6 = Output
                              Motor1 Alias Portd.6
                              Motor2 Alias Portd.7
                              
                               '----------------------------
                              
                              'here is your main code
                              
                              Do
                              
                               Debounce Stop1 , 1 , Stopfunction
                               Debounce Start1 , 1 , Startfunction
                               Call Sensorfunction                                        'always use call to get a function
                              
                              Loop
                              
                              End
                              
                              
                              '----------------------------
                              
                              Sub Startfunction
                              
                               Set Motor1
                              
                               For Temp = 0 To 5000
                                Debounce Stop1 , 1 , Stopfunction
                                Waitms 1
                               Next Temp
                              
                               Set Motor2
                              
                               For Temp = 0 To 7000
                                Debounce Stop1 , 1 , Stopfunction
                                Call Sensorfunction
                                Waitms 1
                               Next Temp
                              
                               Reset Motor1
                               Set Motor2
                              
                              
                              End Sub
                              
                              '----------------------------
                              
                              Sub Stopfunction
                              
                              
                               Reset Motor1
                               Reset Motor2
                              
                              
                              End Sub
                              
                              
                              '----------------------------
                              
                              Sub Sensorfunction
                              
                              
                               If Sensor = 1 And Motor2 = 1 Then
                              
                                Reset Motor2
                                Wait 5
                                Set Motor2
                              
                               End If
                              
                              End Sub
                              به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
                              (پیش به سوی هدف)

                              دیدگاه

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