- Gerar link
- X
- Outros aplicativos
🔐 Aplicação 9 – Alarme com Senha no LCD 16x2
Hoje, entra em cena a Aplicação 9, onde uniremos todos os conhecimentos anteriores em uma aplicação com senha de acesso, menu de funções e alarme ativável — tudo controlado diretamente pelo display LCD e botões físicos.
🎯 Objetivo:
Criar um sistema simples de alarme com:
-
Tela de inicialização com senha
-
Menu interativo protegido
-
Opção para ativar ou desativar alarme
-
Saída digital (LED ou buzzer) que simula o alarme
📦 Materiais necessários:
-
Arduino Uno
-
LCD 16x2 com I2C
-
3 botões (UP, SELECT, BACK)
-
1 LED ou buzzer (simular alarme)
-
Protoboard e cabos jumper
🔍 Funcionalidades:
-
Ao ligar o sistema, o usuário deve digitar uma senha usando os botões.
-
Se a senha estiver correta, o menu é liberado.
-
O menu permite:
-
Ativar o alarme (liga o LED ou buzzer)
-
Desativar o alarme
-
Ver status do sistema
-
🔐 Senha utilizada:
Senha padrão: 123
O usuário aperta:
-
Botão UP → incrementa o dígito
-
Botão SELECT → confirma o dígito
-
Botão BACK → reinicia a senha
✅ Código completo para Arduino:
#include <Adafruit_LiquidCrystal.h>
Adafruit_LiquidCrystal lcd_1(0);
// Pinos dos botões
const int btnUp = 2;
const int btnSelect = 3;
const int btnBack = 4;
// Alarme
const int pinoAlarme = 7;
bool alarmeAtivo = false;
// Senha
const int senhaCorreta[] = {1, 2, 3};
int senhaDigitada[3] = {0, 0, 0};
int indiceSenha = 0;
bool acessoLiberado = false;
void setup() {
lcd_1.begin(16, 2);
pinMode(btnUp, INPUT);
pinMode(btnSelect, INPUT);
pinMode(btnBack, INPUT);
pinMode(pinoAlarme, OUTPUT);
digitalWrite(pinoAlarme, LOW);
lcd_1.clear();
lcd_1.setCursor(0, 0);
lcd_1.print("Digite a Senha:");
atualizarTelaSenha();
}
void loop() {
if (!acessoLiberado) {
lerSenha();
} else {
menuPrincipal();
}
delay(100);
}
// =====================
// Leitura da senha
// =====================
void lerSenha() {
if (digitalRead(btnUp) == HIGH) {
senhaDigitada[indiceSenha]++;
if (senhaDigitada[indiceSenha] > 9) senhaDigitada[indiceSenha] = 0;
atualizarTelaSenha();
delay(300);
}
if (digitalRead(btnSelect) == HIGH) {
indiceSenha++;
if (indiceSenha >= 3) {
verificarSenha();
} else {
atualizarTelaSenha();
}
delay(300);
}
if (digitalRead(btnBack) == HIGH) {
indiceSenha = 0;
for (int i = 0; i < 3; i++) senhaDigitada[i] = 0;
atualizarTelaSenha();
delay(300);
}
}
void atualizarTelaSenha() {
lcd_1.setCursor(0, 1);
for (int i = 0; i < 3; i++) {
if (i < indiceSenha)
lcd_1.print("*");
else
lcd_1.print(senhaDigitada[i]);
lcd_1.print(" ");
}
}
void verificarSenha() {
bool correta = true;
for (int i = 0; i < 3; i++) {
if (senhaDigitada[i] != senhaCorreta[i]) {
correta = false;
break;
}
}
lcd_1.clear();
if (correta) {
acessoLiberado = true;
lcd_1.print("Acesso Liberado!");
} else {
lcd_1.print("Senha Incorreta!");
delay(1500);
indiceSenha = 0;
for (int i = 0; i < 3; i++) senhaDigitada[i] = 0;
lcd_1.setCursor(0, 0);
lcd_1.print("Digite a Senha:");
}
delay(1500);
lcd_1.clear();
}
// =====================
// Menu principal
// =====================
int menuIndex = 0;
String opcoes[] = {"Ativar Alarme", "Desativar Alarme", "Status"};
void menuPrincipal() {
lcd_1.setCursor(0, 0);
lcd_1.print("> ");
lcd_1.print(opcoes[menuIndex]);
if (digitalRead(btnUp) == HIGH) {
menuIndex++;
if (menuIndex > 2) menuIndex = 0;
delay(300);
lcd_1.clear();
}
if (digitalRead(btnSelect) == HIGH) {
executarOpcao(menuIndex);
delay(300);
lcd_1.clear();
}
}
void executarOpcao(int opcao) {
switch (opcao) {
case 0:
alarmeAtivo = true;
digitalWrite(pinoAlarme, HIGH);
lcd_1.print("Alarme Ativado!");
break;
case 1:
alarmeAtivo = false;
digitalWrite(pinoAlarme, LOW);
lcd_1.print("Alarme Desligado!");
break;
case 2:
lcd_1.print("Status:");
lcd_1.setCursor(0, 1);
lcd_1.print(alarmeAtivo ? "Ligado" : "Desligado");
break;
}
}
🧠 O que aprendemos aqui:
-
Como criar uma senha no Arduino com botões simples
-
Como proteger o menu de acesso não autorizado
-
Como simular um sistema de alarme com ativação manual
-
Como usar estados de navegação e controle lógico com o LCD
🚀 Spoiler do próximo conteúdo:
Você está pronto para o próximo nível? Em breve, vamos substituir os botões por um teclado matricial (Keypad 4x4) e transformar o LCD em um terminal de entrada interativa completo, ideal para cofres digitais, fechaduras, interfaces industriais e sistemas de autenticação. Fique atento — o Eletrocondutor vai te levar até lá! 🔢🔐💡
- Gerar link
- X
- Outros aplicativos
Comentários
Postar um comentário
Faça seu comentário referente a este assunto