Bueno pues despues de romperme un poco el coco y partiendo de que soy muy novatillo en el tema, pues creo que realizado un proyecto de este termostato, que a la vez pienso que puede servir a alguien, si es asi me alegro.
De antemano tengo que decir que utilizado un poquito de infomacion de por aqui y otro poquito de por alli y algo de mi cosecha, que es muy poquito, pero bueno algo esss.
De paso, si es posible, de los que teneis mas capacidad en el tema, me gustaria que me echaseis un cable, ya que me gustaria colocar 2 o 3 sensores y hay me atasco vastante, ya que mi idea es poner la informacion en una pantalla de lcd 20x4, con la que tener controlada la temperatura del coche de ciertas zonas,de momento, y mas adelante en una GLCD, pantalla por cierto que me esta costando aprender un monton.
Una pregunta ya que hay algo que no entiendo, si cambio la frecuencia de 20 Mhz a 4 o 10Mhz en pantalla solo me sale 0.0 grados de temperatura pero si pongo 20 todo perfecto y no doy con la tecla. digo esto por que solo tengo cristales de 4 y 10Mhz. Gracias a quien me pueda explicar el por que.
Este es el codigo en C:
De antemano tengo que decir que utilizado un poquito de infomacion de por aqui y otro poquito de por alli y algo de mi cosecha, que es muy poquito, pero bueno algo esss.
De paso, si es posible, de los que teneis mas capacidad en el tema, me gustaria que me echaseis un cable, ya que me gustaria colocar 2 o 3 sensores y hay me atasco vastante, ya que mi idea es poner la informacion en una pantalla de lcd 20x4, con la que tener controlada la temperatura del coche de ciertas zonas,de momento, y mas adelante en una GLCD, pantalla por cierto que me esta costando aprender un monton.
Una pregunta ya que hay algo que no entiendo, si cambio la frecuencia de 20 Mhz a 4 o 10Mhz en pantalla solo me sale 0.0 grados de temperatura pero si pongo 20 todo perfecto y no doy con la tecla. digo esto por que solo tengo cristales de 4 y 10Mhz. Gracias a quien me pueda explicar el por que.
Este es el codigo en C:
Código:
#include <16F877A.h>
#device adc=10
#FUSES NOWDT, HS, PUT, NOPROTECT, NODEBUG, BROWNOUT, NOLVP, NOCPD, NOWRT
#use delay (clock=20Mhz)
#include <1wire.c>
#include <lcd.c>
#include <ds18b20.c>
float temperatura;
int min = 20;
int max = 28;
void main()
{
lcd_init();
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(VREF_LOW|-2);
while (1)
{
temperatura = ds18b20_read();
lcd_gotoxy(1,1);
printf(lcd_putc,"TEMP: %3.1f ", temperatura);
lcd_putc(223);
lcd_putc("C ");
delay_us(10);
lcd_gotoxy(1,2);
printf(lcd_putc,"%d<=>%d",min,max);
if(temperatura <min)
{
delay_us(10);
printf(lcd_putc," Frio ");
output_high(PIN_D3);
output_low(PIN_B3);
}
else if (temperatura >= min && temperatura <= max){
printf(lcd_putc," Perfecta ");}
if (temperatura >max){
printf(lcd_putc," Calor ");
output_low(PIN_D3);
output_high(PIN_B3);}
if(input(pin_A1)==0){
max=max+1;}
if(input(pin_A2)==0){
max=max-1;}
if(input(pin_A3)==0){
min=min+1;}
if(input(pin_A4)==0){
min=min-1;}
}
}
Última edición por un moderador: