Hola que tal amigos soy nuevo en el mundo de Arduino y la verdad quede muy fascinado con muchas cosas que se puede lograr con esa pequeña plaquita, nada mas que no tengo nada de conocimientos sobre circuitos y mucho menos en programación de arduino.
Tengo un proyecto en proceso sobre una lampara para un acuario y tengo en mente poder regular la intensidad de los led por PWM para darle un efecto de Amanecer/Anochecer con ayuda de un Reloj en tiempo real. Son 6 Series de led cada serie o linea es de un color diferente y pretendo que cada color encienda a cierto horario y se apaguen a cierta hora.
Tengo un Arduino Uno y un Reloj DS3231.
Este es mi humilde código con el que comencé a trabajar aun no esta del todo terminado pero tengo esa duda si seria la mejor manera de hacer el efecto que quiero lograr o hay alguna otra manera que sea mas funcional.
#include "RTClib.h"
#include <Wire.h>
RTC_DS3231 RTC;
int i = 0;
int Bco65 = 3;
int Bco35 = 5;
int Azul = 6;
int Rojo = 9;
int Verde = 10;
int Rosa = 11;
void setup(){
RTC.begin();
Wire.begin();
RTC.adjust(DateTime(__DATE__, __TIME__)); //Se carga dos veces la segunda vez esta linea como comentarios
Serial.begin(9600);
delay(1000);
pinMode(Bco65, OUTPUT);
pinMode(Bco35, OUTPUT);
pinMode(Azul, OUTPUT);
pinMode(Rojo, OUTPUT);
pinMode(Verde, OUTPUT);
pinMode(Rosa, OUTPUT);
}
void loop(){
DateTime now = RTC.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
delay(500);
if(now.hour() ==7 && now.minute() ==50){
for(i = 0; i <= 55; i++){
analogWrite(Azul, i);
delay(50);
}
}
delay(500);
if(now.hour() ==8 && now.minute() ==20){
for(i = 55; i <= 235; i++){
analogWrite(Azul, i);
delay(45);
}
}
delay(500);
if(now.hour() ==9 && now.minute() ==30){
for(i = 0; i <= 95; i++){
analogWrite(Rojo, i);
analogWrite(Verde, i);
delay(30);
}
}
delay(500);
if(now.hour() ==10 && now.minute() ==45){
for(i = 0; i <= 95; i++){
analogWrite(Bco65, i);
delay(45);
}
}
else if(now.hour() ==10 && now.minute() ==50){
for(i = 235; i >= 115; i--){
analogWrite(Azul, i);
delay(45);
}
}
delay(500);
if(now.hour() ==11 && now.minute() ==30){
for(i = 0; i <= 125; i++){
analogWrite(Bco35, i);
delay(45);
}
}
}
Nota: Sobre la función "for" que lleva dentro de los corchetes en if(xxx) y de else if(xxx) lo que quisiera que la luz de los led vaya encendiendo de poco a poco a cierto punto y que no se enciendan de golpe.