N

💡 Aplicação 8 – Painel Interativo com Sensores e Controle no LCD 16x2

🎯 Objetivo:

Criar uma interface de usuário navegável usando botões e display LCD 16x2, capaz de:

  • Exibir dados de sensores

  • Permitir navegação entre telas

  • Ativar ou desativar dispositivos conectados com base em comandos manuais


📦 Materiais necessários:

  • 1 Arduino Uno

  • 1 LCD 16x2 com I2C

  • 3 botões (navegar, selecionar, voltar)

  • 1 sensor LM35 (temperatura)

  • 1 LDR + resistor de 10k (luminosidade)

  • 1 LED (como saída controlada)

  • Jumpers e protoboard


🔍 Funcionalidades:

  • Menu inicial com opções:

    • Ver Temperatura

    • Ver Luminosidade

    • Ligar/Desligar LED

  • Cada tela apresenta dados ou executa ações

  • Uso de botões físicos para navegação (igual aplicações anteriores)


📟 Esquema das telas:


Menu: > Temperatura Luminosidade [Botão Navega] para baixo [Botão Select] entra na opção [Botão Voltar] retorna ao menu



✅ Código completo:


#include <Adafruit_LiquidCrystal.h> Adafruit_LiquidCrystal lcd_1(0); const int btnDown = 2; const int btnSelect = 3; const int btnBack = 4; const int pinoLM35 = A0; const int pinoLDR = A1; const int pinoLED = 7; int menuIndex = 0; int telaAtual = 0; // 0 = Menu, 1 = Temperatura, 2 = Luminosidade, 3 = Controle LED bool ledLigado = false; String opcoesMenu[] = {"Temperatura", "Luminosidade", "Controle LED"}; void setup() { lcd_1.begin(16, 2); pinMode(btnDown, INPUT); pinMode(btnSelect, INPUT); pinMode(btnBack, INPUT); pinMode(pinoLED, OUTPUT); lcd_1.clear(); mostrarMenu(); } void loop() { if (digitalRead(btnDown) == HIGH) { delay(300); if (telaAtual == 0) { menuIndex++; if (menuIndex > 2) menuIndex = 0; mostrarMenu(); } } if (digitalRead(btnSelect) == HIGH) { delay(300); telaAtual = menuIndex + 1; } if (digitalRead(btnBack) == HIGH) { delay(300); telaAtual = 0; mostrarMenu(); } switch (telaAtual) { case 0: // Menu principal (já mostrado) break; case 1: mostrarTemperatura(); break; case 2: mostrarLuminosidade(); break; case 3: controleLED(); break; } delay(200); } void mostrarMenu() { lcd_1.clear(); lcd_1.setCursor(0, 0); lcd_1.print("Menu:"); lcd_1.setCursor(0, 1); lcd_1.print("> "); lcd_1.print(opcoesMenu[menuIndex]); } void mostrarTemperatura() { float temp = analogRead(pinoLM35) * 5.0 / 1023.0 * 100.0; lcd_1.clear(); lcd_1.setCursor(0, 0); lcd_1.print("Temperatura:"); lcd_1.setCursor(0, 1); lcd_1.print(temp); lcd_1.print(" C"); } void mostrarLuminosidade() { int luz = analogRead(pinoLDR); lcd_1.clear(); lcd_1.setCursor(0, 0); lcd_1.print("Luminosidade:"); lcd_1.setCursor(0, 1); lcd_1.print("Nivel: "); lcd_1.print(luz); } void controleLED() { lcd_1.clear(); lcd_1.setCursor(0, 0); lcd_1.print("Controle do LED"); lcd_1.setCursor(0, 1); ledLigado = !ledLigado; digitalWrite(pinoLED, ledLigado ? HIGH : LOW); lcd_1.print(ledLigado ? "LED Ligado" : "LED Desligado"); delay(1000); telaAtual = 0; // Volta ao menu após ação mostrarMenu(); }


veja o lede ligado

lede desligado





🧠 O que aprendemos aqui:

  • Criar interface multi-tela com navegação baseada em botões

  • Integrar leitura de sensores em tempo real

  • Controlar saídas digitais com comandos do menu


🔁 Expansões futuras:

  • Substituir o botão "Select" por encoder rotativo

  • Adicionar um submenu “Configurações”

  • Usar sensores digitais como DHT11 ou BMP280

  • Exibir gráficos de histórico usando caracteres personalizados


🔮 Spoiler do próximo projeto:

Você acha que acabou? Ainda não! No próximo projeto, vamos combinar todas as aplicações anteriores em um sistema modular completo, incluindo menus, sensores, controle de atuadores e até simulação de alarme com senha. Vai ser o embrião de um painel de automação residencial — com Arduino e criatividade como base! 🏠💡🔒


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