PDA

View Full Version : کمک برای برنامه نویسی ربات مسیریاب



mehdi_RM
شنبه 05 فروردین 1385, 22:29 عصر
کسی می تونه به من در برنامه نویسی برای یه ربات مسیریاب که
از میکرو ای وی آر می خوام استفاده کنم کمکم کنه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

Kimia_Konjkav
یک شنبه 06 فروردین 1385, 05:42 صبح
http://robotic.farsitools.com/

www.iranled.com

اگر عضو سایت www.cloob.com هستید در آنجا یک کلوب با نام کلوب رباتیک وجود دارد که شاید دوستان بیشتر راهنماییتان نمایند. اگر عضو نیستید برای پیام بدهید که دعوتتان کنم (البته اگر مایلید)

mfarzan2004
پنج شنبه 10 فروردین 1385, 23:01 عصر
من یه برنامه نویس میکرو یم در مسابقات روبوتیک بابل 2 دوره قبل مقام 4 روم
دارم اگه می خای اطلاعات بده در مورد تعداد سنسورها و ... تا برنامه رو برات بفرستم

mhmmdshirazi
چهارشنبه 10 مهر 1387, 02:17 صبح
انقدر خودتونو اذیت نکنید من یه برنامه که با codevision به زبان c نوشته شده می زارم سبزوار سوم شد.

#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
bit bk,j;
void motor(float p1,float p2)
{
if(p1>=0)OCR1AL=(int)p1;else OCR1AL=-(int)p1;
if(p2>=0)OCR1BL=(int)p2;else OCR1BL=-(int)p2;
if(p1>0)
{
PORTD.0=1;
PORTD.1=0;
}else
{
PORTD.0=0;
PORTD.1=1;
}
if(p2>0)
{
PORTD.2=1;
PORTD.3=0;
}else
{
PORTD.2=0;
PORTD.3=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)
{
if(PINA.6==1) j=1.275; else j=1;
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,0);
if(bk)lcd_putsf("Black");else lcd_putsf("White");
if((PINA.5==1&&PINA.4+PINA.3+PINA.2+PINA.1+PINA.0>=4&&PINB.4+PINB.3+PINB.2+PINB.1+PINB.0==0&&!bk)||
(PINA.5==0&&PINA.4+PINA.3+PINA.2+PINA.1+PINA.0<=1&&PINB.4+PINB.3+PINB.2+PINB.1+PINB.0==5&&bk))
{
motor(200*j,-200*j);
lcd_gotoxy(0,1);
lcd_putsf("Left 60 ");
delay_ms(300);
continue;
}
if((PINA.5==1&&PINA.4+PINA.3+PINA.2+PINA.1+PINA.0==0&&PINB.4+PINB.3+PINB.2+PINB.1+PINB.0>=4&&!bk)||
(PINA.5==0&&PINA.4+PINA.3+PINA.2+PINA.1+PINA.0==5&&PINB.4+PINB.3+PINB.2+PINB.1+PINB.0<=1&&bk))
{
motor(-200*j,200*j);
lcd_gotoxy(0,1);
lcd_putsf("Right 60 ");
delay_ms(300);
continue;
}
if((PINA.5==1&&!bk)||(PINA.5==0&&bk))//MOSTAGHIM
{
motor(200*j,200*j);
lcd_gotoxy(0,1);
lcd_putsf("Straight");
delay_ms(10);
continue;
}
if(PINA.4+PINA.3+PINA.2+PINA.1+PINA.0>=2&&PINB.4+PINB.3+PINB.2+PINB.1+PINB.0>=2)bk=1;else bk=0;
if((PINB.4==1&&!bk)||(PINB.4==0&&bk))
{
motor(200*j,-200*j);
lcd_gotoxy(0,1);
lcd_putsf("Left 5 ");
}
if((PINB.3==1&&!bk)||(PINB.3==0&&bk))
{
motor(200*j,-80*j);
lcd_gotoxy(0,1);
lcd_putsf("Left 4 ");
}
if((PINB.2==1&&!bk)||(PINB.2==0&&bk))
{
motor(200*j,-30*j);
lcd_gotoxy(0,1);
lcd_putsf("Left 3 ");
}
if((PINB.1==1&&!bk)||(PINB.1==0&&bk))
{
motor(200*j,0*j);
lcd_gotoxy(0,1);
lcd_putsf("Left 2 ");
}
if((PINB.0==1&&!bk)||(PINB.0==0&&bk))
{
motor(200*j,30*j);
lcd_gotoxy(0,1);
lcd_putsf("Left 1 ");
}
if((PINA.0==1&&!bk)||(PINB.0==0&&bk))
{
motor(200*j,-200*j);
lcd_gotoxy(0,1);
lcd_putsf("Right 5 ");
}
if((PINA.1==1&&!bk)||(PINB.1==0&&bk))
{
motor(200*j,-80*j);
lcd_gotoxy(0,1);
lcd_putsf("Right 4 ");
}
if((PINA.2==1&&!bk)||(PINB.2==0&&bk))
{
motor(200*j,-30*j);
lcd_gotoxy(0,1);
lcd_putsf("Right 3 ");
}
if((PINB.3==1&&!bk)||(PINB.3==0&&bk))
{
motor(200*j,0*j);
lcd_gotoxy(0,1);
lcd_putsf("Right 2 ");
}
if((PINB.4==1&&!bk)||(PINB.4==0&&bk))
{
motor(200*j,30*j);
lcd_gotoxy(0,1);
lcd_putsf("Right 1 ");
}
};
}
ولی من پیشنهاد می کنم تقیب خط نسازید .

