Hola a todos.
Estoy programando con un sensor ultrasónico, el hc-sr04, para esquivar objetos y lo que quiero hacer es cuando la distancia sea <=10 vaya en retroceso, digamos por 5 segundos y en el lcd aparezca "atras" y pasando esos 5 segundos sólo gire la rueda izquierda y en el lcd aparezca "girando" y siga adelante, pero no logro hacerlo.
Espero saber si alguien me puede asesorar cómo puedo hacerlo.
Acá está mi código:
Tengo dificultades, ya que logro que avance y cuando la distancia es <=10 sólo retrocede poco, hasta que en el lcd marca 11 y vuelve avanzar y quiero que retroceda 5 segundos cuando la distancia sea <=10
Estoy programando con un sensor ultrasónico, el hc-sr04, para esquivar objetos y lo que quiero hacer es cuando la distancia sea <=10 vaya en retroceso, digamos por 5 segundos y en el lcd aparezca "atras" y pasando esos 5 segundos sólo gire la rueda izquierda y en el lcd aparezca "girando" y siga adelante, pero no logro hacerlo.
Espero saber si alguien me puede asesorar cómo puedo hacerlo.
Acá está mi código:
PHP:
#include <16F877.h>
#FUSES XT,NOWDT,NOPROTECT,PUT,NOBROWNOUT,NOLVP
#use delay(clock=4000000)
#include <lcd.c>
#define trig pin_B1
#define echo pin_B0
#USE standard_io(b)
#USE standard_io(a)
#USE standard_io(c)
#USE standard_io(d)
int16 distancia, tiempo;
void main()
{
lcd_init();
printf(LCD_PUTC, "\f Iniciando.");
delay_ms(500);
printf(LCD_PUTC, "\f Iniciando..");
delay_ms(500);
printf(LCD_PUTC, "\f Iniciando...");
delay_ms(500);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
while(1)
{
output_high(trig);
delay_us(20);
output_low(trig);
while(!input(echo))
{}
set_timer1(0);
while(input(echo))
{}
tiempo=get_timer1();
distancia=(tiempo*10)/(58.0);
lcd_gotoxy(1,1);
printf(lcd_putc,"Distancia = %Lu",distancia);
lcd_gotoxy(1,2);
lcd_putc("Avanzando");
delay_ms(500);
if(distancia<=10){
output_low(pin_c0);
output_high(pin_c1);
output_low(pin_c2);
output_high(pin_c3);
lcd_gotoxy(1,2);
lcd_putc("Atras");
delay_ms(500);
output_low(pin_c0);
output_low(pin_c1);
output_high(pin_c2);
output_low(pin_c3);
lcd_gotoxy(1,2);
lcd_putc("Girando");
delay_ms(500);
}
else{
output_high(pin_c0);
output_low(pin_c1);
output_high(pin_c2);
output_low(pin_c3);
lcd_gotoxy(1,2);
lcd_putc("Avanzando");
delay_ms(500);
}
}
}
Tengo dificultades, ya que logro que avance y cuando la distancia es <=10 sólo retrocede poco, hasta que en el lcd marca 11 y vuelve avanzar y quiero que retroceda 5 segundos cuando la distancia sea <=10
Última edición por un moderador: