Monte um Abajur com temporizador e não deixe a luz acesa a noite toda

Neste projeto vamos construir um Abajur com temporizador e desta forma a luz não fica acesa a noite toda.

Materiais:

  • Arduino pró mini
  • Leds da cor de sua preferência
  • Resistores de 330
  • Módulo Rele
  • Fios/Jumpers
  • Fonte de alimentação
  • Módulo USB para comunicação
  • Abajur

Para Comprar
Arduino Pró Mini
https://shopee.com.br/arduino-Pro-Mini-Atmega-modelo-2-ref-010-ardu%C3%ADno-i.258729162.6653637657?position=8

Módulo Rele
https://shopee.com.br/M%C3%B3dulo-Rele-1-Canal-5v-Shield-Arduino-ESP32-Raspberry-i.324440633.9250429907

LED Fio de Fada
https://shopee.com.br/Fio-De-Fada-Led-Cord%C3%A3o-5-Metros-50-Leds-Branco-Quente-Pilha-USB-i.329646135.9889174523?position=9

Caixa Patola
https://shopee.com.br/Caixa-Plastica-Montagem-PB202-50-X-70-X-97-Patola-i.545727148.11754636140?position=14

Códigos usados no vídeo

/* *************************
 *  Projeto Bacana - 10/2021
 *  www.projetobacana.com.br
 *  Júlio Vansan Gonçalves  
 *  *************************/
const int saidaAbajur=12;
const int btUp=2;
const int btDown=3;
const int ledS1=10;
const int ledS2=9;
const int ledS3=8;

int contadorBotoes=0;
int estadoSaida=0;
unsigned long tempoBase=5000;
//horas*3600000; // 3600000 =  1h

unsigned long tempoMaximo= 0; 
unsigned long tempoAtual=0; 

unsigned long tempoInicioAbajur=0;


void setup() {
  Serial.begin(9600);
  pinMode(saidaAbajur,OUTPUT);
  pinMode(ledS1,OUTPUT);
  pinMode(ledS2,OUTPUT);
  pinMode(ledS3,OUTPUT);
  pinMode(btUp,INPUT_PULLUP);
  pinMode(btDown,INPUT_PULLUP);
  delay(1000);
  
  digitalWrite(ledS1,LOW);
  digitalWrite(ledS2,LOW);
  digitalWrite(ledS3,LOW);
  digitalWrite(saidaAbajur,LOW);
    
  
} // Setup

void loop() {
  
  //#########  Botão UP Pressionado
  if (digitalRead(btUp)==!HIGH){
    Serial.print(" Botao UP pressionado  ");
    contadorBotoes++;
    if (contadorBotoes>3){
      contadorBotoes=3;
    } // if Maximo 3
    tempoInicioAbajur=millis();
    tempoMaximo=contadorBotoes*tempoBase;
    Serial.println(contadorBotoes);
    monitorLed();
    while (digitalRead(btUp)==!HIGH){
      delay(50);
    } //while
  } //if UP
  
    //#########  Botão DOWN Pressionado
  if (digitalRead(btDown)==!HIGH){
    Serial.print(" Botao DOWN pressionado  ");
    contadorBotoes--;
    if (contadorBotoes<0){
      contadorBotoes=0;
    } // if Mínimo 0
    tempoMaximo=contadorBotoes*tempoBase;
    Serial.println(contadorBotoes);
    monitorLed();
    while (digitalRead(btDown)==!HIGH){
      delay(50);
    } //while
  } //if Down
  
  monitorLed();

  
//  (millis()-tempoInicioAbajur) > tempoMaximo))
  tempoAtual= millis()-tempoInicioAbajur;
  Serial.print("   Cont Botao= ");
  Serial.print(contadorBotoes);
  Serial.print("   Maximo= ");
  Serial.print(tempoMaximo);
  Serial.print("   Atual= ");
  Serial.print(tempoAtual);
  
  if (tempoAtual > tempoMaximo){
      contadorBotoes=0;
      tempoMaximo=0;
  } // if parada TEMPO
  if (contadorBotoes>=1){
    Serial.print("   LEDS Acessos= ");
    int controleTempo=((tempoMaximo - tempoAtual) / tempoBase )+1;
    Serial.print(controleTempo);
    contadorBotoes=controleTempo;
 
  } // if >1
  
  
  
    Serial.println();
  
 delay(50); 
} // loop


void monitorLed(){
  switch(contadorBotoes){
    case 0:
    	digitalWrite(ledS1,LOW);
    	digitalWrite(ledS2,LOW);
   		digitalWrite(ledS3,LOW);
    	digitalWrite(saidaAbajur,LOW);
    	break;
    case 1:
    	digitalWrite(ledS1,HIGH);
    	digitalWrite(ledS2,LOW);
   		digitalWrite(ledS3,LOW);
    	digitalWrite(saidaAbajur,HIGH);
    	break;
    case 2:
    	digitalWrite(ledS1,HIGH);
    	digitalWrite(ledS2,HIGH);
   		digitalWrite(ledS3,LOW);
    	digitalWrite(saidaAbajur,HIGH);
    	break;
    case 3:
    	digitalWrite(ledS1,HIGH);
    	digitalWrite(ledS2,HIGH);
   		digitalWrite(ledS3,HIGH);
    	digitalWrite(saidaAbajur,HIGH);
    	break;
    
  } // switch
  
} // Monitor LED

Vídeo:

#Projeto #arduino  #abajur #temporizado #DIY #maker #microcontrolador #façavocemesmo
— 
Curta, compartilhe e inscreva-se para ficar atualizado com os nossos conteúdos! 
Para saber mais sobre o Canal Projeto Bacana: 
E-mail: contato@projetobacana.com.br
Site: https://www.projetobacana.com.br/  
Facebook:  https://www.facebook.com/projetobacana.com.br
Instagram:  https://www.instagram.com/projetobacana.com.br/
Youtube:  https://www.youtube.com/channel/UC0e1bfaL0-gnAP2KQA5vxqQ