Programación+2013

En esta sección de la página está depositada la programación realizada en el Año 2013. Básicamente lo que han hecho los chicos del grupo 2011 es el un programa principal, el cual al ser alimentado, queda en un estado de reposo del cual no va a cambiar a menos que el usuario lo ordene, mediante una tecla. Después de accionar tal tecla la alarma le otorga un tiempo de 10 segundos al usuario para que abandone el salón y después de esto queda en un estado alarmante. Los sensores están constantemente monitoreando. Si se abre la puerta principal el sensor de apertura de puertas cambia su estado a un 0 y la alarma lo interpreta, mostrando en el display LCD "INGRESE SU CONTRASEÑA". Si esta contraseña es correcta la alarma queda nuevamente en estado de reposo. Si no es así suena la sirena y no se detiene hasta que el código ingresado sea correcto. Si por el contrario alguno de los demás sensores detecta algo, suena directamente la sirena y no se detiene hasta que se ingrese la contraseña. Lo que nos pareció que debíamos cambiar fue el inicio de la alarma. Quisimos agregarle una rutina de inicio la cual funcione de la siguiente manera:



Esto en programado sería así:

//////////////////////////////////// DECLARACIONES GLOBALES ////////////////////////////////////

int i=4;

int c1;

int c2;

int c3;

int c4;

int c5;

int verifc1;

int verifc2;

int verifc3;

int verifc4;

int verifc5;

void Primera

