/roboti/auto/main.c |
---|
0,0 → 1,100 |
#include "D:\@Kaklik\programy\PIC_C\robot\auto\main.h" |
#DEFINE CIDLO1L PIN_B0 |
#DEFINE CIDLO1R PIN_B1 |
#DEFINE CIDLO2L PIN_B2 |
#DEFINE CIDLO2R PIN_B3 |
#DEFINE RELE1 PIN_B5 |
#DEFINE RELE2 PIN_B6 |
#DEFINE MOTOR1 PIN_B4 |
#DEFINE MOTOR2 PIN_A0 |
#DEFINE MOTOR2a PIN_A1 |
#DEFINE LASER PIN_A2 |
#DEFINE L 0 |
#DEFINE R 1 |
int cara; |
int movement; |
void left() |
{ |
output_high(RELE1); |
output_high(RELE2); |
delay_ms(100); |
output_high(MOTOR1); |
output_high(MOTOR2); |
output_high(MOTOR2a); |
} |
void right() |
{ |
output_low(RELE1); |
output_low(RELE2); |
delay_ms(100); |
output_high(MOTOR1); |
output_high(MOTOR2); |
output_high(MOTOR2a); |
} |
void rovne() |
{ |
output_low(RELE1); // oba motory vpred |
output_high(RELE2); |
delay_ms(100); |
output_high(MOTOR1); |
output_high(MOTOR2); |
output_high(MOTOR2a); |
} |
void stop() |
{ |
output_low(MOTOR1); |
output_low(MOTOR2); |
output_low(MOTOR2a); |
delay_ms(100); |
} |
void main() |
{ |
cara=L; |
movement=R; |
output_low(RELE1); // oba motory vpred |
output_high(RELE2); |
delay_ms(100); |
while (true) |
{ |
if (!input(CIDLO1R)) cara=R; // cara vpravo |
if (!input(CIDLO1L)) cara=L; // cara vlevo |
if (cara != movement) |
{ |
switch(cara) |
{ |
case L: |
output_high(LASER); |
stop(); |
rovne(); |
delay_ms(100); |
stop(); |
left(); |
movement=L; |
break; |
case R: |
stop(); |
rovne(); |
delay_ms(100); |
output_low(LASER); |
stop(); |
right(); |
movement=R; |
break; |
} |
} |
} |
} |