Big bang
دوشنبه 31 فروردین 1388, 14:35 عصر
سلام ميخواستم ببينم امكانش هست چیدمان سنسورهایتان را به من بگویيد

m-saam
جمعه 16 بهمن 1388, 21:36 عصر
دارم پروژه تحویل میدم وقتم هم تموم شده با 5 سنسور و دو موتور ربات مسیریاب دارم میسازم
همه چیز ردیفه فقط:

دستور خواندن سنسور از پایه های میکرو از پورت سی ( PC) از 0 تا 4 رو میخوام .
تو کد ویژن هم نوشتم

farzadsw
شنبه 17 بهمن 1388, 14:26 عصر
همون برنامه ای گذاشتن این کار رو میکنه ولی با 10 تا سنسور (5تا پورت Aو 5تا پورت B) . این قسمتش برای خوندن سنسور ها و تصمیم گیری برای حرکته:





if((PINA.5==1&&PINA.4+PINA.3+PINA.2+PINA.1+PINA.0>=4&&PINB.4+PINB.3+PINB.2+PINB.1+PINB.0==0&&!bk)||
(PINA.5==0&&PINA.4+PINA.3+PINA.2+PINA.1+PINA.0<=1&&PINB.4+PINB.3+PINB.2+PINB.1+PINB.0==5&&bk))
{
motor(200*j,-200*j);
lcd_gotoxy(0,1);
lcd_putsf("Left 60 ");
delay_ms(300);
continue;
}
if((PINA.5==1&&PINA.4+PINA.3+PINA.2+PINA.1+PINA.0==0&&PINB.4+PINB.3+PINB.2+PINB.1+PINB.0>=4&&!bk)||
(PINA.5==0&&PINA.4+PINA.3+PINA.2+PINA.1+PINA.0==5&&PINB.4+PINB.3+PINB.2+PINB.1+PINB.0<=1&&bk))
{
motor(-200*j,200*j);
lcd_gotoxy(0,1);
lcd_putsf("Right 60 ");
delay_ms(300);
continue;
}
if((PINA.5==1&&!bk)||(PINA.5==0&&bk))//MOSTAGHIM
{
motor(200*j,200*j);
lcd_gotoxy(0,1);
lcd_putsf("Straight");
delay_ms(10);
continue;
}
if(PINA.4+PINA.3+PINA.2+PINA.1+PINA.0>=2&&PINB.4+PINB.3+PINB.2+PINB.1+PINB.0>=2)bk=1;else bk=0;
if((PINB.4==1&&!bk)||(PINB.4==0&&bk))
{
motor(200*j,-200*j);
lcd_gotoxy(0,1);
lcd_putsf("Left 5 ");
}
if((PINB.3==1&&!bk)||(PINB.3==0&&bk))
{
motor(200*j,-80*j);
lcd_gotoxy(0,1);
lcd_putsf("Left 4 ");
}
if((PINB.2==1&&!bk)||(PINB.2==0&&bk))
{
motor(200*j,-30*j);
lcd_gotoxy(0,1);
lcd_putsf("Left 3 ");
}
if((PINB.1==1&&!bk)||(PINB.1==0&&bk))
{
motor(200*j,0*j);
lcd_gotoxy(0,1);
lcd_putsf("Left 2 ");
}
if((PINB.0==1&&!bk)||(PINB.0==0&&bk))
{
motor(200*j,30*j);
lcd_gotoxy(0,1);
lcd_putsf("Left 1 ");
}
if((PINA.0==1&&!bk)||(PINB.0==0&&bk))
{
motor(200*j,-200*j);
lcd_gotoxy(0,1);
lcd_putsf("Right 5 ");
}
if((PINA.1==1&&!bk)||(PINB.1==0&&bk))
{
motor(200*j,-80*j);
lcd_gotoxy(0,1);
lcd_putsf("Right 4 ");
}
if((PINA.2==1&&!bk)||(PINB.2==0&&bk))
{
motor(200*j,-30*j);
lcd_gotoxy(0,1);
lcd_putsf("Right 3 ");
}
if((PINB.3==1&&!bk)||(PINB.3==0&&bk))
{
motor(200*j,0*j);
lcd_gotoxy(0,1);
lcd_putsf("Right 2 ");
}
if((PINB.4==1&&!bk)||(PINB.4==0&&bk))
{
motor(200*j,30*j);
lcd_gotoxy(0,1);
lcd_putsf("Right 1 ");
}






مثلا PINC.4 پایه پنجم از پورت c رو میخونه (0 یا 1)

haras14465
چهارشنبه 06 مرداد 1389, 14:25 عصر
با سلام
اگر امکان داره نحوی قرار گیری سنسور ها رو هم قرار بدهید

و در مورد if(PINA.4+PINA.3+PINA.2+PINA.1+PINA.0>=2&&PINB.4+PINB.3+PINB.2+PINB.1+PINB.0>=2)bk=1;else bk=0;


و همچنین OCR1AL=-(int)p1;


که در برنامه چه کار می کننند؟؟:قلب:

khafan_bat
دوشنبه 11 مرداد 1389, 20:39 عصر
مهندس همینطوری که نمیشه . . .

این درست که میخوای برنامه مسیر یاب بنویسی ، باید یکسری چیزا رو معلوم کنی . نوع ، تعداد ، چگونگی پیکربندی ، چگونگی راه اندازی سنسور ها و موتور ها با جزیات دقیق . . .

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

از همه مهمتر . . . با چه زبانی و در چه محیطی میخوای برنامه بنویسی ؟؟؟

بگو تا در برنامه نویسی کمکت کنم.

haras14465
دوشنبه 18 مرداد 1389, 12:36 عصر
سلام

من برنامه را خوندم تقریبا همشو متوجه شدم الا مقدار دادهی رجیستر هاint) p1 و جالب بود ببینم برای این برنامه که شما نوشتید نحوی قرارگیری سنسور ها دایره ای یا شکل دیگری هست .

ضمن این که برنامه اگر porta.6 رو هم نمی دونم کجا و چی هست که سرعت رو کوم و زیاد می کنه


من یک 6-7 ماهی بیشتر نیست که روباتیک کار می کنم و مین یاب اتو ماتیک کار کردم و فعلا روی مسیر یاب ها مطالعه می کنم ممنون می شوم در مورد این سوال ها کمکم کنی .....



با تشکر

labkhand
شنبه 06 شهریور 1389, 17:12 عصر
من یه برنامه نویس میکرو یم در مسابقات روبوتیک بابل 2 دوره قبل مقام 4 روم
دارم اگه می خای اطلاعات بده در مورد تعداد سنسورها و ... تا برنامه رو برات بفرستم





دوست عزيز سلام. من يه برنامه براي ربات 12 سنسوره مي خوام كه به صورت زير سنسورا قرار گرفتن.لطفا كمكم كنين
ستاره ها سنسورا هستن.
*--------------*----------------*
---------------*-----------------
------------*-----*--------------
---------*----------*------------
------*----------------*---------
----*--------------------*-------

jamshidiso
پنج شنبه 25 آذر 1389, 12:41 عصر
دوستان من یک ربات مسیریاب ساختم بامیکروکنترل mega8l وبادوسنسورفرستنده ودو سنسورگیرنده حالا برای برنامه اش ماندم هرکاری می کنم راه نمی افته کلیه مدارالکتریکی چندبارچک کردم همش درسته اگرکسی میتونه برای برنامه اش کمکم کنه

mrbarekat
چهارشنبه 18 اسفند 1389, 20:36 عصر
من یک آرایش سنسور جدید عالی 19 سنسوره براتون گذاشتم که روش خوندنش متفاوته ولی بهترین روشش روش خواندن پله ایه یعنی سنسور و سط را میخونیم تا زمانی که روی خط سیاهه وقتی از خط سیاه خارج شد دوتا سنسور پایینی را چک میکنیم تا پیچ ها را تشخیص بدیم.هرچقدر پیچ تندتر باشه سنسورهای پایینتری را چک میکنیم تا به آخرین سنسورهابرسیم. برین حالشو ببرین.


http://www.up.egyup.com/images/42333840064606464668.jpg

mrbarekat
پنج شنبه 19 اسفند 1389, 17:12 عصر
سنسورها را با چه واسطه ای به میکرو وصل کردی؟ adc یا op amp؟

HjSoft
یک شنبه 28 فروردین 1390, 16:40 عصر
سلام ، فعلا بهترین شیوه چیدمان سنسور ، شیوه هلالی خیلی نرم هست . متاسفانه Editor اجازه رسم نمیده . بنده خودم به طور کامل با این روش کار کرده ام و نتیجه خوبی گرفته ام .

mohammad_479
دوشنبه 05 اردیبهشت 1390, 18:35 عصر
سلام دوست عزیز من تو سایت کلوپ ثبت نام کردم ولی کلوپ رباتیکو پیدا نکردم ! میشه راهنمایی کنید .:لبخندساده:

mehrdad12345
چهارشنبه 07 اردیبهشت 1390, 19:44 عصر
سلام دوست عزیز من یک تازه کارم و تا حالا این دومین رباتم بوده که می سازم که یک ربات 8 سنسوره مسیریاب است که من در برنامه نویسی اش کمی(خیلی بیشتر از کمی) مشکل دارم و خواستم ازشما فرد باتجربه کمک بگیرم اگه می شه (خواهشا ترو خدا )برایم برنامه اش را بنوسید .

پیام مدیر بخش : در خواست های خصوصی رو تنها از طریق پیام خصوصی پیگیری کنید .

amd.coms
یک شنبه 12 تیر 1390, 10:26 صبح
با سلام خدمت دوست عزیز
من یک ربات مسیر یاب با 15 سنسور مانند شکل درست کرده ام و مسیر مورد نظر هم در عکس هست اگه میشه در نوشتن برنامه ی آن به من کمک کنید (دو موتور با درایور lm298اتصال به پورتd و سنسورها را با opamp به پورت c,bوصل کرده ام ) atmega32
خیلی ممنون می شم اگه کمکم کنید:لبخندساده: email:amd.coms@gmail.com
71820

sara90
یک شنبه 27 فروردین 1391, 16:06 عصر
انقدر خودتونو اذیت نکنید من یه برنامه که با codevision به زبان c نوشته شده می زارم سبزوار سوم شد.

