INTEGRANTES:
Vithor Mendes Servilha
Thomas Gonçalves Pimenta
André Pereira de Moura Filho
Leandro da Silva Pereira
Matheus de Matos Silva
Pedro de Souza Foschiani
Gustavo Soares Pardinho
Lucas Soares Pardinho
Nicolas Moreira
Gabriel Miranda
Francisco Alconchel Neto
CÓDIGO:
const int pinoRele = 7;
const int pinoFnBotao = 5;
const int MODO_NORMAL = 0;
const int MODO_PISCA = 1;
const int ESTADO_DESLIGADO = 0;
const int ESTADO_LIGADO = 1;
const int ESTADO_PISCANDO = 2;
int modoAtual = MODO_NORMAL;
int estadoLampada = ESTADO_DESLIGADO;
bool ultimoEstadoBotao = HIGH;
unsigned long tempoDebounceBotao = 0;
bool ultimoEstadoFnBotao = HIGH;
unsigned long tempoDebounceFn = 0;
unsigned long delayDebounce = 50;
unsigned long tempoUltimaPiscada = 0;
const long intervaloPiscada = 1000;
void setup() {
[Link](9600);
pinMode(pinoBotao, INPUT_PULLUP);
pinMode(pinoFnBotao, INPUT_PULLUP);
pinMode(pinoRele, OUTPUT);
digitalWrite(pinoRele, LOW);
[Link]("Sistema iniciado. Modo: NORMAL");
void loop() {
bool leituraFnBotao = digitalRead(pinoFnBotao);
if (leituraFnBotao != ultimoEstadoFnBotao) {
tempoDebounceFn = millis();
if ((millis() - tempoDebounceFn) > delayDebounce) {
if (leituraFnBotao == LOW) {
if (modoAtual == MODO_NORMAL) {
modoAtual = MODO_PISCA;
[Link]("Modo alterado para: PISCA");
} else {
modoAtual = MODO_NORMAL;
[Link]("Modo alterado para: NORMAL");
if (estadoLampada != ESTADO_DESLIGADO) {
if (modoAtual == MODO_NORMAL) {
estadoLampada = ESTADO_LIGADO;
} else {
estadoLampada = ESTADO_PISCANDO;
while (digitalRead(pinoFnBotao) == LOW);
ultimoEstadoFnBotao = leituraFnBotao;
bool leituraBotao = digitalRead(pinoBotao);
if (leituraBotao != ultimoEstadoBotao) {
tempoDebounceBotao = millis();
if ((millis() - tempoDebounceBotao) > delayDebounce) {
if (leituraBotao == LOW) {
if (estadoLampada == ESTADO_DESLIGADO) {
if (modoAtual == MODO_NORMAL) {
estadoLampada = ESTADO_LIGADO;
[Link]("Lampada LIGADA");
} else { // modoAtual == MODO_PISCA
estadoLampada = ESTADO_PISCANDO;
[Link]("Lampada PISCANDO");
} else {
estadoLampada = ESTADO_DESLIGADO;
[Link]("Lampada DESLIGADA");
while (digitalRead(pinoBotao) == LOW);
ultimoEstadoBotao = leituraBotao;
switch (estadoLampada) {
case ESTADO_LIGADO:
digitalWrite(pinoRele, HIGH);
break;
case ESTADO_DESLIGADO:
digitalWrite(pinoRele, LOW);
break;
case ESTADO_PISCANDO:
unsigned long tempoAtual = millis();
if (tempoAtual - tempoUltimaPiscada >= intervaloPiscada) {
tempoUltimaPiscada = tempoAtual;
digitalWrite(pinoRele, !digitalRead(pinoRele));
break;
FERRAMENTAS & COMPONENTES:
1x Arduino UNO R3
2x botões
1x Módulo Relé 2 Canais 5v (iremos usar somente 1)
1x Protoboard
3x Jumpers Macho - Fêmea (conexão com o relé)
~6x Jumpers Macho – Macho
1x Lâmpada
1x Chave de fenda
Fio
2 conectores WAGO (se precisar)
Cabo usb
1x Lâmpada
1x Bocal para lâmpada (ou soquete)
1x Tomada de Força
ESQUEMA DE LIGAÇÃO:
Parte 1: Circuito de Controle (Baixa Tensão - 5V)
1. Alimentação:
a. Conecte o pino 5V do Arduino na linha positiva (+) da
protoboard.
b. Conecte o pino GND do Arduino na linha negativa (-) da
protoboard.
2. Botão Principal (Liga/Desliga):
a. Conecte um terminal do botão ao pino digital 6 do Arduino.
b. Conecte o outro terminal do mesmo botão à linha negativa
(GND) da protoboard.
3. Botão de Modo (Função):
a. Conecte um terminal do segundo botão ao pino digital 5 do
Arduino.
b. Conecte o outro terminal do mesmo botão à linha negativa
(GND) da protoboard.
4. Módulo Relé:
a. Conecte o pino VCC do relé na linha positiva (5V) da
protoboard.
b. Conecte o pino GND do relé na linha negativa (GND) da
protoboard.
c. Conecte o pino IN2 do relé ao pino digital 7 do Arduino.
Parte 2: Circuito da Lâmpada (Alta Tensão - AC)
O relé possui três bornes para a alta tensão: COM (Comum), NA
(Normalmente Aberto) e NF (Normalmente Fechado). Usaremos o COM e
o NO.
1. Conectar diretamente um terminal do bocal da lâmpada ao borne
NO do relé
2. Pegue outro fio e conecte ao borne COM do relé
3. Conectar o outro terminal do bocal e ou fio que sai do terminal
COM na TOMADA
REQUISITOS DO PROJETO:
Lâmpada Inteligente com Arduino
Controlar o acionamento de uma lâmpada de corrente alternada
(110V/220V) com uma placa Arduino.
Implementar um botão principal com a função de ligar e desligar a
lâmpada.
Implementar um segundo botão para alternar entre os modos de
operação da lâmpada.
o Criar um "Modo Normal", onde a lâmpada, ao ser ligada,
permanece acesa de forma contínua.
o Criar um "Modo Pisca", onde a lâmpada, ao ser ligada,
acende e apaga em intervalos de 1 segundo.
Garantir que a troca de modo com a lâmpada já acesa altere seu
comportamento instantaneamente (de fixo para piscando e vice-
versa), sem desligá-la.
Utilizar um módulo relé, servindo como interruptor e garantindo o
isolamento elétrico seguro entre o circuito do Arduino (baixa tensão)
e o circuito da lâmpada (alta tensão).