Funcionamiento
Este proyecto combina la placa Arduino con varios componentes electrónicos para crear un sistema de control que permita mover un servomotor de 5V solo cuando se ingrese la clave correcta mediante un teclado matricial de 4×4. La información y el estado del sistema se visualizarán en un LCD de 16 pines conectado mediante su interfaz I2C.
Componentes
- Arduino (cualquier modelo, como Arduino Uno).
- Servomotor de 5V.
- Teclado matricial 4×4.
- Pantalla LCD de 16 pines con interfaz I2C.
- Módulo adaptador I2C para el LCD (si no está integrado).
- Fuente de alimentación para el servomotor (si es necesario, dependiendo de su consumo).
- Cables para conexiones.
- Protoboard.
Conexiones
- Conexión del teclado 4×4:
- Fila 1 del teclado matricial a pin 9 del Arduino.
- Fila 2 del teclado matricial a pin 8 del Arduino.
- Fila 3 del teclado matricial a pin 7 del Arduino.
- Fila 4 del teclado matricial a pin 6 del Arduino.
- Fila 5 del teclado matricial a pin 5 del Arduino.
- Fila 6 del teclado matricial a pin 4 del Arduino.
- Fila 7 del teclado matricial a pin 3 del Arduino.
- Fila 8 del teclado matricial a pin 2 del Arduino.
- Conexiones del Servo:
- Conecta la entrada del servo(IN) al pin 11 de la placa Arduino.
- Conecta el pin VCC del servo al pin de 5V de la fuente de poder.
- Conecta el pin GND del servo al pin GND de la fuente de poder.
- Conexiones del LCD con interfaz I2C:
- Conecta el pin VCC del servo al pin de 5V de la placa Arduino.
- Conecta el pin GND del servo al pin GND de la placa Arduino
- Fuente de alimantación:
- Conecta GND de la fuente a GND de arduino(solo si usas fuente de alimentación externa)
Código
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | #include <Arduino.h> #include <Keypad.h> #include <Servo.h> #include <LiquidCrystal_I2C.h> void moveServo(); // Configuración del teclado matricial const byte ROWS = 4; const byte COLS = 4; char keys[ROWS][COLS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} }; byte rowPins[ROWS] = {9, 8, 7, 6}; // Pines de las filas byte colPins[COLS] = {5, 4, 3, 2}; // Pines de las columnas Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); // Configuración del LCD con interfaz I2C LiquidCrystal_I2C lcd(0x27, 16, 2); // Dirección I2C, 16 columnas y 2 filas // Configuración del servomotor Servo servo; const int SERVO_PIN = 11; // Clave de acceso const String clave_correcta = "1234"; String clave_ingresada = ""; void setup() { lcd.init(); lcd.backlight(); lcd.print("Ingrese clave:"); servo.attach(SERVO_PIN); servo.write(90); // Posición inicial del servomotor } void loop() { char tecla = keypad.getKey(); if (tecla) { if (tecla == '#') { if (clave_ingresada == clave_correcta) { lcd.clear(); lcd.print("Acceso permitido"); moveServo(); // Mueve el servomotor delay(3000); // Tiempo para que el motor se mantenga servo.write(90); // Regresa al estado inicial } else { lcd.clear(); lcd.print("Clave incorrecta"); delay(2000); lcd.clear(); lcd.print("Ingrese clave:"); } clave_ingresada = ""; // Reinicia la clave ingresada } else if (tecla == '*') { clave_ingresada = ""; // Limpia la clave ingresada lcd.clear(); lcd.print("Ingrese clave:"); } else { clave_ingresada += tecla; // Agrega la tecla presionada lcd.setCursor(0, 1); // Segunda línea del LCD lcd.print(clave_ingresada); } } } void moveServo(){ for(int i = 90; i >= 0 ; i--){ servo.write(i); delay(10); } } |
Diseños

Videos
Conclusión
Este proyecto es ideal para explorar la interacción entre el teclado matricial y el LCD, permitiendo una experiencia educativa y entretenida. ¡Espero que te diviertas desarrollándolo! 😊