السلام عليكم ورحمة الله وبركاته
بليز احتاج مساعدتكم في شرح كود بلغة سي يخص مشروع سيارة اتوماتيكية تتبع خط معين. سأقوم بتحميل الكود على عدة جزئيات نظرا لكبر حجم الملف.
int sensor_timer, go_timer, turn_timer;
int Ain, midRd, leftRd, rightRd; //raw A to D number
char car_state, sensor_state;
bit sensor, go, turn;
void main(void);
void initialize(void);
void sensor_check(void);
void move_car(void);
//------------------------------------------------------------------
interrupt [TIM2_OVF] void timer2_ovf(void)
begin
TCNT2 = 6;
sensor_timer ++;
if (turn)
turn_timer++;
end
//------------------------------------------------------------------
void main(void)
begin
initialize();
#asm
sei
#endasm
while(1)
begin
sensor_check();
end
end
//------------------------------------------------------------------
void sensor_check(void)
begin
switch (sensor_state)
begin
case move:
move_car();
sensor_timer = 0;
sensor_state = right;
break;
case right:
if (sensor_timer >= 2)
begin
//get the sample
Ain = ADCH;
ADMUX = 0b01100001; //Read Port A1
//start another conversion
ADCSR.6=1;
rightRd = Ain;
sensor_state = left;
end
else sensor_state = right;
break;
case left:
if (sensor_timer >= 4)
begin
//get the sample
Ain = ADCH;
ADMUX = 0b01100000; //Read Port A0
//start another conversion
ADCSR.6=1;
leftRd = Ain;
sensor_state = middle;
end
else sensor_state = left;
break;
case middle:
if (sensor_timer >= 6)
begin
// get the sample
Ain = ADCH;
ADMUX = 0b01100010; //Read Port A2
// start another conversion
ADCSR.6=1;
midRd = Ain;
sensor_state = move;
end
else sensor_state = middle;
break;
end
end