Hola, soy bastante nueva con el arduino y estoy realizando un proyecto con arduino uno, que incluye un keypad y un lcd. Intente añadirle una contraseña, la cual quiero que aparezca en el lcd. Llegue a realizar que sea posible el añadir los números y que salgan en el lcd, pero cada vez que intento añadirle una contraseña, no funciona. Quería saber como hacerlo y si quizás mi código está mal. Gracias.
#include <Keypad.h>
#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
Servo servo;
byte C4 = 7;
byte C3 = 6;
byte C2 = 5;
byte C1 = 4;
byte R4 = 8;
byte R3 = 9;
byte R2 = 2;
byte R1 = 3;
int pinServo = 10;
unsigned long anterior = 0;
#define I2C_ADDR 0x27
LiquidCrystal_I2C lcd(I2C_ADDR,16,2);
const byte ROWS2 = 4;
const byte COLS2 = 4;
char keys2[ROWS2][COLS2] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins2[ROWS2] = {9, 8, 7, 6};
byte colPins2[COLS2] = {5, 4, 3, 2};
Keypad keypad = Keypad( makeKeymap(keys2), rowPins2, colPins2, ROWS2, COLS2 );
int estado = 0;
String leido = "";
void setup() {
Serial.begin(9600);
keypad.setHoldTime(250);
servo.attach(pinServo);
lcd.init();
lcd.backlight();
}
void loop() {
switch (estado) {
case 0:
leer();
break;
case 1:
comprobar();
break;
case 2:
moverServo();
break;
}
}
void leer() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Codigo: ");
lcd.setCursor(0, 1);
servo.write(180);
delay(2000);
leido = "";
while (true) {
char tecla = keypad.getKey();
if ( tecla ) {
lcd.print('*');
leido += tecla;
if ( leido.length() == 4) {
break;
}
}
}
estado = 1;
}
void comprobar() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Comprobando...");
Serial.println(leido);
while (Serial.available() == 0) {}
if ( Serial.readString() == "1"){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Perfecto");
delay(1000);
estado = 2;
}else{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Error");
delay(1000);
estado = 0;
}
}
void moverServo() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sacando chicle...");
servo.write(45);
delay(2000);
estado = 0;
}