Buenos noches, les pido el favor a ver si me ayudan a verificar este código para manejar un teclado matricial 4x4 en conjunto con un sensor de temperatura lm35. El sensor me funciona correctamente pero el teclado no, no sale la tecla presionada en el lcd. He mirado varios ejemplos aquí pero no no encuentro como conectar el teclado como análogo. Muchas gracias!!
#include <16F887.h>
#DEVICE ADC=8;
#fuses intrc_io,nomclr, nowdt
#use delay(clock=4Mhz)
#use rs232(baud=9600, parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9)
#include <LCD.c>
void temperatura(){
float valor_convertido;
float temperatura;
set_adc_channel(0);
valor_convertido=read_adc();
temperatura=(4.8/255)*valor_convertido*100;
LCD_gotoxy(4,1);
printf(LCD_PUTC,"T=%f",temperatura);
LCD_gotoxy(4,2);
LCD_PUTC(" ");
delay_ms(50);
}
void teclado(){
int Valor_AD=0;
int Valor_AD_anterior=0;
char TeclaChar;
set_adc_channel(1);
Valor_AD=read_adc();
delay_ms(200);
if ((Valor_AD)&&(Valor_AD!=Valor_AD_anterior))
{
if(Valor_AD>=145&&Valor_AD<=149)
TeclaChar='0';
if(Valor_AD>=178&&Valor_AD<=180)
TeclaChar='8';
if(Valor_AD>=185&&Valor_AD<=188)
TeclaChar='5';
if(Valor_AD>=190&&Valor_AD<=195)
TeclaChar='2';
if(Valor_AD>=147&&Valor_AD<=150)
TeclaChar='#';
if(Valor_AD>=150&&Valor_AD<=154)
TeclaChar='9';
if(Valor_AD>=157&&Valor_AD<=160)
TeclaChar='6';
if(Valor_AD>=163&&Valor_AD<=165)
TeclaChar='3';
if(Valor_AD>=195&&Valor_AD<=197)
TeclaChar='*';
if(Valor_AD>=202&&Valor_AD<=204)
TeclaChar='7';
if(Valor_AD>=205&&Valor_AD<=214)
TeclaChar='4';
if(Valor_AD>=222&&Valor_AD<=224)
TeclaChar='1';
LCD_gotoxy(4,1);
LCD_PUTC(" ");
LCD_gotoxy(1,2);
printf(LCD_PUTC,"VC: %3u T:%c ",Valor_AD, TeclaChar);
delay_ms(500);}
Valor_AD_anterior=valor_AD;
}
void main()
{
LCD_init();
setup_adc_ports(PIN_A0);
setup_adc_ports(PIN_A1);
setup_adc(adc_clock_internal);
while(TRUE){
teclado();
temperatura();
}
}