{

lcd_putc("\f ** Bienvenido **");

lcd_putc("\f ** Por favor **\n Cree su contraseña"); //////////////////////////////////// CARACTER 1 ///////////////////////////////////////////

caracter1: // CARACTER 1 c1 = kbd_getc;

switch (c1)

{ case 10: // SI C1=* AVISA QUE NO SE HA INTRODUCIDO NADA Y VUELVE A ESPERARA EL 1ER CARACTER

lcd_putc("\f ** No ha introducido **\n ** Ningún Caracter **");

goto caracter1; case 11: // SI C1=* AVISA DE CONTRASEÑA CORTA Y VUELVE A ESPERARA EL 1ER CARACTER

lcd_putc("\f ** No ha introducido **\n ** Ningún Caracter **");

goto caracter1; default: // SI C1=0 A 9 ESCRIBE EL ASTERISCO

lcd_gotoxy(i,2);

lcd_putc("\f*"); // ESCRIBE EL ASTERISCO

break; } ////////////////////////////////// CARACTER 2 /////////////////////////////////////// caracter2:

c2 = kbd_getc; switch (c2)

{ case 10: // SI C2=* BORRA EL 1ER CARACTER Y VUELVE A LA ESPERA DE QUE SE INTODUZCA OTRO CARACTER

lcd_gotoxy(i,2);

lcd_putc(" ");

goto caracter1; case 11: // SI C2=# AVISA DE CONTRASEÑA CORTA Y VUELVE A ESPERARA EL 2DO CARACTER

lcd_putc("\f ** Contraseña **\n ** Demasiada Corta! **");

goto caracter2; default: // SI C2=0 A 9 ESCRIBE EL ASTERISCO

i=i+1;

lcd_gotoxy(i,2);

lcd_putc("\f*"); // ESCRIBE EL ASTERISCO

break; } ////////////////////////////////// CARACTER 3 ////////////////////////////////////////////// caracter3:

c3 = kbd_getc; switch (c3)

{ case 10: // SI C3=* BORRA EL 2DO CARACTER Y VUELVE A LA ESPERA DE QUE SE INTODUZCA OTRO CARACTER

lcd_gotoxy(i,2);

lcd_putc(" ");

goto caracter2; case 11: // SI C3=# AVISA DE CONTRASEÑA CORTA Y VUELVE A ESPERARA EL 3ER CARACTER

lcd_putc("\f ** Contraseña **\n ** Demasiada Corta! **");

goto caracter3; default: // SI C3=0 A 9 ESCRIBE EL ASTERISCO

i=i+1;

lcd_gotoxy(i,2);

lcd_putc("\f*"); // ESCRIBE EL ASTERISCO

break; } //////////////////////////// CARACTER 4 /////////////////////////////////////

caracter4:

c4 = kbd_getc; switch (c4)

{ case 10: // SI C4=* BORRA EL 3ER CARACTER Y VUELVE A LA ESPERA DE QUE SE INTODUZCA OTRO CARACTER

lcd_gotoxy(i,2);

lcd_putc(" ");

goto caracter3; case 11: // SI C4=# AVISA DE CONTRASEÑA CORTA Y VUELVE A ESPERARA EL 4TO CARACTER

lcd_putc("\f ** Contraseña **\n ** Demasiada Corta! **");

goto caracter4; default: // SI C4=0 A 9 ESCRIBE EL ASTERISCO

i=i+1;

lcd_gotoxy(i,2);

lcd_putc("\f*"); // ESCRIBE EL ASTERISCO

break;

}

////////////////// CONFIRMACIÓN O BORRADO DE 4 CARACTER /////////////////////////

caracter5:

c5 = kbd_getc; switch (c5)

{ case 10: // SI C5=* BORRA EL 4TO CARACTER Y VUELVE A LA ESPERA DE QUE SE INTODUZCA OTRO CARACTER

lcd_gotoxy(i,2);

lcd_putc(" ");

goto caracter4; case 11: // SI C5=# PIDE VERIFICAR LA CONTRASEÑA

lcd_putc("\f ** Verifique su **\n ** Contraseña **");

break; default: // SI C5=0 A 9 AVISA DE CONTRASEÑA DEMSIADO LARGA

lcd_putc("\f ** Contraseña **\n ** Demasiado larga **");

goto caracter5; } //////////////////////// VERIFICACIÓN DE CONTRASEÑA //////////////////////////////////

//////////////////////////////////// CARACTER 1 ///////////////////////////////////////////

verific_c1: // CARACTER 1 verifc1 = kbd_getc;

switch (verifc1)

{ case 10: // SI verifc1=* AVISA QUE NO SE HA INTRODUCIDO NADA Y VUELVE A ESPERARA EL 1ER CARACTER

lcd_putc("\f ** No ha introducido **\n ** Ningún Caracter **");

goto verific_c1; case 11: // SI verifc1=* AVISA DE CONTRASEÑA CORTA Y VUELVE A ESPERARA EL 1ER CARACTER

lcd_putc("\f ** No ha introducido **\n ** Ningún Caracter **");

goto verific_c1; default: // SI verifc1=0 A 9 ESCRIBE EL ASTERISCO

lcd_gotoxy(i,2);

lcd_putc("\f*"); // ESCRIBE EL ASTERISCO

break; } ////////////////////////////////// CARACTER 2 /////////////////////////////////////// verific_c2:

verifc2 = kbd_getc; switch (verifc2)

{ case 10: // SI verifc2=* BORRA EL 1ER CARACTER Y VUELVE A LA ESPERA DE QUE SE INTODUZCA OTRO CARACTER

lcd_gotoxy(i,2);

lcd_putc(" ");

goto verific_c1; case 11: // SI verifc2=# AVISA DE CONTRASEÑA CORTA Y VUELVE A ESPERARA EL 2DO CARACTER

lcd_putc("\f ** Contraseña **\n ** Demasiada Corta! **");

goto verific_c2; default: // SI verifc2=0 A 9 ESCRIBE EL ASTERISCO

i=i+1;

lcd_gotoxy(i,2);

lcd_putc("\f*"); // ESCRIBE EL ASTERISCO

break; } ////////////////////////////////// CARACTER 3 ////////////////////////////////////////////// verific_c3:

verifc3 = kbd_getc; switch (verifc3)

{ case 10: // SI verifc3=* BORRA EL 2DO CARACTER Y VUELVE A LA ESPERA DE QUE SE INTODUZCA OTRO CARACTER

lcd_gotoxy(i,2);

lcd_putc(" ");

goto verific_c2; case 11: // SI verifc3=# AVISA DE CONTRASEÑA CORTA Y VUELVE A ESPERARA EL 3ER CARACTER

lcd_putc("\f ** Contraseña **\n ** Demasiada Corta! **");

goto verific_c3; default: // SI verifc3=0 A 9 ESCRIBE EL ASTERISCO

i=i+1;

lcd_gotoxy(i,2);

lcd_putc("\f*"); // ESCRIBE EL ASTERISCO

break; } //////////////////////////// CARACTER 4 /////////////////////////////////////

verific_c4:

verifc4 = kbd_getc; switch (verifc4)

{ case 10: // SI verifc4=* BORRA EL 3ER CARACTER Y VUELVE A LA ESPERA DE QUE SE INTODUZCA OTRO CARACTER

lcd_gotoxy(i,2);

lcd_putc(" ");

goto verific_c3; case 11: // SI verifc4=# AVISA DE CONTRASEÑA CORTA Y VUELVE A ESPERARA EL 3ER CARACTER

lcd_putc("\f ** Contraseña **\n ** Demasiada Corta! **");

goto verific_c4; default: // SI verifc4=0 A 9 ESCRIBE EL ASTERISCO

i=i+1;

lcd_gotoxy(i,2);

lcd_putc("\f*"); // ESCRIBE EL ASTERISCO

break;

}

////////////////// CONFIRMACIÓN O BORRADO DE 4 CARACTER /////////////////////////

verific_c5:

verifc5 = kbd_getc; switch (verifc5)

{ case 10: // SI verifc5=* BORRA EL 4TO CARACTER Y VUELVE A LA ESPERA DE QUE SE INTODUZCA OTRO CARACTER

lcd_gotoxy(i,2);

lcd_putc(" ");

goto verific_c4; case 11: // SI verifc5=# VERIFICA LA CONTRASEÑA

lcd_putc("\f ** Verificando su **\n ** Contraseña **");

delay_ms(1000);

lcd_putc("\f * ");

delay_ms(1000);

lcd_putc(" * * ");

delay_ms(1000);

lcd_putc(" * * *");

break; default: // SI verifc5=0 A 9 AVISA DE CONTRASEÑA DEMSIADO LARGA

lcd_putc("\f ** Contraseña **\n ** Demasiado larga **");

goto verific_c5;

} /////////////////////////////// VERIFICACIÓN DE CONTRASEÑA /////////////////////////// if(c1==verifc1 && c2==verifc2 && c3==verifc3 && c4==verifc4)

{

write_eeprom(0x00, c1);

write_eeprom(0x01, c2);

write_eeprom(0x02, c3);

write_eeprom(0x03, c4);

lcd_putc("\f ** Contraseña **\n ** Guardada! **");

}

else

{

lcd_putc("\f ** Las Contraseñas **\n ** No coinciden! **");

delay_ms(1000);

lcd_putc("\f ** Por Favor **\n ** Vuelva a ingresarla!**");

goto caracter1;

}

}