Sistema de control de servomotor con autenticación mediante teclado matricial y visualización en pantalla LCD con interfaz I2C

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! 😊

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Carrito de compra