Proyecto de control de acceso

Hola.
Ante todo deciros que soy nuevo en el mudo de arduino. quiero realizar un proyecto que empezará con un control de acceso y una vez que la persona sea reconocida pueda encender luces o apagar una alarma.
he empezado por utilizar el arduino uno y easyvr 3. lo de introducir los wav en la vr y demás ya lo tengo dominado. y al generar el codigo y subirlo al arduino uno, al hacerlo funcionar, saluda (Esto esta bien) le doy el nombre, me reconoce y me pide la contraseña… e aqui el fallo. por mas que se la digo no es capaza de reconocerla.
Perdonar mi inexperiencia y seguro que mas de uno se descojona con el fallo. Yo voy entendiendo el lenguaje poco a poco. ¿me podeis hechar un cable? no pido un tutto solo que alguien me diga que falla y el porque a sido, para poderlo entender.

#if defined(ARDUINO) && ARDUINO >= 100
#include “Arduino.h”
#include “SoftwareSerial.h”
SoftwareSerial port(12,13);
#else // Arduino 0022 - use modified NewSoftSerial
#include “WProgram.h”
#include “NewSoftSerial.h”
NewSoftSerial port(12,13);
#endif
int ena=2;
int enb=3;
#include “EasyVR.h”
#include <Servo.h>
#define SND_Access_denied 1
#define SND_Access_granted 2
#define SND_Hello 3
#define SND_Please_repeat 4
#define SND_Please_say_your_password 5
#define SND_Please_talk_louder 6
Servo myservo;
EasyVR easyvr(port);
EasyVRBridge bridge;
uint32_t mask = 0;
int8_t group = 0;
uint8_t train = 0;
char name[32];
void setup()
{
pinMode(ena,OUTPUT);
pinMode(enb,OUTPUT);
// bridge mode?
if (bridge.check())
{
cli();
bridge.loop(0, 1, 12, 13);
}
Serial.begin(9600);
port.begin(9600);
myservo.attach(9);
myservo.write(90);

if (!easyvr.detect())
{
Serial.println(“EasyVR no detectado!”);
for (;;);
}
easyvr.setPinOutput(EasyVR::IO1, LOW);
Serial.println(“EasyVR detectado!”);
easyvr.setTimeout(5);
easyvr.setLanguage(EasyVR::ITALIAN);

int16_t count = 0;
if (easyvr.getGroupMask(mask)) // obtener los nombres de usuario y contraseñas capacitados
{
uint32_t msk = mask;
for (group = 0; group <= EasyVR::PASSWORD; ++group, msk >>= 1)
{
if (!(msk & 1)) continue;
if (group == EasyVR::TRIGGER)
Serial.print("Trigger: ");
else if (group == EasyVR::PASSWORD)
Serial.print("Password: “);
else
{
Serial.print(“Group “);
Serial.print(group);
Serial.print(”: “);
}
count = easyvr.getCommandCount(group);
Serial.println(count);
for (int8_t idx = 0; idx < count; ++idx)
{
if (easyvr.dumpCommand(group, idx, name, train))
{
Serial.print(idx);
Serial.print(” = “);
Serial.print(name);
Serial.print(”, Trained “);
Serial.print(train, DEC);
if (!easyvr.isConflict())
Serial.println(” times, OK”);
else
{
int8_t confl = easyvr.getWord();
if (confl >= 0)
Serial.print(” times, Similar to Word “);
else
{
confl = easyvr.getCommand();
Serial.print(” times, Similar to Command ");
}
Serial.println(confl);
} } }} }
easyvr.setLevel(EasyVR::HARDER);
easyvr.playSound(SND_Hello, EasyVR::VOL_FULL);
}
void loop()
{
int idx_cmd;
int idx_pwd;

easyvr.setPinOutput(EasyVR::IO1, HIGH); // LED on (listening)

Serial.println(“Say a name in Group 1”);
easyvr.recognizeCommand(1); // recognise command in group 1
while (!easyvr.hasFinished()); // wait for user name

easyvr.setPinOutput(EasyVR::IO1, LOW); // LED off
idx_cmd = easyvr.getCommand(); // get recognised user name
if (idx_cmd >= 0)
{
Serial.print("Name: ");
if (easyvr.dumpCommand(1, idx_cmd, name, train))
Serial.println(name);
else
Serial.println();

easyvr.playSound(SND_Please_say_your_password , EasyVR::VOL_FULL);
// ask for password PSD_TONY

easyvr.setPinOutput(EasyVR::IO1, HIGH); // LED on (listening)

Serial.println(“Say the password”);
easyvr.recognizeCommand(EasyVR::PASSWORD); // set group 16
while (!easyvr.hasFinished()); // wait for password

easyvr.setPinOutput(EasyVR::IO1, LOW); // LED off

idx_pwd = easyvr.getCommand(); // get recognised password

if (idx_pwd >= 0)
{
Serial.print("Password: ");

if (easyvr.dumpCommand(EasyVR::PASSWORD, idx_pwd, name, train))
{
Serial.print(" = ");
Serial.println(name);
}
else
Serial.println();

if ( idx_pwd == idx_cmd) // index of username and password are the same, access granted
{
Serial.println(“Access granted”);
easyvr.playSound(SND_Access_granted , EasyVR::VOL_FULL);
digitalWrite(ena,HIGH);
digitalWrite(enb,LOW);
delay(5000);
digitalWrite(ena,LOW);
digitalWrite(enb,LOW);
}
else // index of username and password differ, access is denied
{
Serial.println(“Access denied”);
easyvr.playSound(SND_Access_denied , EasyVR::VOL_FULL);
}

}

int16_t err = easyvr.getError();

if (easyvr.isTimeout() || (err >= 0)) // password timeout, access is denied
{

Serial.println(“Error, try again…”);
easyvr.playSound(SND_Access_denied , EasyVR::VOL_FULL);

}
}
else
{
if (easyvr.isTimeout())
Serial.println(“Timed out, try again…”);

int16_t err = easyvr.getError();
if (err >= 0)
{
Serial.print("Error ");
Serial.println(err, HEX);
}
}
}

Por cierto me podeis decir como poner el archivo en el post sin tener que usar la tabla???

control_de_acceso.ino (4.07 KB)

En este mismo foro, arriba de la lista de mensajes, tienes uno resaltado que se llama NORMAS DEL FORO.

Una leída que no te llevaría más de 5 minutos te diría como hacer para que tu código se vea más cómodo para todos, no sólo para ti.

Saludos!