ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.






جهت تبلیغ در وب سایت ECA کلیک کنید.

کاربران برچسب زده شده

نمایش نتایج: از 1 به 2 از 2
  1. #1
    2011/04/17
    6
    0

    برنامه نویسی ربات مسیر یاب

    سلام
    برا ربات مسیریاب 16تا سنسور CNY70استفاده کردیم.حالا میخایم 2تا موتور DC رو با L298 درایو کنیم.کسی فایل برنامه درایو موتور تویه CODE VISION داره؟
    ممنون میشم که راهنمایی کنید
  2. #2
    2010/07/05
    teh-1
    78
    6

    پاسخ : برنامه نویسی ربات مسیر یاب

    سوالت رو خیلی خیلی بد پرسیدی یعنی الان یکی بیاد نمیدونه تو با درایو کردن موتور مشکل داری یا با برنامه تعقیب خط....
    اگه موتور هات زیاد یا حالا یکم زیاد جریان میکشه (یعنی هرچی جز مکسون فال هابر و موتور های خیلی ضعیف) l298 رو ببوس بزار کنار که تا مسابقه یه تعداد خیلی خوبی میسوزونی... و بهترین جایگزین l6203 ه که هم نسبتا ارزونه هم به این راحتیا نمیسوزه بعد در ضمن هر بلاک یه درایور موتور (هر بخشیش که به یه موتور میرسه) اصولن یه مدار ثابت داره و 3 تا پایه که به میکرو میره (البته واسه موتور های dc) که 2 تاش جهته یکیش enable که اکثرا" بش pwm میدن اینم یه برنامه نه خیلی سخت نه خیلی ساده....

    کد:
    #include <mega16.h>
    #include <delay.h>
    // Alphanumeric LCD Module functions
    #asm
      .equ __lcd_port=0x15 ;PORTC
    #endasm
    #include <lcd.h>
    // Declare your global variables here
    flash int  M1[5]={200,150,160,170,200};
    flash int M2[5]={-200,-80,-30,0,30};
    bit bk=0;
    float j=1;
    int k=0,h=0;
    long int z=0;
    void motor(int p1,int p2)
    {
      if(p1>=0)OCR1AL=(int)(p1*j);else OCR1AL=-1*(int)(p1*j);
      if(p2>=0)OCR1BL=(int)(p2*j);else OCR1BL=-1*(int)(p2*j);
      if(p1>=0)
      {
       PORTD.2=1;
       PORTD.3=0; 
      }
      if(p1<0)
      {
       PORTD.2=0;
       PORTD.3=1;
      }  
      if(p2>=0)
      {
       PORTD.0=1;
       PORTD.1=0; 
      }
      if(p2<0)
      {
       PORTD.0=0;
       PORTD.1=1;
      }
    }
    void main(void)
    {
    // Declare your local variables here
    
    // Input/Output Ports initialization
    // Port A initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=P State6=P State5=P State4=P State3=P State2=P State1=P State0=P 
    PORTA=0xFF;
    DDRA=0x00;
    
    // Port B initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=P State6=P State5=P State4=P State3=P State2=P State1=P State0=P 
    PORTB=0xFF;
    DDRB=0x00;
    
    // Port C initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
    PORTC=0x00;
    DDRC=0x00;
    
    // Port D initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
    PORTD=0x00;
    DDRD=0xFF;
    
    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    // Mode: Normal top=FFh
    // OC0 output: Disconnected
    TCCR0=0x00;
    TCNT0=0x00;
    OCR0=0x00;
    
    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: 31.250 kHz
    // Mode: Fast PWM top=00FFh
    // OC1A output: Non-Inv.
    // OC1B output: Non-Inv.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer 1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0xA1;
    TCCR1B=0x0C;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;
    
    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer 2 Stopped
    // Mode: Normal top=FFh
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;
    
    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // INT2: Off
    MCUCR=0x00;
    MCUCSR=0x00;
    
    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;
    
    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;
    
    // LCD module initialization
    lcd_init(16);
    
    while (1)
    { 
      
      lcd_gotoxy(5,0);
      lcd_putsf("5 - 1");
      lcd_gotoxy(4,1);
      lcd_putsf("Helli 2");
      delay_ms(1000);
      lcd_clear();
      lcd_gotoxy(0,0);
     
     
    
      lcd_putsf("Shirazi Askarian");
     lcd_putsf("Kazemi Farhadian")   ;
      delay_ms(2000);
      lcd_clear();
     str: 
     if(PINB.7==0)       
      {lcd_clear();       
      while(1)
      {
      if(PINB.7==1)
      goto str;
      if((PINA.5==0&&PINA.4==0&&PINB.0==0)||(PINA.5==0&&PINA.4==0&&PINB.0==1)||(PINA.5==0&&PINB.0==0&&PINA.4==1))
      {
      if((PINB.5==1&&PINB.6==1)&&bk==0)
      {lcd_gotoxy(3,1);
      lcd_putsf("S ");
      while(1)
      {motor(200,200);
      if(PINB.4==1&&PINA.0==1)
      goto bbin;
      }
      bbin:
      bk=1;
      }
      if((PINB.5==1||PINB.6==1||(PINB.5==1&&PINB.6==1))&&bk==1)
      bk=1;
      //////////////////\\\\\\\\\\\\\\\\\\\\\
      if((PINB.5==0&&PINB.6==0)&&bk==1)
      {lcd_gotoxy(3,1);
      lcd_putsf("S ");
      while(1)
      {motor(200,200); 
      if(PINB.4==0&&PINA.0==0)
      goto bin;
      z++;
      if(z>10000)
      goto bin;
      }
      bin:
      z=0;
      bk=0;
      }
      //////////////////\\\\\\\\\\\\\\\\\\\\\\
      if((PINB.5==0||PINB.6==0||(PINB.5==0&&PINB.6==0))&&bk==0)
      bk=0;
      }
      lcd_gotoxy(14,0);
      if(bk==1)lcd_putsf("B");
      if(bk==0)lcd_putsf("W");
      /*if((PINA.5+PINA.3+PINA.4+PINB.0+PINB.1<3&&bk==0)||bk==1)
      {  
      if((PINB.5==1&&PINB.6==1)&&bk==0)
      {l++;
      z=0;
      }
      if(((PINB.5==0&&PINB.6==0)||(PINB.5==0)||(PINB.6==0))&&bk==1)
      {z++;
      l=0;
      }
      if(l>25)
      bk=1;
      if(z>5)
      bk=0; 
      }
      
      if(bk==1)lcd_putsf("(B)");
      if(bk==0)lcd_putsf("(W)");*/
      /////////////////\\\\\\\\\\\\\\\\\\\\\
      if(PINA.7==1&&j==1)
      {
      h++;
      k=0;
      }
      if(PINA.7==0)
      h=0;     
      if(PINA.6==1&&j==1)
      {
      k++;
      h=0;
      }
      if(PINA.6==0)
      k=0;  
      lcd_gotoxy(14,1); 
      if(h>25)
      {
      lcd_putsf("L");
      j=0.50;
      }
      if(k>10)
      {
      lcd_putsf("H");
      j=1.275;
      }
      if(k<10&&h<25)
      {lcd_gotoxy(13,1);
      lcd_putsf("M");
      j=1.0;
      }
      /////////////////////\\\\\\\\\\\\\\\\\\\\\\\
      lcd_gotoxy(0,0);
      lcd_putchar(PINB.4+'0');
      lcd_putchar(PINB.3+'0');
      lcd_putchar(PINB.2+'0');
      lcd_putchar(PINB.1+'0');
      lcd_putchar(PINB.0+'0');
      lcd_putchar(PINA.5+'0');
      lcd_putchar(PINA.4+'0');
      lcd_putchar(PINA.3+'0');
      lcd_putchar(PINA.2+'0');
      lcd_putchar(PINA.1+'0');
      lcd_putchar(PINA.0+'0'); 
      lcd_gotoxy(11,1);
      lcd_putchar(PINB.5+'0');
      lcd_putchar(PINB.6+'0');
      ///////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\
      lcd_gotoxy(3,1);
     if((PINA.5==1&&PINA.4+PINA.3+PINA.2+PINA.1+PINA.0>=3&&PINB.4+PINB.3+PINB.2+PINB.1+PINB.0<=1&&!bk)||(PINA.5==1&&PINB.4==1&&!bk))
      {
       motor(M2[0],M1[0]); 
       lcd_putsf("R60");
       delay_ms(200);
       continue;
       
      }
      if((PINA.5==1&&PINA.4+PINA.3+PINA.2+PINA.1+PINA.0<=1&&PINB.4+PINB.3+PINB.2+PINB.1+PINB.0>=3&&!bk)||(PINA.5==1&&PINA.0==1&&!bk))
      {
       motor(M1[0],M2[0]); 
       lcd_putsf("L60 ");
       delay_ms(200);
       continue;
      }
      if((PINA.5==1&&!bk)||(PINA.5==0&&bk))//Straight
      {
       motor(200,200); 
       lcd_putsf("S ");
       delay_ms(10);
       continue;
      }
      if((PINB.4==1&&!bk)||(PINB.4==0&&bk))//Left 5
      {
       motor(M1[0],M2[0]);
       lcd_putsf("L5 ");
       continue;
      }
      if((PINA.0==1&&!bk)||(PINA.0==0&&bk))//Right 5
      {
       motor(M2[0],M1[0]);
       lcd_putsf("R5 ");
       continue;
      }
      if((PINB.3==1&&!bk)||(PINB.3==0&&bk))//Left 4
      {
       motor(M1[1],M2[1]);
       lcd_putsf("L4 ");
       continue;
      }
      if((PINA.1==1&&!bk)||(PINA.1==0&&bk))//Right 4
      {
       motor(M2[1],M1[1]);
       lcd_putsf("R4 ");
       continue;
      } 
      if((PINB.2==1&&!bk)||(PINB.2==0&&bk))//Left 3
      {
       motor(M1[2],M2[2]);
       lcd_putsf("L3 ");
       continue;
      }
      if((PINA.2==1&&!bk)||(PINA.2==0&&bk))//Right 3
      {
       motor(M2[2],M1[2]);
       lcd_putsf("R3 ");
       continue;
      }
      if((PINB.1==1&&!bk)||(PINB.1==0&&bk))//Left 2
      {
       motor(M1[3],M2[3]);
       lcd_putsf("L2 ");
       continue;
      }
      if((PINA.3==1&&!bk)||(PINA.3==0&&bk))//Right 2
      {
       motor(M2[3],M1[3]);
       lcd_putsf("R2 ");
       continue;
      }
      if((PINB.0==1&&!bk)||(PINB.0==0&&bk))//Left 1
      {
       motor(M1[4],M2[4]);
       lcd_putsf("L1 ");
       continue;
      }
      if((PINA.4==1&&!bk)||(PINA.4==0&&bk))//Right 1
      {
       motor(M2[4],M1[4]);
       lcd_putsf("R1 ");
       continue;
      }
      }
      }
      if(PINB.7==1)
      {lcd_gotoxy(3,0);
      lcd_putsf("!NO LCD!");
      while(1)
      {
      if(PINB.7==0)
      goto str;
      if((PINA.5==0&&PINA.4==0&&PINB.0==0)||(PINA.5==0&&PINA.4==0&&PINB.0==1)||(PINA.5==0&&PINB.0==0&&PINA.4==1))
      {
      if((PINB.5==1&&PINB.6==1)&&bk==0)
      {
      while(1)
      {motor(200,200);
      if(PINB.4==1&&PINA.0==1)
      goto dbin;
      }
      dbin:
      bk=1;
      }
      if((PINB.5==1||PINB.6==1||(PINB.5==1&&PINB.6==1))&&bk==1)
      bk=1;
      //////////////////\\\\\\\\\\\\\\\\\\\\\
      if((PINB.5==0&&PINB.6==0)&&bk==1)
      {
      while(1)
      {motor(200,200); 
      if(PINB.4==0&&PINA.0==0)
      goto bine;
      z++;
      if(z>10000)
      goto bin;
      }
      bine:
      z=0;
      bk=0;
      }
      //////////////////\\\\\\\\\\\\\\\\\\\\\\
      if((PINB.5==0||PINB.6==0||(PINB.5==0&&PINB.6==0))&&bk==0)
      bk=0;
      }
      //lcd_gotoxy(14,0);
      /*if(bk==1)lcd_putsf("B");
      if(bk==0)lcd_putsf("W");*/
      /*if((PINA.5+PINA.3+PINA.4+PINB.0+PINB.1<3&&bk==0)||bk==1)
      {  
      if((PINB.5==1&&PINB.6==1)&&bk==0)
      {l++;
      z=0;
      }
      if(((PINB.5==0&&PINB.6==0)||(PINB.5==0)||(PINB.6==0))&&bk==1)
      {z++;
      l=0;
      }
      if(l>25)
      bk=1;
      if(z>5)
      bk=0; 
      }
      
      if(bk==1)lcd_putsf("(B)");
      if(bk==0)lcd_putsf("(W)");*/
      /////////////////\\\\\\\\\\\\\\\\\\\\\
      if(PINA.7==1&&j==1)
      {
      h++;
      k=0;
      }
      if(PINA.7==0)
      h=0;     
      if(PINA.6==1&&j==1)
      {
      k++;
      h=0;
      }
      if(PINA.6==0)
      k=0;  
      //lcd_gotoxy(14,1); 
      if(h>25)
      {
      //lcd_putsf("L");
      j=0.50;
      }
      if(k>10)
      {
      //lcd_putsf("H");
      j=1.275;
      }
      if(k<10&&h<25)
      {//lcd_gotoxy(13,1);
      //lcd_putsf("M");
      j=1.0;
      }
      /////////////////////\\\\\\\\\\\\\\\\\\\\\\\
      //lcd_gotoxy(0,0);
      lcd_putchar(PINB.4+'0');
      lcd_putchar(PINB.3+'0');
      lcd_putchar(PINB.2+'0');
      lcd_putchar(PINB.1+'0');
      lcd_putchar(PINB.0+'0');
      lcd_putchar(PINA.5+'0');
      lcd_putchar(PINA.4+'0');
      lcd_putchar(PINA.3+'0');
      lcd_putchar(PINA.2+'0');
      lcd_putchar(PINA.1+'0');
      lcd_putchar(PINA.0+'0'); 
      lcd_gotoxy(11,1);
      lcd_putchar(PINB.5+'0');
      lcd_putchar(PINB.6+'0');
      ///////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\
      //lcd_gotoxy(3,1);
     if((PINA.5==1&&PINA.4+PINA.3+PINA.2+PINA.1+PINA.0>=3&&PINB.4+PINB.3+PINB.2+PINB.1+PINB.0<=1&&!bk)||(PINA.5==1&&PINB.4==1&&!bk))
      {
       motor(M2[0],M1[0]); 
       //lcd_putsf("R60");
       delay_ms(200);
       continue;
       
      }
      if((PINA.5==1&&PINA.4+PINA.3+PINA.2+PINA.1+PINA.0<=1&&PINB.4+PINB.3+PINB.2+PINB.1+PINB.0>=3&&!bk)||(PINA.5==1&&PINA.0==1&&!bk))
      {
       motor(M1[0],M2[0]); 
       //lcd_putsf("L60 ");
       delay_ms(200);
       continue;
      }
      if((PINA.5==1&&!bk)||(PINA.5==0&&bk))//Straight
      {
       motor(200,200); 
       //lcd_putsf("S ");
       delay_ms(10);
       continue;
      }
      if((PINB.4==1&&!bk)||(PINB.4==0&&bk))//Left 5
      {
       motor(M1[0],M2[0]);
       //lcd_putsf("L5 ");
       continue;
      }
      if((PINA.0==1&&!bk)||(PINA.0==0&&bk))//Right 5
      {
       motor(M2[0],M1[0]);
       //lcd_putsf("R5 ");
       continue;
      }
      if((PINB.3==1&&!bk)||(PINB.3==0&&bk))//Left 4
      {
       motor(M1[1],M2[1]);
       //lcd_putsf("L4 ");
       continue;
      }
      if((PINA.1==1&&!bk)||(PINA.1==0&&bk))//Right 4
      {
       motor(M2[1],M1[1]);
       //lcd_putsf("R4 ");
       continue;
      } 
      if((PINB.2==1&&!bk)||(PINB.2==0&&bk))//Left 3
      {
       motor(M1[2],M2[2]);
       //lcd_putsf("L3 ");
       continue;
      }
      if((PINA.2==1&&!bk)||(PINA.2==0&&bk))//Right 3
      {
       motor(M2[2],M1[2]);
       //lcd_putsf("R3 ");
       continue;
      }
      if((PINB.1==1&&!bk)||(PINB.1==0&&bk))//Left 2
      {
       motor(M1[3],M2[3]);
       //lcd_putsf("L2 ");
       continue;
      }
      if((PINA.3==1&&!bk)||(PINA.3==0&&bk))//Right 2
      {
       motor(M2[3],M1[3]);
       //lcd_putsf("R2 ");
       continue;
      }
      if((PINB.0==1&&!bk)||(PINB.0==0&&bk))//Left 1
      {
       motor(M1[4],M2[4]);
       //lcd_putsf("L1 ");
       continue;
      }
      if((PINA.4==1&&!bk)||(PINA.4==0&&bk))//Right 1
      {
       motor(M2[4],M1[4]);
       //lcd_putsf("R1 ");
       continue;
      }
      }
      }
    };
    }
    The truth is not true!!!! the Truth is your own if U think Its TRUTH and The TRUTH is written in blood because its Ur own & Ur dream is the Truth if U see A thing if U feel A thing U build it like a building(!!!) and there is no thing.
نمایش نتایج: از 1 به 2 از 2

موضوعات مشابه

  1. برنامه نویسی ربات مسیر یاب
    توسط مهداف در انجمن رباتيك و مكاترونيك
    پاسخ: 2
    آخرين نوشته: 2016/01/04, 09:37
  2. آموزش برنامه نویسی ربات مسیر یاب به زبان بسکام
    توسط کافه شب در انجمن ربات های مسیر یاب
    پاسخ: 2
    آخرين نوشته: 2015/07/19, 19:38
  3. پاسخ: 0
    آخرين نوشته: 2014/04/17, 12:34
  4. برنامه ی ربات مسیر یاب
    توسط reza8731 در انجمن رباتيك و مكاترونيك
    پاسخ: 1
    آخرين نوشته: 2014/01/17, 12:03
  5. مشکل دربرنامه نویسی ربات مسیر یاب
    توسط soheilzahedy در انجمن میکروکنترلرهای AVR
    پاسخ: 14
    آخرين نوشته: 2013/07/25, 11:30

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •