اخي ،ــ
انتبهت إلى انك في المرة الاولى قمت بالغاء الكمبراتور ،، اسف لم انتبه ،
عموما جرب هذا الكود ،،
كود:
void main ()
{
/*while(1){
TRISB=0x00;
PORTB=0x10;
delay_ms(1000);
PORTB=0x00;
delay_ms(1000);
}
*/
int width;
int range;
TRISA=0x08;
TRISB=0x00;
Loop:
PORTB=0x00;
width=0;
range=0;
cmcon=0x07;
PORTA=0x04; //send pulse with a 20us width
delay_us(20);
PORTA=0x00;
while (PORTA.F3==0) //wait until an echo is received
{
}
while (PORTA.F3==1) //calculate the width of the echo received
{
delay_us(10);
width++;
}
range=(width*10)/58; //calculate range
if (range<100) //if range less than 100m turn on LED
{
PORTB=0x10;
delay_ms(500);
}
PORTB=0x00;
delay_ms(100);
goto Loop;
}
مع ملاحظة ان الليد يجب توصيله على الطرف ،، رقم 10 من البك ،، وهو البن RB4 ،،
والطرف ،، الخاص بال TRIG يتم توصيله بالطرف رقم 1 ،، RA2
الطرف ECHO ،، يتم توصيله بالطرف رقم 2 ،، RA3 ،،
انا عمل لدي الكود ،، ولكن لم استطع تحديد المسافة التي يعمل عليها السنسور ،، هل يستطيع احد افادتنا في هذا الموضوع ؟