اطلاعيه

Collapse
No announcement yet.

حرکت قبلی در مسیریاب

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

    حرکت قبلی در مسیریاب

    من میخوام وقتی سنسور هام تو ربات مسیریاب همه روی زمینه ی سفید رفت حرکت قبلیشو انجام بده ! یکی به من گفت که تو زبان سی خود به خود خودش حرکت قبلی رو میره اما وقتی تست کردم نمیشد ! یک جا خوندم با آرایه میشه , اما من دقیقا نمفهمم ک من چ جوری حرکت ها رو بریزم تو آرایه که هر دفعه یک آرایه بزارم و چ جوری بفهمم که حرکت قبلیم مال شماره کدوم آرایه بوده ! لطفا هر کسی کمکی از دستش بر می آید دریغ نکنه !
    خیلی ممنون
    راستی کدی که من نوشتم اینطوریه :


    if ( !senVasat ) Move(cw,cw250,250);
    if ( !sen Righet1 ) Move(cw,cw,250,200);
    if ( !sen Left1 ) Move(cw,cw,200,250);


    این طوری کد نوشتم تا به آخر , جای اون سن ها پین های مورد نظر هست ! فقط میخوام کاری کنم تا وقتی همه ی سنسور ها روی زمینه سفید رفت ربات حرکت قبلی رو ادامه بده , اما نمیدونم چ جوری این رو پیاده کنم یا بفهمم حرکت قبلی چی بوده !

    ممنون

    #2
    نوشته اصلي بوسيله mmdamir.esh نمايش پست
    من میخوام وقتی سنسور هام تو ربات مسیریاب همه روی زمینه ی سفید رفت حرکت قبلیشو انجام بده ! یکی به من گفت که تو زبان سی خود به خود خودش حرکت قبلی رو میره اما وقتی تست کردم نمیشد ! یک جا خوندم با آرایه میشه , اما من دقیقا نمفهمم ک من چ جوری حرکت ها رو بریزم تو آرایه که هر دفعه یک آرایه بزارم و چ جوری بفهمم که حرکت قبلیم مال شماره کدوم آرایه بوده ! لطفا هر کسی کمکی از دستش بر می آید دریغ نکنه !
    خیلی ممنون
    راستی کدی که من نوشتم اینطوریه :


    if ( !senVasat ) Move(cw,cw250,250);
    if ( !sen Righet1 ) Move(cw,cw,250,200);
    if ( !sen Left1 ) Move(cw,cw,200,250);


    این طوری کد نوشتم تا به آخر , جای اون سن ها پین های مورد نظر هست ! فقط میخوام کاری کنم تا وقتی همه ی سنسور ها روی زمینه سفید رفت ربات حرکت قبلی رو ادامه بده , اما نمیدونم چ جوری این رو پیاده کنم یا بفهمم حرکت قبلی چی بوده !

    ممنون
    یه شرط بزار که در صورتی که هیچ کدوم از حالت هایی که گفتی نبود(یعنی همون زمین سفید) دستور قبلیتو انجام بده.

    نظر


      #3
      نوشته اصلي بوسيله mahmoodras نمايش پست
      یه شرط بزار که در صورتی که هیچ کدوم از حالت هایی که گفتی نبود(یعنی همون زمین سفید) دستور قبلیتو انجام بده.
      سلام
      ممنون ک جوالب دادین . مسئله اینه که نمیدونم چ جوری دستور قبلی رو پیدا کنم ! یعنی بفهمم ک قبل از این ک سنسور ها روی زمینه ی سفید رفتند , کدوم حالت یا کدوم دستور قبلش در حال انجام بوده !

      نظر


        #4
        نوشته اصلي بوسيله mmdamir.esh نمايش پست
        من میخوام وقتی سنسور هام تو ربات مسیریاب همه روی زمینه ی سفید رفت حرکت قبلیشو انجام بده ! یکی به من گفت که تو زبان سی خود به خود خودش حرکت قبلی رو میره اما وقتی تست کردم نمیشد ! یک جا خوندم با آرایه میشه , اما من دقیقا نمفهمم ک من چ جوری حرکت ها رو بریزم تو آرایه که هر دفعه یک آرایه بزارم و چ جوری بفهمم که حرکت قبلیم مال شماره کدوم آرایه بوده ! لطفا هر کسی کمکی از دستش بر می آید دریغ نکنه !
        خیلی ممنون
        راستی کدی که من نوشتم اینطوریه :


        if ( !senVasat ) Move(cw,cw250,250);
        if ( !sen Righet1 ) Move(cw,cw,250,200);
        if ( !sen Left1 ) Move(cw,cw,200,250);


        این طوری کد نوشتم تا به آخر , جای اون سن ها پین های مورد نظر هست ! فقط میخوام کاری کنم تا وقتی همه ی سنسور ها روی زمینه سفید رفت ربات حرکت قبلی رو ادامه بده , اما نمیدونم چ جوری این رو پیاده کنم یا بفهمم حرکت قبلی چی بوده !

        ممنون
        دوست عزیز شما باید از حافظه
        <eeprom>
        استفاده کنید
        نحوه استفاده از این حافظه در میکروهای مختلف متفاوت است به
        refrence
        میکروتون مراجعه کنید.
        اما بنده ساختار کلی برنامه مورد نیازتون رو نوشتم که با توجه
        به میکرو و سنسور ها نیاز به تغییر داره
        توضیح مختصر در مورد این حافظه:حافظه ای که می تونید از اون جهت ذخیره اطلاعات استفاده کنید و با قطع برق اطلاعاتتون از بین نره.
        البته ممکنه در میکرو کنترلرهای مختلف با نام های دیگه شناخته بشه.
        PHP Code:
        include<eeprom.h>
        //main
        int flag=0;//می گوید که خانه صفر حافظه ایپروم را برای متغیرمان در نظر بگیر.
        //loop
        if(!senvasat)
        dastoor1();
        else if(!
        senRight)
        dastoor2();
        else if(
        WhiteLine)
        {
        if(
        eeprom.read(flag)==1)
        ()
        dastoor1;
        else if(
        eeprom.read(flag)==2)
        ()
        dastoor2;
        }
        //end loop
        //end main
        void dastoor1()
        {
        eeprom.write(flag,1);//نوشتن مقدار یک در متغیر
        move(...);
        }
        void dastoor2()
        {
        eeprom.write(flag,2);
        move(...);

        اگر نیاز به راهنمایی داشتید و یا جایی رو متوجه نشدید بپرسید

        نظر

        Working...
        X