Está en la página 1de 7

ULTRASONICO 20 A 50 CON SENSOR

#include <16F877A.h>
#fuses XT,NOPROTECT,NOWDT,NOLVP,PUT,NOBROWNOUT
#use delay (clock=4000000)
#include <PICStudio_lcd_2x16BK.c>
#bit portd=0x08.0 //Define los pines de trigger y eco que se van a usar
#define TRIGGER PIN_C6
#define ECHO PIN_C7
void inicializar()
{
set_tris_c(0x80);
lcd_init();
}
//Funcin que realizar la medicin y retornara el valor de distancia int16
mide_distancia
(void)
{
int16 centimetros=0;
//Envia el pulso de disparo: output_high(TRIGGER);
delay_us(50);
output_low(TRIGGER);
//espera flanco de subida por el pin echo
while(~input(ECHO))
{
}
//comienza a contar centimetros hasta que pin echo sea cero
while(input(ECHO)) { centimetros++; delay_us(58);
}
//demora de seguridad y retorna con el valor de centimetros contados
delay_ms(50);
return(centimetros);
}
// Funcion principal del programa void main( void )
{
//Variables locales
int16 distancia;
int8 i =0 ;
//Inicializa el Micro inicializar();
// lazo infinito
while (true)
{
distancia=mide_distancia();
// lcd_gotoxy(1,1);
// si lectura > 500cm entonces no es valida, osea no hay objeto
if(distancia>20) {
{
portd=0;} lcd_putc('\f'); printf(lcd_putc,"NO DETECTA");
}
// si distancia fue < 500cm es una distancia valida y la imprime en LCD
else

{
lcd_putc('\f');
// Borra LCD printf(lcd_putc,"Medicion:%d",i);
lcd_gotoxy(1,2);
printf(lcd_putc,"%03lucm",distancia);
delay_ms(1);
i++;
{ portd=1;} }
}// cierra lazo infinito }

Relevador con interruptor


#include <16F877.h>
#fuses XT,NOPROTECT,NOWDT,NOLVP,PUT,NOBROWNOUT
#use delay (clock=4000000)
#include <PICStudio_lcd_2x16BK.c>
//Define los pines de trigger y eco que se van a usar
#define TRIGGER PIN_C6//Blanco
#define ECHO
PIN_C7//Azul
#Define Flase
0
#Define True
1
void inicializar()
{
set_tris_c(0x80);
set_tris_d(0x00);
lcd_init();
}
//Funcin que realizar la medicin y retornara el valor de distancia
int16 mide_distancia(void)
{
int16 centimetros=0;
//Envia el pulso de disparo:
output_high(TRIGGER);
delay_us(50);
output_low(TRIGGER);
//espera flanco de subida por el pin echo
while(~input(ECHO)){}
//comienza a contar centimetros hasta que pin echo sea cero
while(input(ECHO))
{
centimetros++;
delay_us(58);
}
//demora de seguridad y retorna con el valor de centimetros contados

delay_ms(5);
return(centimetros);
}
// Funcion principal del programa
void main( void )
{
//Variables locales
int16 distancia;
int8 i =0 ;

//Inicializa el Micro
inicializar();
// lazo infinito
while (true)
{
distancia=mide_distancia(); //
lcd_gotoxy(1,1);
// si lectura > 500cm entonces no es valida, osea no hay objeto
if(distancia>=20&&distancia<=40)
{
lcd_putc('\f'); // Borra LCD
printf(lcd_putc,"Medicion:%d",i);
lcd_gotoxy(1,2);
printf(lcd_putc,"%03lucm",distancia);
delay_ms(1);
i++;
output_high(PIN_E2);
}
// si distancia fue < 500cm es una distancia valida y la imprime en LCD
else
{
lcd_putc('\f');
printf(lcd_putc,"LOOOL");
output_low(PIN_E2);
}
}// cierra lazo infinito
}// cierra main
//********************************************************************

Ultrasnico 20 a 30 con sensor


#include <16F877.h>
#fuses XT,NOPROTECT,NOWDT,NOLVP,PUT,NOBROWNOUT
#use delay (clock=4000000)
#include <PICStudio_lcd_2x16BK.c>
//Define los pines de trigger y eco que se van a usar
#define TRIGGER PIN_C6//Blanco
#define ECHO PIN_C7//Azul
#Define Flase 0
#Define True 1
void inicializar()
{
set_tris_c(0x80);
set_tris_d(0x00);
lcd_init();
}
//Funcin que realizar la medicin y retornara el valor de distancia
int16 mide_distancia
(void) {
int16 centimetros=0;
//Envia el pulso de disparo:
output_high(TRIGGER);
delay_us(50);
output_low(TRIGGER);
//espera flanco de subida por el pin echo
while(~input(ECHO)){
}
//comienza a contar centimetros hasta que pin echo sea cero
while(input(ECHO))
{
centimetros++;
delay_us(58);
}
//demora de seguridad y retorna con el valor de centimetros contados
delay_ms(5);
return(centimetros);
}
// Funcion principal del programa
void main( void )
{
//Variables locales int16 distancia;
int8 i =0 ;
//Inicializa el Micro
inicializar();

// lazo infinito
while (true)
{
distancia=mide_distancia();
// lcd_gotoxy(1,1);
// si lectura > 500cm entonces no es valida, osea no hay objeto
if
(distancia>=20&&distancia<=30)
{
output_high(PIN_E2);
delay_ms(50);
}
// si distancia fue < 500cm es una distancia valida y la imprime en LCD
else
{
output_low(PIN_E2);
delay_ms(50);
}
}// cierra lazo infinito }
// cierra main //

Sensor infrarrojo MOC3030


#include <16F877.h>
#fuses XT,NOPROTECT,NOWDT,NOLVP,PUT,NOBROWNOUT
#use delay (clock=4000000)
#include <PICStudio_lcd_2x16BK.c>
//Define los pines de trigger y eco que se van a usar
#define TRIGGER PIN_C6//Blanco
#define ECHO
PIN_C7//Azul
#Define Flase
0
#Define True
1
void inicializar()
{
set_tris_c(0x80);
set_tris_d(0x00);
lcd_init();
}
//Funcin que realizar la medicin y retornara el valor de distancia
int16 mide_distancia(void)
{
int16 centimetros=0;
//Envia el pulso de disparo:
output_high(TRIGGER);
delay_us(50);

output_low(TRIGGER);
//espera flanco de subida por el pin echo
while(~input(ECHO)){}
//comienza a contar centimetros hasta que pin echo sea cero
while(input(ECHO))
{
centimetros++;
delay_us(58);
}
//demora de seguridad y retorna con el valor de centimetros contados
delay_ms(5);
return(centimetros);
}
// Funcion principal del programa
void main( void )
{
//Variables locales
int16 distancia;
int8 i =0 ;

//Inicializa el Micro
inicializar();
// lazo infinito
while (true)
{
distancia=mide_distancia(); //
lcd_gotoxy(1,1);
// si lectura > 500cm entonces no es valida, osea no hay objeto
if(distancia>=20&&distancia<=40)
{
lcd_putc('\f'); // Borra LCD
printf(lcd_putc,"Medicion:%d",i);
lcd_gotoxy(1,2);
printf(lcd_putc,"%03lucm",distancia);
delay_ms(1);
i++;
output_high(PIN_E2);
}
// si distancia fue < 500cm es una distancia valida y la imprime en LCD
else
{
lcd_putc('\f');

printf(lcd_putc,"LOOOL");
output_low(PIN_E2);
}
}// cierra lazo infinito
}// cierra main
//********************************************************************