Estoy intentando utilizar el sensor de proximidad por ultrasonido HC-SR04:
https://www.mouser.com/ds/2/813/HCSR04-1022824.pdfY poder visualizar la distancia en un lcd. Con este código me salen valores aleatorios en el lcd incluso si desconecto el sensor.
#include <medidor_de_distancia_main.h>
#use standard_io(D)
#use standard_io(B)
#define LCD_ENABLE_PIN PIN_D0
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
#include <lcd.c>
//!#define ECHO PIN_B6
#define TRIG PIN_B7
volatile int tiempo = 0;
volatile float distancia = 0;
#INT_EXT
void ext_isr(){
tiempo = get_timer1();
distancia = (float)(tiempo/2)/(29.15);
}
void main()
{
lcd_init();
lcd_putc('\f');
OUTPUT_LOW(TRIG);
ext_int_edge(H_TO_L);
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); //65.5 ms overflow
while(TRUE)
{
OUTPUT_HIGH(TRIG);
delay_us(10);
OUTPUT_LOW(TRIG);
set_timer1(0);
delay_ms(65);
printf(lcd_putc,"\f Dist= %2.2f",distancia);
delay_ms(100);
}//while(TRUE)
}//void main()
Se supone que el echo es el pin RB0 y accede a la interrupción externa por flanco de bajada. En ese instante se obtiene el valor del timer1 = tiempo. Ayuda por favor
