/* SKETCH: PRESÉPIO ANIMADO 2023 - MCU2 NANO
* VERSÃO: 1.0
* AUTOR: FRANCISCO TELLES JR
* DATA: 01/12/2022
*
* DESCRIÇÃO:
* Programa recebe os dados de dia e hora no MCU1 UNO e faz a animação dos leds,
* simulando situações de dia e noite. Os leds serão conectados às saídas PWM do MCU, simulando chamas.
*
*
*/
#include <Wire.h>
//DEFINIÇÃO DOS PINOS UTILIZADOS
#define ledDia 3 //simula o dia
#define ledNoite 5 //simula a noite
#define ledFg1 6 //Padaria dentro
#define ledFg2 9 //Padaria fora e fogueira
#define ledFg3 10 //Padaria Forno e gruta interno
#define ledFg4 11 //Pastor interno e externo
#define inDia 2 //barramento dia MCU1
#define inNoite 4 //barramento noite MCU1
#define inNatal 7 //barramento natal MCU1
//DEFINIÇÃO DAS VARIÁVEIS
bool ehDia;
bool ehNoite;
bool ehNatal;
bool jaDia;
bool jaNoite;
int vlr = 0;
int bt1status = 0;
int bt2staus = 0;
int bt2status = 0;
int periodo;
//CONFIGURAÇÃO ENTRADAS E SAÍDAS
void setup(){
pinMode (ledDia,OUTPUT);
pinMode (ledNoite,OUTPUT);
pinMode (ledFg1,OUTPUT);
pinMode (ledFg2,OUTPUT);
pinMode (ledFg3,OUTPUT);
pinMode (ledFg4,OUTPUT);
pinMode (inDia,INPUT_PULLUP);
pinMode (inNoite,INPUT_PULLUP);
pinMode (inNatal,INPUT_PULLUP);
Serial.begin(9600);
//REINICIA AS SAÍDAS NO RESET DO MCU
for (vlr=254; vlr>=0; vlr--){
analogWrite(ledDia, vlr);
analogWrite(ledNoite, vlr);
analogWrite(ledFg1, vlr);
analogWrite(ledFg2, vlr);
analogWrite(ledFg3, vlr);
analogWrite(ledFg4, vlr);
delay(10);
//Serial.println(vlr);
ehDia = false;
ehNoite = false;
ehNatal =false;
periodo = 0;
}
}
void loop() {
int bt1 = (digitalRead(inDia));
if (bt1 != bt1status){
bt1status=bt1;
if (bt1==0){
int i = 0;
int ilD = constrain (i, 0, 200);
int j=200;
int jlN =constrain (j,0,200);
while(ehDia==false){
analogWrite(ledDia, ilD++);
analogWrite(ledNoite, j--);
delay(50);
if (j < 1){
analogWrite(ledNoite, 0);
ehDia = true;
ehNoite = false;
Serial.println(j);
Serial.println ("Amanheceu");
}
}
}
if(bt1==1){}
}
int bt2 = (digitalRead(inNoite));
if (bt2 != bt2status){
bt2status=bt2;
if (bt2==0){
int l = 200;
int llD = constrain (l, 0, 200);
int k=0;
int klN =constrain (k,0,200);
while(ehNoite==false){
analogWrite(ledNoite, klN++);
analogWrite(ledDia, l--);
delay(50);
if (l < 1){
analogWrite(ledDia, 0);
ehNoite = true;
ehDia = false;
Serial.println(l);
Serial.println ("Anoiteceu");
}
}
}
if(bt2==1){}
}
if (ehDia==true){
analogWrite(ledFg1, random(254));
analogWrite(ledFg2, 0);
analogWrite(ledFg3, random(254));
analogWrite(ledFg4, 0);
delay(random(150));
}
if (ehNoite==true){
analogWrite(ledFg1, 0);
analogWrite(ledFg2, random(254));
analogWrite(ledFg3, random(254));
analogWrite(ledFg4, random(254));
delay(random(150));
}
}