TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Pablo León en 05 de Junio de 2018, 16:25:35
-
Hola a todos, tengo un problema ya que quise comenzar a aprender más de pic y comencé con algo sencillo, a usar el DHT11 y el código es el siguiente
#define LCD_RS_PIN PIN_B1
#define LCD_RW_PIN PIN_B2
#define LCD_ENABLE_PIN PIN_B3
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
//End LCD module connections
#include <18F4580.h>
#device adc=10
#FUSES NOMCLR,INTRC_IO,NOWDT, PUT, PROTECt
#use delay(clock=8000000)
//#BYTE TRISD = 0x95
//#use fast_io(D)
#include "DHT11.c"
#include <lcd.c>
void main()
{
unsigned char state = 0;
lcd_init();
DHT11_init();
lcd_gotoxy(6, 1); // Go to column 2 row 1
lcd_putc("SENSOR");
lcd_gotoxy(7, 2); // Go to column 1 row 2
lcd_putc("DHT11");
delay_ms(2000);
// trisd=0b0011;
while(true)
{
state = get_data();
lcd_putc("\f");
printf(lcd_putc,"\fNo hay sensor %3u ",state);
break;
}
case 3:
{
// printf(lcd_putc,"\fFaltan datos en la informacion");
//break;
printf(lcd_putc,"\fNo hay Datos");
break;
}
default:
{
lcd_gotoxy(2,1);
printf(lcd_putc,"Tmp *C: %3u.%01u \r\n" , values[2], values[3]);
lcd_gotoxy(2,2);
printf(lcd_putc,"R.H : %3u \r\n", values[0]);
lcd_gotoxy(7,2);
lcd_putc("%");
break;
}
}
delay_ms(1000);
}
}
el problema es que cuando lo conecto todo va bien pero me sale un segundo los valores y en otro me sale "no hay sensor", el mensaje que quise poner al no detectarlo, ya intenté mucho y no he podido,los valores si lo muestra pero repito, primero me salen los valores, luego se limpia la pantalla y me muestra el mensaje de error y vuelve a mostrar los valores, por favor ayuda!!!
-
te falta una buena cantidad de código...
- Veo que usas un switch..case, pero nunca existio un swtich en tu codigo.
- No se que hace la funcion DHT11_init(), ni tampoco get_data()
-
Si, se te borraron un par de lineas en el código donde deberia aparecer el switch...
Yo estoy usando ese sensor estos días. Me hice una rutina para leerlo en un pic12f508, asi que lo tuve que hacer desde cero lo mas chiquito posible, imaginate.
Ojo que el sensor necesita 2 segundos para realizar la muestra, asi que tenes que colocar un retardo entre cada vez que lo lees.
Por eso te da error si, error no. A mi me paso exactamente lo mismo, hasta que me di cuenta, y resulta que en la hoja de datos dice eso, no le había prestado atención...
Igual esta bien, estar leyendo temperatura y humedad, no hace falta tener actualizaciones tan tan rápido.
-
Hola Pablo León, yo lo acabo de usar al DHT11 hace unos días, no e tenido problemas en leerlo una ves por segundo, pero si necesita de por lo menos un segundo desde la conexión de la alimentación para funcionar correctamente, si tratas de leer antes del segundo de conexión, seguro tendrás problemas.
Un saludo.
Atte. CARLOS.