🔐 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:

  1. Ao ligar o sistema, o usuário deve digitar uma senha usando os botões.

  2. Se a senha estiver correta, o menu é liberado.

  3. 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á! 🔢🔐💡




Comentários

Postagens mais visitadas deste blog

contador 9999 com pic 16f628

CNC fotos cordenadas x y z dicas

codigo assembler braço mecanico para 5 motores