Buenas tardes, no se si alguien me podria ayudar.
Estoy avanzando un proyecto de una cerradura electronica usando el i2c, el tema es que cuando llego a la parte del teclado no logra guardar nada y comienza a reiniciarse.
espero puedan ayudarme, adjunto el codigo.
Soy nuevo en esto de microcontroladores disculpen mis errores.
Muchas gracias.
#include "LIB_I2C_LCD.h"
unsigned short kp;
char usuario[7];
int i=0;
char contador=0;
// Keypad module connections
char keypadPort at PORTB;
void main() {
//Inicios
Keypad_Init();//Iniciar el Keypad
I2C1_Init(100000);//Iniciar Libreria I2C MicroC
I2C_LCD_Init();//Iniciar Libreria externa
PWM1_Init(5000); //iniciar PWM
TRISD.f0=0;
TRISD.f1=0;
TRISD.f2=0;
// Mensaje 1
I2C_LCD_Cmd(_LCD_CURSOR_OFF);
I2C_LCD_Cmd(_LCD_FIRST_ROW);
I2C_Lcd_Out(1,1,"PROYECTO CON ");
delay_ms(500);
I2C_LCD_Cmd(_LCD_SECOND_ROW);
I2C_Lcd_Out(2,1,"MICROCONTROLADOR");
delay_ms(1000);
//Mensaje 2
I2C_LCD_Cmd(_LCD_CLEAR);
I2C_LCD_Cmd(_LCD_FIRST_ROW);
I2C_Lcd_Out(1,1,"CERRADURA");
delay_ms(500);
I2C_LCD_Cmd(_LCD_SECOND_ROW);
I2C_Lcd_Out(2,1,"ELECTRONICA");
delay_ms(1000);
while(1){
I2C_LCD_Cmd(_LCD_CLEAR);
I2C_LCD_Cmd(_LCD_FIRST_ROW);
I2C_Lcd_Out(1,1,"INGRESE SU CLAVE");
kp=0;
do //Espera por una tecla.
kp=Keypad_Key_Click(); //Lee el número de la tecla y lo guarda en kp.
while (!kp);
switch (kp){
case 1: kp = 49; break; //49 es el código ASCII del número 1.
case 2: kp = 50; break; //50 es el código ASCII del número 2.
case 3: kp = 51; break; //51 es el código ASCII del número 3.
case 4: kp = 65; break; // A
case 5: kp = 52; break; // 4
case 6: kp = 53; break; // 5
case 7: kp = 54; break; // 6
case 8: kp = 66; break; // B
case 9: kp = 55; break; // 7
case 10: kp = 56; break; // 8
case 11: kp = 57; break; // 9
case 12: kp = 67; break; // C
case 13: kp = 42; break; // *
case 14: kp = 48; break; // 0
case 15: kp = 35; break; // #
case 16: kp = 68; break; // D
}
I2C_LCD_Cmd(_LCD_SECOND_ROW);
I2C_Lcd_Out(2,i+1,"*");
i++;
if(usuario[0]==49 && usuario[1]==49 && usuario[2]==49 && usuario[3]==49 && usuario[4]==49 && usuario[5]==49)//Contraseña 111111
{
I2C_LCD_Cmd(_LCD_CLEAR);
I2C_LCD_Cmd(_LCD_FIRST_ROW);
I2C_Lcd_Out(1,1,"BIENVENIDO");
I2C_LCD_Cmd(_LCD_SECOND_ROW);
I2C_Lcd_Out(2,1,"A CASA");