hola a todos quisiera pedir una asesoría ya que en el buscador de la pagina no encuentro lo que yo buscaba por que tengo un sensor de temperatura lm35 conectado al pic16f877a y yo declaro que la temperatura es mayor a 36 grados este accione unos motores y un led y que en el lcd aparesca alerta pero este cambia no se queda fijo cambia de alerta a normal y los motores encienden 5 segundos y se apagan sigue asi por un rato y lo que quiero es que se quede fijo a menos que la temperatura sea menos de 36 por que aun asi siendo 40 grados cambia ya intente subir las demoras pero lo que hace sea lenta la lectura en el lcd y tambien los motores se accionen incorrectamente lo que necesito es si me pueden explicar por que paso eso.
ahi esta el codigo que utilize para hacer mi circuito solo necesito que se quede fijo hasta que baje la temperatura por que no se queda asi gracias por comprension
Código:
#include "16f877.h"
# device *=16
#device adc=10
#use delay(clock=4000000)
#fuses xt,nowdt,noput,nobrownout,nolvp,noprotect
#include "lcd.c"
#use standard_io (D)
#use standard_io (A)
#use standard_io (B)
#use standard_io (C)
float temperatura;
void main()
{
setup_adc_ports(RA0_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
setup_COUNTERS(RTCC_internal.rtcc_div_1);
set_adc_channel(0);
lcd_init();
lcd_gotoxy(5,1);
lcd_putc("Bienvenido");
delay_ms(350);
lcd_init();
while(true)
{
temperatura=(float)read_adc()/2;
//********grados centigrados
lcd_gotoxy(5,1);
printf(lcd_putc,"%f",temperatura);
lcd_gotoxy(12,1);
lcd_putc("Grados");
delay_ms(200);
if(temperatura<=150&&temperatura>=40)
{
output_high(pin_a1);
output_low(pin_a2);
output_low(pin_a3);
output_high(pin_b0);
output_high(pin_b1);
output_low(pin_b2);
output_high(pin_c0);
output_high(pin_c1);
output_low(pin_c2);
lcd_gotoxy(5,2);
lcd_putc("Alta");
delay_ms(2000);
}
else
{
output_low(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
output_low(pin_b0);
output_low(pin_b1);
output_low(pin_b2);
output_low(pin_c0);
output_low(pin_c1);
output_low(pin_c2);
lcd_gotoxy(5,2);
lcd_putc("Normal");
delay_ms(2000);
}
if(temperatura<=500&&temperatura<=16)
{
output_low(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
output_high(pin_b0);
output_low(pin_b1);
output_high(pin_b2);
output_high(pin_c0);
output_low(pin_c1);
output_high(pin_c2);
lcd_gotoxy(5,2);
lcd_putc("Baja");
delay_ms(2000);
}
else
{
output_low(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
output_low(pin_b0);
output_low(pin_b1);
output_low(pin_b2);
output_low(pin_c0);
output_low(pin_c1);
output_low(pin_c2);
lcd_gotoxy(5,2);
lcd_putc("Normal");
delay_ms(2000);
}
}
}
ahi esta el codigo que utilize para hacer mi circuito solo necesito que se quede fijo hasta que baje la temperatura por que no se queda asi gracias por comprension
Última edición por un moderador: