Go Down

Topic: Mi primer proyecto (ayuda) (Read 381 times) previous topic - next topic

hola amigos  :)
soy nuevo con arduino y estoy trabajando en mi primer proyecto que es una cerradura digital con clave
para que me entiendan mejor les dejo el codigo y el esquema de coneccion de los componentes
CODIGO:
Quote
#include <Servo.h>
#include <LiquidCrystal.h>
#include <Keypad.h>

//codigo necesario para el teclado
const byte filas = 4;
const byte columnas = 3;
char teclas[filas] [columnas] =

{
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte pinsFilas[filas] = {A1, A2, A3, A4};       //En orden: F1, F2, F3, F4
byte pinsColumnas[columnas] = {A5, 6, 7};       //En orden: C1, C2, C3
//crear y nombrar el teclado
Keypad kpd= Keypad(makeKeymap(teclas), pinsFilas, pinsColumnas, filas, columnas);

LiquidCrystal lcd(9, 8, 5, 4, 3, 2);  // inicializo lcd


char pas1[10],pas2[10];
Servo cerradura;

void setup ()
{
  lcd.begin(16, 2);
  cerradura.attach(12);
}

void loop()
{
  int i=0,j=0,f=0,w=0,k=0;
  //primero se crea un password
  lcd.setCursor(1,0);
  lcd.print("CREAR PASSWORD");
  lcd.setCursor(6,1);
 
for(i=0;i<=3;i++)
{
pas1=kpd.waitForKey();
lcd.print("*");
delay(100);
}

delay(50);
//bucle para ingresar la contraseña
while(f==0)
{
   //pide que ingrese la contraseña
   lcd.clear();
   lcd.setCursor(0,0);
   lcd.print("PUERTA BLOQUEADA");
   lcd.setCursor(6,1);
   cerradura.write(0);

  for(j=0;j<=3;j++)
      {
      pas2[j]=kpd.waitForKey();
      lcd.print("*");
      }
   
   delay(50);
   //verifica los caracteres correctos
   w=0;
   for(k=0;k<=3;k++)
   {
     if(pas1[k]==pas2[k])
     {
       w++;
     }
   }
   //compara la contraseña original vs la ingresada
   if(w==4)
   {
     lcd.clear();
     lcd.setCursor(1,0);
     lcd.print("CLAVE CORRECTA");
     lcd.setCursor(3,1);
     lcd.print("'Bienvenido");
     cerradura.write(180);
     delay(5000);
   }
   
   else
   {
     lcd.clear();
     lcd.setCursor(1,0);
     lcd.print("ERROR DE CODIGO");
     lcd.setCursor(0,1);
     lcd.print("ACCESO DENEGADO");
     delay(5000);
   }
  }
}


ESQUEMA:


aqui el link de la imagen por si no se ve bien: http://i.minus.com/iNNb9pggaxkND.png
hasta ahi todo bien el codigo funciona perfectamente.

pero aqui es donde necesito la primera ayuda
el caso es que la cerradura (servo) se sierra (regresa a 0 grados) automaticamente y yo lo que quiero es que se quede abierta hasta que yo presione un boton y se sierre solo al presionar un boton que sea independiente del teclado

bueno lo segundo que quisiera que me ayuden es cuando se corta la energia del arduino (desconecto el usb/cargador)
pide que cree de nuevo la contraseña y yo lo que quiero es que pida solo una vez y se quede guardada y si se desconecta la energia al volverla a conectar no pida crear de nuevo una clave. no se si me explico

y si se ponen generosos y me quieren seguir ayudando pues me vendria bien saber como hacer para poder cambiar la contraseña por ejemplo presionando 4 veces # que me salga la opcion de cambiar contraseña pero que me pida la anterios para poderla cambiar.

bueno eso es todo espero que me ayuden y de antemano mi gracias :)

_jose_

Solo te puedo decir que en lo referente a preservar datos una vez apagado el arduino te mires esto:
http://arduino.cc/en/Reference/EEPROM

Go Up