Control de acceso

hice el siguiente codigo y lo probe en tinkercad pero no muestra nada en el display ni funciona la clave alguien me puede decir que hice mal?

#include <Wire.h>
#include <Servo.h>
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>

#define ROJO 12
#define VERDE 13
#define BUZZER 10
#define SERVO 11

const byte FILAS = 4;
const byte COLUMNAS = 4;

char teclas[FILAS][COLUMNAS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};

byte pinFilas[FILAS] = {9, 8, 7, 6};
byte pinColumnas[COLUMNAS] = {5, 4, 3, 2};

Keypad teclado = Keypad(makeKeymap(teclas), pinFilas, pinColumnas, FILAS, COLUMNAS);

LiquidCrystal_I2C lcd(0x27, 16, 2);

Servo servoMotor;

const char claveCorrecta = "1234";

void setup() {
lcd.begin(16, 2);
lcd.setBacklight(LOW);
lcd.setCursor(0, 0);
lcd.print("Ingrese la clave");

pinMode(ROJO, OUTPUT);
pinMode(VERDE, OUTPUT);
pinMode(BUZZER, OUTPUT);
servoMotor.attach(SERVO);
}

void loop() {
char tecla = teclado.getKey();
if (tecla == claveCorrecta) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Clave correcta");

digitalWrite(VERDE, HIGH);

servoMotor.write(90);

delay(1000);

lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Ingrese la clave");

digitalWrite(VERDE, LOW);

servoMotor.write(0);

} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Clave incorrecta");

digitalWrite(ROJO, HIGH);

tone(BUZZER, 1000);

delay(2000);

lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Ingrese la clave");

digitalWrite(ROJO, LOW);

noTone(BUZZER);

}
}

Please follow the forum guidelines and post your code accordingly. You did not connect the purple thing to the white wire and it was not powered? Without more information that is about the best I can do. Post your annotated schematic that will help us help you. Remember we cannot see your project you have to explain it to us.

Siga las pautas del foro y publique su código en consecuencia. ¿No conectaste la cosa morada al cable blanco y no estaba encendida? Sin más información, eso es lo mejor que puedo hacer. Publique su esquema anotado que nos ayudará a ayudarlo. Recuerda que no podemos ver tu proyecto, tienes que explicárnoslo.

En principio posteaste en el foro en Inglés. :grimacing:

Por favor edita tu post y pon el código de acuerdo a las Normas del FORO EN ESPAÑOL, punto 7.

En el código, para empezar, está apagada la iluminación del display

lcd.setBacklight(LOW);

debes usar

lcd.setBacklight(1);
// o mejor
lcd.backlight();

La clave se ingresa dígito a dígito, no puedes comparar 1 dígito con la clave completa, nunca va a coincidir.

char tecla = teclado.getKey();
if (tecla == claveCorrecta) {

Hay muchísimos proyectos similares en internet, guíate de ellos para ver el manejo de la clave.

Además la clave está mal declarada

const char claveCorrecta = "1234";

debe ser un array

const char claveCorrecta[] = "1234";

Dices que

Difícil que siquiera compile.

Moderador:
Por favor, lee las Normas del foro y edita tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en (<CODE/>)



Si posteas en el foro en inglés usa idioma inglés para expresarte.
Si escribes en español debes usar el foro Arduino en español.
A partir de ahora todos responden en español.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.