سلام خدمت اساتید گرامی
من یه ربات خیلی ساده با سه تا سنسور ساختم، یکی در جلو، یکی سمت چپ و سومی در سمت راست ربات. میخوام ربات شروع به حرکت کنه و وقتی به مانع رسید، اگر سمت راست ربات مانعی نباشه، به سمت راست بچرخه و سپس به حرکتش ادامه بده و اگر سمت چپش مانعی نباشه، سمت چپ بچرخه و در نهایت اگر هر سه تا سنسور تشخیص مانع دادن، ربات برگرده عقب
برنامه ای که نوشتم اینطوریه:
سنسور جلو به پین 2 پورت A ، سنسور راستی به پین 1 این پورت و سنسور چپی به پین 0 پورت A وصل شده. موتورها هم که از طریق L298 با پورت B کنترل میشن.
ولی برنامه اصلا درست کار نمیکنه، مشخص نیست چطوری تصمیم میگیره، مانع جلوش میگیرم ربات گیج میشه. مشکل از کجاست دوستان؟
ممنون میشم راهنماییم کنین
من یه ربات خیلی ساده با سه تا سنسور ساختم، یکی در جلو، یکی سمت چپ و سومی در سمت راست ربات. میخوام ربات شروع به حرکت کنه و وقتی به مانع رسید، اگر سمت راست ربات مانعی نباشه، به سمت راست بچرخه و سپس به حرکتش ادامه بده و اگر سمت چپش مانعی نباشه، سمت چپ بچرخه و در نهایت اگر هر سه تا سنسور تشخیص مانع دادن، ربات برگرده عقب
برنامه ای که نوشتم اینطوریه:
کد:
include <mega32.h> #include <delay.h> #include <stdio.h> void forward(); void right(); void left(); void backward(); void main() { DDRB=0xFF; DDRA=0x00; PINA=0x00; PORTB=0x00; while(1) { if(PINA.2==0) forward(); if (PINA.2==1 && PINA.1==0) right(); if (PINA.2==1 && PINA.1==1 && PINA.0==0) left(); if (PINA.2==1 && PINA.1==1 && PINA.0==0) backward(); } } void forward() { PORTB=0xA0; } void right() { delay_ms(300); } void left() { PORTB=0x60; delay_ms(300); } void backward() { PORTB=0x50; }
ولی برنامه اصلا درست کار نمیکنه، مشخص نیست چطوری تصمیم میگیره، مانع جلوش میگیرم ربات گیج میشه. مشکل از کجاست دوستان؟
ممنون میشم راهنماییم کنین
دیدگاه