#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
bit bk,j;
void motor(float p1,float p2)
{
if(p1>=0)OCR1AL=(int)p1;else OCR1AL=-(int)p1;
if(p2>=0)OCR1BL=(int)p2;else OCR1BL=-(int)p2;
if(p1>0)
{
PORTD.0=1;
PORTD.1=0;
}else
{
PORTD.0=0;
PORTD.1=1;
}
if(p2>0)
{
PORTD.2=1;
PORTD.3=0;
}else
{
PORTD.2=0;
PORTD.3=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)
{
if(PINA.6==1) j=1.275; else j=1;
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,0);
if(bk)lcd_putsf("Black");else lcd_putsf("White");
if((PINA.5==1&&PINA.4+PINA.3+PINA.2+PINA.1+PINA.0>=4&&PINB.4+PINB.3+PINB.2+PINB.1+PINB.0==0&&!bk)||
(PINA.5==0&&PINA.4+PINA.3+PINA.2+PINA.1+PINA.0<=1&&PINB.4+PINB.3+PINB.2+PINB.1+PINB.0==5&&bk))
{
motor(200*j,-200*j);
lcd_gotoxy(0,1);
lcd_putsf("Left 60 ");
delay_ms(300);
continue;
}
if((PINA.5==1&&PINA.4+PINA.3+PINA.2+PINA.1+PINA.0==0&&PINB.4+PINB.3+PINB.2+PINB.1+PINB.0>=4&&!bk)||
(PINA.5==0&&PINA.4+PINA.3+PINA.2+PINA.1+PINA.0==5&&PINB.4+PINB.3+PINB.2+PINB.1+PINB.0<=1&&bk))
{
motor(-200*j,200*j);
lcd_gotoxy(0,1);
lcd_putsf("Right 60 ");
delay_ms(300);
continue;
}
if((PINA.5==1&&!bk)||(PINA.5==0&&bk))//MOSTAGHIM
{
motor(200*j,200*j);
lcd_gotoxy(0,1);
lcd_putsf("Straight");
delay_ms(10);
continue;
}
if(PINA.4+PINA.3+PINA.2+PINA.1+PINA.0>=2&&PINB.4+PINB.3+PINB.2+PINB.1+PINB.0>=2)bk=1;else bk=0;
if((PINB.4==1&&!bk)||(PINB.4==0&&bk))
{
motor(200*j,-200*j);
lcd_gotoxy(0,1);
lcd_putsf("Left 5 ");
}
if((PINB.3==1&&!bk)||(PINB.3==0&&bk))
{
motor(200*j,-80*j);
lcd_gotoxy(0,1);
lcd_putsf("Left 4 ");
}
if((PINB.2==1&&!bk)||(PINB.2==0&&bk))
{
motor(200*j,-30*j);
lcd_gotoxy(0,1);
lcd_putsf("Left 3 ");
}
if((PINB.1==1&&!bk)||(PINB.1==0&&bk))
{
motor(200*j,0*j);
lcd_gotoxy(0,1);
lcd_putsf("Left 2 ");
}
if((PINB.0==1&&!bk)||(PINB.0==0&&bk))
{
motor(200*j,30*j);
lcd_gotoxy(0,1);
lcd_putsf("Left 1 ");
}
if((PINA.0==1&&!bk)||(PINB.0==0&&bk))
{
motor(200*j,-200*j);
lcd_gotoxy(0,1);
lcd_putsf("Right 5 ");
}
if((PINA.1==1&&!bk)||(PINB.1==0&&bk))
{
motor(200*j,-80*j);
lcd_gotoxy(0,1);
lcd_putsf("Right 4 ");
}
if((PINA.2==1&&!bk)||(PINB.2==0&&bk))
{
motor(200*j,-30*j);
lcd_gotoxy(0,1);
lcd_putsf("Right 3 ");
}
if((PINB.3==1&&!bk)||(PINB.3==0&&bk))
{
motor(200*j,0*j);
lcd_gotoxy(0,1);
lcd_putsf("Right 2 ");
}
if((PINB.4==1&&!bk)||(PINB.4==0&&bk))
{
motor(200*j,30*j);
lcd_gotoxy(0,1);
lcd_putsf("Right 1 ");
}
};
}
ولی من پیشنهاد می کنم تقیب خط نسازید .
سلام به دوستان خوبم میشه یه نفر این برنامه رو یه توضیح کلی بده که قسمت های مختلفش چیکار میکنن؟

