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