اطلاعیه

Collapse
No announcement yet.

کمک برای تصحیح برنامه روبات

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

    کمک برای تصحیح برنامه روبات

    سلام دوستان خسته نباشید
    قدیما که کلاس رباتیک میرفتم استادمون برای ربات ی برنامه نوشته بود ولی من به علت اینکه کوچیک بودم(ابتدایی بودم)و هم این که دیگه کلاس نرفتم نتوستم توضیح تک تک خطوط برنامرو یاد بگیرم به علاوه این که برنامه ای که الان دستمه نمیدونم کامله یا نه چون بیشتر کارا رو با کامپیوتر های همونجا انجام میدادیم.همونجا هم سیو میکردیم برای همین میخوام بهم ی لطفی بکینید و بگید که کم و کسری داره یانه و هم چند تا خطو برام توضیح بدی
    وری وری ممنون :biggrin:
    [code=qbasic]

    $regfile = "m32def.dat"
    $crystal = 8000000

    '_________________________ CONFIG TIMER MOD=PWM ________________________________

    Config Timer1 = Pwm , Pwm = 8 , Prescale = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
    Start Timer1

    '____________________________ CONFIG LCD _______________________________________

    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Porta.0 , Db5 = Porta.1 , Db6 = Porta.2 , Db7 = Porta.3 , E = Porta.5 , Rs = Porta.4
    Cursor Off
    Cls

    '______________________________ CONFIG PORT ____________________________________


    Config Portd = Output

    '__________________________ DECLARE & SUB ______________________________________

    Declare Sub Leftf()
    Declare Sub Lefts()
    Declare Sub Stp()
    Declare Sub Back()
    Declare Sub Forward()

    Declare Sub Rights()
    Declare Sub Rightf() 'BLACK
    '____________________________ VARIYBALE ________________________________________

    Dim S(11) As Byte
    Dim Ss As String * 11
    Dim I As Byte

    '__________________________ START PROGRAM ______________________________________

    '____________________________ SUB WHITE ________________________________________



    Do

    S(1) = Pinb.0
    S(2) = Pinb.1
    S(3) = Pinb.2
    S(4) = Pinb.3
    S(5) = Pinb.4
    S(6) = Pinb.5
    S(7) = Pinb.6
    S(8) = Pinb.7


    S(9) = Pinc.7
    S(10) = Pinc.6
    S(11) = Pinc.5

    Ss = Str(s(1)) + Str(s(2)) + Str(s(3)) + Str(s(4)) + Str(s(5)) + Str(s(6)) + Str(s(7)) + Str(s(8)) + Str(s(9)) + Str(s(10)) + Str(s(11))








    If Ss = "10000000000" Then Call Rightf() '1
    If Ss = "01000000000" Then Call Rightf() '2
    If Ss = "00100000000" Then Call Rights() '3
    If Ss = "00010000000" Then Call Rights() '4
    If Ss = "00001000000" Then Call Forward() '5
    If Ss = "00000100000" Then Call Forward() '6
    If Ss = "00000010000" Then Call Forward() '7

    If Ss = "00000110000" Then Call Forward() '7
    If Ss = "00001110000" Then Call Forward() '7
    If Ss = "00001100000" Then Call Forward() '7


    If Ss = "00000001000" Then Call Lefts() '8
    If Ss = "00000000100" Then Call Lefts() '9
    If Ss = "00000000010" Then Call Leftf() '10
    If Ss = "00000000001" Then Call Leftf() '14
    '____________________________________________ ___________________________________

    If Ss = "11000000000" Then Call Rightf()
    If Ss = "01100000000" Then Call Rightf()
    If Ss = "00110000000" Then Call Rights()
    If Ss = "00011000000" Then Call Rights()


    If Ss = "00000011000" Then Call Lefts()
    If Ss = "00000001100" Then Call Lefts()
    If Ss = "00000000110" Then Call Leftf()
    If Ss = "00000000011" Then Call Leftf()





    '_______________________________zohaiyr______ _________________________________
    If Ss = "11100000000" Then Call Rightf()
    If Ss = "01110000000" Then Call Rightf()
    If Ss = "00111000000" Then Call Rights()
    If Ss = "00011100000" Then Call Rights()

    If Ss = "00000111000" Then Call Lefts()
    If Ss = "00000011100" Then Call Lefts()
    If Ss = "00000001110" Then Call Leftf()
    If Ss = "00000000111" Then Call Leftf()
    '____________________________________________ ___________________________________

    If Ss = "11100001110" Then Call Leftf()
    If Ss = "01110001110" Then Call Leftf()
    If Ss = "00111011000" Then Call Leftf()
    If Ss = "00110011100" Then Call Leftf()
    If Ss = "00001101110" Then Call Leftf()
    If Ss = "00000000000" Then Call Back()
    If Ss = "00000001111" Then Call Leftf()
    If Ss = "11110000000" Then Call Rightf()
    If Ss = "01111000000" Then Call Rightf()
    If Ss = "00000011110" then Call Leftf()



    Home
    Lcd Ss



    Loop


    '_____________________________ END SUB WHITE ___________________________________
    Sub Back()
    Reset Portd.0
    Set Portd.1
    Pwm1b = 250
    Set Portd.2
    Reset Portd.3
    Pwm1a = 250
    Return
    End Sub

    '________________________ SUB FORWARD __________________________________________
    Sub Forward()
    Set Portd.0
    Reset Portd.1
    Pwm1b = 250
    Reset Portd.2
    Set Portd.3
    Pwm1a = 250
    Return
    End Sub
    '__________________________ END SUB ____________________________________________

    '___________________________SUB 20 _____________________________________________
    Sub Stp()
    Reset Portd.0
    Reset Portd.1
    Pwm1b = 0
    Reset Portd.2
    Reset Portd.3
    Pwm1a = 0
    Return
    End Sub


    '___________________________SUB FAST ___________________________________________
    Sub Rightf()
    Reset Portd.2
    Set Portd.3
    Pwm1a = 200
    Reset Portd.0
    Set Portd.1
    Pwm1b = 200

    Return
    End Sub

    Sub Leftf()
    Set Portd.0
    Reset Portd.1
    Pwm1b = 200

    Set Portd.2
    Reset Portd.3
    Pwm1a = 200

    Return
    End Sub
    '__________________________ END SUB ____________________________________________

    Sub Rights()
    Set Portd.0
    Reset Portd.1
    Pwm1b = 150
    Reset Portd.2
    Set Portd.3
    Pwm1a = 200
    Waitms 400
    Return
    End Sub

    Sub Lefts()
    Set Portd.0
    Reset Portd.1
    Pwm1b = 200
    Reset Portd.2
    Set Portd.3
    Pwm1a = 150
    Waitms 400
    Return
    End Sub

    [/code]

    #2
    پاسخ : کمک برای تصحیح برنامه روبات

    سلام
    دوست عزیز من که مشکلی تو این برنامه نمیبینم ازنظرکامل بودن هم نمیتونم نظر بدم چون نمیدونم مدارتون چه شکلیه به هرحال اگه ازش استفاده کردی مشکلی داشت بگو ............
    راستی اگه برنامه مشکل داشته باشه کامپایلر بسکام ارور میده....
    :icon_razz: :icon_razz: :icon_razz:

    دیدگاه


      #3
      پاسخ : کمک برای تصحیح برنامه روبات

      نوشته اصلی توسط sjaber
      سلام
      دوست عزیز من که مشکلی تو این برنامه نمیبینم ازنظرکامل بودن هم نمیتونم نظر بدم چون نمیدونم مدارتون چه شکلیه به هرحال اگه ازش استفاده کردی مشکلی داشت بگو ............
      راستی اگه برنامه مشکل داشته باشه کامپایلر بسکام ارور میده....
      :icon_razz: :icon_razz: :icon_razz:
      منظورم از مشکل اینه که کم و کسری نداشته باشه
      راستی میشه خط های 34 تا 60 رو یه توضیح کوچیک بدبد

      دیدگاه


        #4
        پاسخ : کمک برای تصحیح برنامه روبات

        DIM S(11) AS Byte متغیر (S(11 رو ازنوع بایت مشخص کرده
        DIM Ss AS STRING * 11 متغیر Ssرو از نوع استرینگ معرفی کرده
        DIM I AS Byte یعنی متغیر I ازنوع بایت.
        Do یعنی آغاز حلقه که با loop حلقه تموم میشه
        وخط 46 تا58 هم پورت bرو به عنوان ورودی تعریف کرده و با s() نام گذاری شون کرده

        من تا این حد بلد بودم اگه اتباه داشتم به بزرگی خودت ببخش.....
        راستی اگه توبرنامه نویسی مشکل داشتی کتاب آقای علی کاهه رو بخون...
        فعلا بای :redface: :redface: :redface: :redface:

        دیدگاه


          #5
          پاسخ : کمک برای تصحیح برنامه روبات

          نوشته اصلی توسط zoheyr79
          سلام دوستان خسته نباشید
          قدیما که کلاس رباتیک میرفتم استادمون برای ربات ی برنامه نوشته بود ولی من به علت اینکه کوچیک بودم(ابتدایی بودم)و هم این که دیگه کلاس نرفتم نتوستم توضیح تک تک خطوط برنامرو یاد بگیرم به علاوه این که برنامه ای که الان دستمه نمیدونم کامله یا نه چون بیشتر کارا رو با کامپیوتر های همونجا انجام میدادیم.همونجا هم سیو میکردیم برای همین میخوام بهم ی لطفی بکینید و بگید که کم و کسری داره یانه و هم چند تا خطو برام توضیح بدی
          وری وری ممنون :biggrin:
          [code=qbasic]

          $regfile = "m32def.dat"
          $crystal = 8000000

          '_________________________ CONFIG TIMER MOD=PWM ________________________________

          Config Timer1 = Pwm , Pwm = 8 , Prescale = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
          Start Timer1

          '____________________________ CONFIG LCD _______________________________________

          Config Lcd = 16 * 2
          Config Lcdpin = Pin , Db4 = Porta.0 , Db5 = Porta.1 , Db6 = Porta.2 , Db7 = Porta.3 , E = Porta.5 , Rs = Porta.4
          Cursor Off
          Cls

          '______________________________ CONFIG PORT ____________________________________


          Config Portd = Output

          '__________________________ DECLARE & SUB ______________________________________

          Declare Sub Leftf()
          Declare Sub Lefts()
          Declare Sub Stp()
          Declare Sub Back()
          Declare Sub Forward()

          Declare Sub Rights()
          Declare Sub Rightf() 'BLACK
          '____________________________ VARIYBALE ________________________________________

          Dim S(11) As Byte
          Dim Ss As String * 11
          Dim I As Byte

          '__________________________ START PROGRAM ______________________________________

          '____________________________ SUB WHITE ________________________________________



          Do

          S(1) = Pinb.0
          S(2) = Pinb.1
          S(3) = Pinb.2
          S(4) = Pinb.3
          S(5) = Pinb.4
          S(6) = Pinb.5
          S(7) = Pinb.6
          S(8) = Pinb.7


          S(9) = Pinc.7
          S(10) = Pinc.6
          S(11) = Pinc.5

          Ss = Str(s(1)) + Str(s(2)) + Str(s(3)) + Str(s(4)) + Str(s(5)) + Str(s(6)) + Str(s(7)) + Str(s(8)) + Str(s(9)) + Str(s(10)) + Str(s(11))








          If Ss = "10000000000" Then Call Rightf() '1
          If Ss = "01000000000" Then Call Rightf() '2
          If Ss = "00100000000" Then Call Rights() '3
          If Ss = "00010000000" Then Call Rights() '4
          If Ss = "00001000000" Then Call Forward() '5
          If Ss = "00000100000" Then Call Forward() '6
          If Ss = "00000010000" Then Call Forward() '7

          If Ss = "00000110000" Then Call Forward() '7
          If Ss = "00001110000" Then Call Forward() '7
          If Ss = "00001100000" Then Call Forward() '7


          If Ss = "00000001000" Then Call Lefts() '8
          If Ss = "00000000100" Then Call Lefts() '9
          If Ss = "00000000010" Then Call Leftf() '10
          If Ss = "00000000001" Then Call Leftf() '14
          '____________________________________________ ___________________________________

          If Ss = "11000000000" Then Call Rightf()
          If Ss = "01100000000" Then Call Rightf()
          If Ss = "00110000000" Then Call Rights()
          If Ss = "00011000000" Then Call Rights()


          If Ss = "00000011000" Then Call Lefts()
          If Ss = "00000001100" Then Call Lefts()
          If Ss = "00000000110" Then Call Leftf()
          If Ss = "00000000011" Then Call Leftf()





          '_______________________________zohaiyr______ _________________________________
          If Ss = "11100000000" Then Call Rightf()
          If Ss = "01110000000" Then Call Rightf()
          If Ss = "00111000000" Then Call Rights()
          If Ss = "00011100000" Then Call Rights()

          If Ss = "00000111000" Then Call Lefts()
          If Ss = "00000011100" Then Call Lefts()
          If Ss = "00000001110" Then Call Leftf()
          If Ss = "00000000111" Then Call Leftf()
          '____________________________________________ ___________________________________

          If Ss = "11100001110" Then Call Leftf()
          If Ss = "01110001110" Then Call Leftf()
          If Ss = "00111011000" Then Call Leftf()
          If Ss = "00110011100" Then Call Leftf()
          If Ss = "00001101110" Then Call Leftf()
          If Ss = "00000000000" Then Call Back()
          If Ss = "00000001111" Then Call Leftf()
          If Ss = "11110000000" Then Call Rightf()
          If Ss = "01111000000" Then Call Rightf()
          If Ss = "00000011110" then Call Leftf()



          Home
          Lcd Ss



          Loop


          '_____________________________ END SUB WHITE ___________________________________
          Sub Back()
          Reset Portd.0
          Set Portd.1
          Pwm1b = 250
          Set Portd.2
          Reset Portd.3
          Pwm1a = 250
          Return
          End Sub

          '________________________ SUB FORWARD __________________________________________
          Sub Forward()
          Set Portd.0
          Reset Portd.1
          Pwm1b = 250
          Reset Portd.2
          Set Portd.3
          Pwm1a = 250
          Return
          End Sub
          '__________________________ END SUB ____________________________________________

          '___________________________SUB 20 _____________________________________________
          Sub Stp()
          Reset Portd.0
          Reset Portd.1
          Pwm1b = 0
          Reset Portd.2
          Reset Portd.3
          Pwm1a = 0
          Return
          End Sub


          '___________________________SUB FAST ___________________________________________
          Sub Rightf()
          Reset Portd.2
          Set Portd.3
          Pwm1a = 200
          Reset Portd.0
          Set Portd.1
          Pwm1b = 200

          Return
          End Sub

          Sub Leftf()
          Set Portd.0
          Reset Portd.1
          Pwm1b = 200

          Set Portd.2
          Reset Portd.3
          Pwm1a = 200

          Return
          End Sub
          '__________________________ END SUB ____________________________________________

          Sub Rights()
          Set Portd.0
          Reset Portd.1
          Pwm1b = 150
          Reset Portd.2
          Set Portd.3
          Pwm1a = 200
          Waitms 400
          Return
          End Sub

          Sub Lefts()
          Set Portd.0
          Reset Portd.1
          Pwm1b = 200
          Reset Portd.2
          Set Portd.3
          Pwm1a = 150
          Waitms 400
          Return
          End Sub

          [/code]
          ابتدایی کوچیکه؟؟؟
          .
          .
          .
          .
          .
          شوحی کردم.اما این رو بگم که شما خیلی راحت میتونستید همون موقع اقدام به یاد گری کامل الکترنیک بکنید.من از چهارم ابتدایی شروع به برنامه نویسی کردم تا قبلش هم از 5 سالگی هم کیت سر هم میکردم.
          پس کوچکی دلیل بر نفهمیدن خیلی چیز ها نمیشود.
          در مورد برنامه هم باید بگم به نظر بی عیب و نقص میاد اما نمیشه صد درصد گفت.چون معمولا کار رو که عملی میکنین 175 درجه با تیوریش متفاوته
          امید وارم که ناراحت نشده باشید
          مشخصات : http://www.eca.ir/forum2/index.php?topic=1721.msg638969#msg638969

          هیچ وقت از یادگیری نترس
          [move] :agree: :biggrin: :sad: :rolleyes:[/move]

          دیدگاه


            #6
            پاسخ : کمک برای تصحیح برنامه روبات

            نوشته اصلی توسط sjaber
            DIM S(11) AS Byte متغیر (S(11 رو ازنوع بایت مشخص کرده
            DIM Ss AS STRING * 11 متغیر Ssرو از نوع استرینگ معرفی کرده
            DIM I AS Byte یعنی متغیر I ازنوع بایت.
            Do یعنی آغاز حلقه که با loop حلقه تموم میشه
            وخط 46 تا58 هم پورت bرو به عنوان ورودی تعریف کرده و با s() نام گذاری شون کرده

            من تا این حد بلد بودم اگه اتباه داشتم به بزرگی خودت ببخش.....
            راستی اگه توبرنامه نویسی مشکل داشتی کتاب آقای علی کاهه رو بخون...
            فعلا بای :redface: :redface: :redface: :redface:
            ممنون
            نوشته اصلی توسط mj.sh
            ابتدایی کوچیکه؟؟؟
            .
            .
            .
            .
            .
            شوحی کردم.اما این رو بگم که شما خیلی راحت میتونستید همون موقع اقدام به یاد گری کامل الکترنیک بکنید.من از چهارم ابتدایی شروع به برنامه نویسی کردم تا قبلش هم از 5 سالگی هم کیت سر هم میکردم.
            پس کوچکی دلیل بر نفهمیدن خیلی چیز ها نمیشود.
            در مورد برنامه هم باید بگم به نظر بی عیب و نقص میاد اما نمیشه صد درصد گفت.چون معمولا کار رو که عملی میکنین 175 درجه با تیوریش متفاوته
            امید وارم که ناراحت نشده باشید
            من منظورم از فهم برنامه نویسی بود منم قبل از این که کلاس رباتیک برم بابام دید علاقه زیادی برام هویه گرفت منم را به راه دستمو میسوزوندم و کیت میساختم :mrgreen:
            اما من فکر میکنم سن خیلی توی فهم تاثیر داره من خودوم تا پارسال ازpwm وتایمر چیزی سر در نمی آوردم
            نه بابا منو چه به ناراحت شدن من کلا اینطوریم :mrgreen:
            ممنون بابت راهنمایی

            دیدگاه

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