Buscar
banner

Cofre de Arduino

Publicado em 1 de Fevereiro de 2026 às 13:18

Categoria:

Arduino

Materiais Necessários

  • 1x Arduino Uno R3
  • 1x Display LCD
  • 1xServo Motor
  • 1xRessistor 220Ω
  • 1xPotenciometo de 10KΩ
  • 1xProtoboard
  • 1x Teclado Numérico
  • Jumpers

Ferramentas Necessárias

  • Computador

Etapas

Conectando os pinos

  • Pino LCD Nome Conectar no Arduino
    1 VSS GND
    2 VDD 5V
    3 V0 Pino central do potenciômetro (10k)
    4 RS 12
    5 RW GND
    6 E 11
    7 D0 — (não liga)
    8 D1 — (não liga)
    9 D2 — (não liga)
    10 D3 — (não liga)
    11 D4 10
    12 D5 9
    13 D6 8
    14 D7 7
    15 A (LED+) 5V (ou 5V via resistor 220Ω)
    16 K (LED−) GND
  • 🔹 Servo
    Servo → pino 6

    🔹 LCD 16x2
    LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
    OBS: O pino VO

    🔹 Teclado 4x4
    Linhas → 5, 4, 3, 2
    Colunas → A3, A2, A1, A0

Coloque o código

  • #include <LiquidCrystal.h>
    #include <Keypad.h>
    #include <Servo.h>

    /* ===== SERVO ===== */
    #define SERVO_PIN 6
    #define SERVO_LOCK_POS 20
    #define SERVO_UNLOCK_POS 90

    Servo lockServo;

    /* ===== LCD ===== */
    LiquidCrystal lcd(12, 11, 10, 9, 8, 7);

    /* ===== KEYPAD ===== */
    const byte KEYPAD_ROWS = 4;
    const byte KEYPAD_COLS = 4;

    byte rowPins[KEYPAD_ROWS] = {5, 4, 3, 2};
    byte colPins[KEYPAD_COLS] = {A3, A2, A1, A0};

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

    Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins,
    KEYPAD_ROWS, KEYPAD_COLS);

    /* ===== VARIÁVEIS DO COFRE ===== */
    String secretCode = "1234"; // senha padrão
    bool locked = true;

    /* ===== FUNÇÕES DO SERVO ===== */
    void lockSafe() {
    lockServo.write(SERVO_LOCK_POS);
    locked = true;
    }

    void unlockSafe() {
    lockServo.write(SERVO_UNLOCK_POS);
    locked = false;
    }

    /* ===== INTERFACE ===== */
    void showStartupMessage() {
    lcd.clear();
    lcd.setCursor(4, 0);
    lcd.print("Welcome!");
    delay(1000);

    lcd.clear();
    lcd.setCursor(0, 1);
    lcd.print("Arduino Safe");
    delay(1000);
    }

    String inputCode() {
    lcd.setCursor(5, 1);
    lcd.print("[____]");
    lcd.setCursor(6, 1);

    String code = "";
    while (code.length() < 4) {
    char key = keypad.getKey();
    if (key >= '0' && key <= '9') {
    lcd.print('*');
    code += key;
    }
    }
    return code;
    }

    void waitBar(int d) {
    lcd.setCursor(2, 1);
    lcd.print("[..........]");
    lcd.setCursor(3, 1);
    for (int i = 0; i < 10; i++) {
    delay(d);
    lcd.print("=");
    }
    }

    /* ===== ALTERAR SENHA ===== */
    void changeCode() {
    lcd.clear();
    lcd.print("New code:");
    String newCode = inputCode();

    lcd.clear();
    lcd.print("Confirm:");
    String confirm = inputCode();

    if (newCode == confirm) {
    secretCode = newCode;
    lcd.clear();
    lcd.print("Code Saved!");
    } else {
    lcd.clear();
    lcd.print("Mismatch!");
    }
    delay(1500);
    }

    /* ===== LÓGICA ===== */
    void lockedLogic() {
    lcd.clear();
    lcd.print("Safe Locked");

    String entered = inputCode();
    waitBar(200);

    if (entered == secretCode) {
    lcd.clear();
    lcd.print("Unlocked!");
    unlockSafe();
    delay(1000);
    } else {
    lcd.clear();
    lcd.print("Access Denied");
    delay(2000);
    }
    }

    void unlockedLogic() {
    lcd.clear();
    lcd.print("#=Lock A=Code");

    char key = 0;
    while (key != '#' && key != 'A') {
    key = keypad.getKey();
    }

    if (key == 'A') {
    changeCode();
    }

    lcd.clear();
    lcd.print("Locking...");
    lockSafe();
    waitBar(100);
    }

    /* ===== SETUP & LOOP ===== */
    void setup() {
    lcd.begin(16, 2);
    lockServo.attach(SERVO_PIN);

    showStartupMessage();
    lockSafe(); // inicia travado
    }

    void loop() {
    if (locked) {
    lockedLogic();
    } else {
    unlockedLogic();
    }
    }

Conclusão

Ficará funcional

Comentários

0
Faça login para adicionar um comentário.
  1. Nenhum comentário ainda. Seja o primeiro a comentar!

Gostou do Projeto?