small_rz
یک شنبه 28 خرداد 1391, 23:49 عصر
سلام. یه سوال:
تو بعضی از آموزش ها میگن اگه از 2 موتور 6 ولت استفاده می کنیم باید به L298 , ولتاژ 12 ولت بدیم تو بعضی ا میگن نه 6 ولت کافیه. بالاخره کدوم درسته؟ :(

hossein72
پنج شنبه 26 دی 1392, 10:31 صبح
من یه برنامه نویس میکرو یم در مسابقات روبوتیک بابل 2 دوره قبل مقام 4 روم
دارم اگه می خای اطلاعات بده در مورد تعداد سنسورها و ... تا برنامه رو برات بفرستم


سلام خسته نباشی!ربات تعقیب خط با 8 سنسور cny70با دو موتور.ممنون

md3848
دوشنبه 22 اردیبهشت 1393, 21:11 عصر
من ربات مسیر یاب با 5 سنسور نوشتم مدارش هم با پروتئوس شبیه سازی کردم

یکی از دوستان که کد برنامه ربات مسیر یاب رو در پست های اولیه گزاشت کد های مربوط به lcd توش بود

حالا یه سوال: برای چی باید برای این ربات ها lcd قرار داد؟؟؟؟

mehrdadbaqeri
پنج شنبه 25 اردیبهشت 1393, 14:06 عصر
مهمترین مساله الگوریتم. بهترین الگوریتمی که من می شناسم PID cotroller هستش.

http://www.pololu.com/docs/0J21/all#1
http://www.societyofrobots.com/member_tutorials/book/export/html/350

venos.
جمعه 26 تیر 1394, 15:43 عصر
سلام بخشید میشه برنام ای که برای amd.coms فرستادین برای منم بفرستین لطفا .خیلی خیلی هم ممنون
x,lona@yahoo.com

venos.
جمعه 26 تیر 1394, 15:44 عصر
ببخشید ایمیلم x.lona@yaho.com است:لبخند: ممنون

محمد1990
یک شنبه 28 تیر 1394, 09:06 صبح
سلام
دوستان عزیز من ی مشکلی شدیدی در برنامه نویسی ربات مسیریاب دارم اگر لطف کنین کمکم کنین خیلی ممنون میشم ..........:ناراحت:
من ی برنامه برای یک ربات مسیر یاب 5 سنسوره با استفاده از کدویزن که با استفاده روش pwm برای موتور ها سرعت رو کاهش بده و lcd هم نداره....
به طور کلی ربات من دارای ی چیدمانی بصورت عکس هایی که برات میفرستم هست....




همونطور که در عکس ها دیده میشه من از پورت A میکرو بعنوان ورودی اطلاعات از سنسورها و از پورتD بعنوان خروجی میکرو به درایو وصل کردم ...


برنامه میخوام بصورتی باشه که وقتی سنسور وسط رو خط بود دو موتور بچرخند
اگر سنسور راست یا چپ سنسور وسطی روی خط آمد موتور سمت چپ یا راست با سرعت کمتری موتور مربوطه به گردش در آید و اگر انتهایی ترین سنسور ها بر روی خط امد اون موتوری که باید بچرخه با سرعت بیشتری بچرخد تا ربات سریع به مسیر برگردد (منظورم اینکه با PWM این کار انجام بشه ) در کل سرعت موتور ها در هر حالت قرار گیری به طور معمول ب یک نسبت کاهش داشته باشه....


اگر منظورم رو متوجه نشدین بزار ساده تر بگم وقتی سنسور وسط روی خط بود مثلا موتور ربات 2 دور بر ثانیه حرکت کنه وقتی یک از سنسورهایکناری روی خط رفت موتور مربوطه 1.5دور بر ثانیه بچرخه و اگر انتهایی ترین سنسور روی خط رفت موتور 2.5 دور بر ثانیه بچرخه( این یک مثال بودا) .....:متفکر:

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


با تشکر از وقتی که میزارین .....

133373133374

محمد1990
یک شنبه 28 تیر 1394, 09:14 صبح
ببخشید ایمیلم رو فراموش کردم بزارم دوستان لطفا کمکم کنین وقت زیادی ندارم فقط ی برنامه ای برام واقعا با کیفیت باشه و خوب عمل کنه

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

sadegh_1990@mailfa.org

venos.
یک شنبه 28 تیر 1394, 19:27 عصر
سلام ببخشید میشه به من کمک کنین و بگین به زبان cو بسکام برای مسیر های به شکل زیر چطوری باید دستور بدم و برنامشو بنویسم
http://uupload.ir/files/xlb_untitled.png

maryam.m011
جمعه 17 آذر 1396, 14:32 عصر
سلام روز بخیر
من میخوام یه پروژه ی AVR با بسکام درس کنم میشه راهنماییم کنین