Autor Tema: problema codigo invernadero  (Leído 1577 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado nicolas

  • PIC10
  • *
  • Mensajes: 2
problema codigo invernadero
« en: 13 de Octubre de 2019, 14:51:39 »
hola, les cuento... estoy realizando un proyecto para el colegio, llevo muy poco tiempo en esto de la programacion y no se como resolver el problema que tengo.
el proyecto se trata de un invernadero automatizado; el cual consta de un control de temperatura usando el sensor(lm35) y un pic16f877A.

si dentro del invernadero llegase a haber entre 0 y 26 grados se tiene que encender un foco indicandomelo en un lcd(16x2),
y si sobrepasa los 33 grados se debe activar un ventilador, igualmente indicandomelo en el lcd.

el problema es el siguiente:
al hacer el cambio de palabras en el lcd, las letras se mezclan y no se porque sucede eso.
si alguien pudiese ayudarme se los agradeceria, aqui dejo el codigo(lenguaje c):

Código: [Seleccionar]

#INCLUDE <16F877A.H>
#DEVICE ADC=10
#USE DELAY(CLOCK=4000000)
#FUSES XT,NOWDT,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP                    
#include <lcd.c>              
#define fast_io(port_B)
#define PORTB 0x06
#bit Pata_motor = PORTB.0
#bit Pata_foco = PORTB.1
#BYTE PORTD= 8 //LCD 16X2
 
VOID MAIN(){
       
        LCD_INIT();
        float resultado, temperatura;
        float constante=0.49;
 
        setup_adc_ports(AN0);
        setup_adc(adc_clock_internal);
        set_adc_channel(0);
       
 
    while(true){
   
                resultado=read_adc();
                temperatura=resultado*constante;
 
                lcd_gotoxy(1,2);
                printf(lcd_putc,"%2.1fC ",temperatura);DELAY_MS(200);
 
               
                if((temperatura>=33)&&(temperatura<=50))
 
                {                     
                       
                        lcd_gotoxy(1,1);
                        lcd_putc("ALTA TEMPERATURA");
                        lcd_gotoxy(7,2);
                        lcd_putc("VENTILADOR");
                        output_high(pin_b0);
                        output_low(pin_b1);
                                               
                }
               
                else if((temperatura>=0)&&(temperatura<=26))      
               
                {  
               
                       
                        lcd_gotoxy(1,1);
                        lcd_putc("BAJA TEMPERATURA");
                        lcd_gotoxy(7,2);
                        lcd_putc("FOCO");
                        output_low(pin_b0);
                        output_high(pin_b1);   
                }
                       
    
          
                ELSE {  
                       
                      
                        lcd_gotoxy(1,1);
                        lcd_putc("TEMPERATURA:");
                        lcd_gotoxy(7,2);
                        lcd_putc("GRADOS");
                        output_low(pin_b0);
                        output_low(pin_b1);
                        printf(lcd_putc,"\n"); // Borro LCD
                       
                 }
   
   } }

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:problema codigo invernadero
« Respuesta #1 en: 13 de Octubre de 2019, 17:31:47 »
¿ ese display no tiene comando clear para limpiarlo?. Yo es que nunca lo he trabajado pero así en plan bestia y a fuerza bruta a las malas mandaría 16 espacios en blanco a cada línea antes de escribir y solucionado.

Código: C
  1. lcd_gotoxy(1,1);
  2.                         lcd_putc("                ");
  3.                         lcd_gotoxy(1,2);
  4.                         lcd_putc("                ");
  5.                         lcd_gotoxy(1,1);
  6.                         lcd_putc("ALTA TEMPERATURA");
  7.                         lcd_gotoxy(7,2);
  8.                         lcd_putc("VENTILADOR");
  9.                         output_high(pin_b0);
  10.                         output_low(pin_b1);

Desconectado nicolas

  • PIC10
  • *
  • Mensajes: 2
Re:problema codigo invernadero
« Respuesta #2 en: 13 de Octubre de 2019, 23:04:17 »
gracias por la ayuda, ahora si las palabras no se mezclan..., no tenia idea de que forma se podria limpiar el lcd.
 

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4034
Re:problema codigo invernadero
« Respuesta #3 en: 14 de Octubre de 2019, 06:22:49 »
¿Algún moderador que cambie de lugar el tema por no ser su ubicación el lugar donde sea colocado?
Todos los días se aprende algo nuevo.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:problema codigo invernadero
« Respuesta #4 en: 14 de Octubre de 2019, 09:03:38 »
Creo que lo podes limpiar enviando un \f en CCS

Código: C
  1. lcd_putc('\f');