Tengo estos dos Sensores cada uno si me trabaja individual pero cuando ambos los manipulo el programa ya no hace lo que yo esperaria el programa es de dos sensores de temperatura el primero se activa a 3 Grados luego apaga el led a los 24 y se empieza a disminuir esta, despues se activa el otro en 24 para que empiece a sensar el otro es un ciclo.
Código:
#include "PICPLAY_18F4550.h"
// Definiciones para el programa
#define condensador PIN_C1
#define luz_lcd Pin_B3
#define alarma Pin_B2
#define boton_up input(PIN_B0) // Boton que incrementa la temperatura deseada por le usuario
#define boton_down input(PIN_B1) // Boton que decrementa la temperatura deseada por el usuario
#define presionado 0 // los botones al presionarse dan 0
#define no_presionado 1 // los botones al no presionarse dan 1
#define limite_evaporador 2.9
#define limite_inferior 17.0
#define limite_superior 30.0
//****************************************************************************************
#include "picplay_lcd.c" // libreria para LCD
#include "picplay_adc.c"
//float temperatura_central=24.0; // temperatura_central deseada inicialmente de 24.0°C
float t_ambiente,t_evaporador; // temperatura medida tambien como float
float temperatura_central;
void pitido(void); // declaramos funcion pitido() para hacer sonido con buzzer
void main(void){
lcd_init(); // inicializa el lcd
on(luz_lcd); // enciende luz del lcd (PIN_B3)
adc_init(ADC_REF_EXTERNAL); // Voltaje de referencia externo, lo ajustaremos a 2.56V mediante POT2 de la tarjeta (RA3/Vref+)
temperatura_central=24.0; //inicializa temperatura central
while(true){ // LAZO INFINITO
t_ambiente=read_adc10(0); // leemos el canal 0 del ADC en formato 10 bits
t_evaporador=read_adc10(1); // leemos el canal 1 del ADC en formato 10 bits
t_ambiente=t_ambiente*0.25; // convertimos a °C, (en esta ocacion los decimales no se truncan porque "temperatura" es float)
t_evaporador=t_evaporador*0.25; // convertimos a °C, (en esta ocacion los decimales no se truncan porque "temperatura" es float)
lcd_gotoxy(9,1);
printf(lcd_putc,"T1=%3.2f",t_ambiente); // imprime temperatura en LCD en formato de punto flotante
lcd_gotoxy(1,2);
printf(lcd_putc,"T2=%3.2f",t_evaporador ); // imprime temperatura en LCD en formato de punto flotante
lcd_gotoxy(1,1);
printf(lcd_putc,"TD=%3.2f",temperatura_central); // imprime temperatura deseada en LCD en formato de punto flotante
if (t_evaporador >= temperatura_central)
{
t_evaporador = 0;
}
if((t_evaporador>=limite_evaporador)&& (t_evaporador<temperatura_central))
{
on(condensador );
}
else if (t_evaporador>=temperatura_central)
{
off(condensador );
}
if((t_ambiente>temperatura_central))
{
on(condensador );
}
else if ((t_evaporador<=limite_evaporador))
{
off(condensador );
}
else if ((t_evaporador<temperatura_central)&& (t_ambiente>temperatura_central))
{
off(condensador );
}
if(boton_up==presionado){
temperatura_central+=1;
pitido();
delay_ms(100);
}
if(boton_down==presionado){
temperatura_central-=1;
pitido();
delay_ms(200);
}
} // cierra lazo infinito
} // cierra main
void pitido(void){
on(alarma);
delay_ms(50);
off(alarma);
} ...
Última edición por un moderador: