La idea es que cuatro pines se ejecuten a la vez con un programa
Podría usarse algo así
#define maxleds 4 //creamos la variable maxleds de 4 elementos
int led[maxleds] = {3,4,5,6,}; //creamos un vector para los pines a utilizar
void setup ()
{
for (int i=0;i<maxleds;i++)
pinMode(led[i],OUTPUT); // El pines del 3 al 7 seran de salida
}
si usara el ejemplo de arriba seria algo así
#define Pleds 4 //creamos la variable leds de 4 elementos
int led[Pleds] = {3,4,5,6,}; //creamos un vector para los pines a utilizar
void setup ()
{
for (int i=0;i<Pleds;i++)
pinMode(led[i],OUTPUT); // El pines del 3 al 7 seran de salida
}
//////////////////////////////
y el analogWrite(9, PotLED); lo cambiaría analogWrite(led, PotLED);
o estoy perdido con la idea
este ejemplo funciona básico pero realiza lo que quiero y se podría ir implementando mas funciones
#include <Wire.h>
#include "RTClib.h"
//#include <OneWire.h>
RTC_DS1307 RTC; // Crea el objeto RTC
void setup ()
{
Serial.begin(9600); // Establece la velocidad de datos del puerto serie
Wire.begin(); // Establece la velocidad de datos del bus I2C
RTC.begin();// Establece la velocidad de datos del RTC
//RTC.adjust(DateTime(__DATE__, __TIME__)); Solo lo habilitamos la primera vez para poner en hora el reloj
}
void loop () {
int minute;
int hour;
int tiempo;
DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC
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();
Serial.print("Dia de la semana: ");
Serial.println(now.dayOfTheWeek(), DEC);
tiempo=(now.hour()*60)+now.minute(); // Para que sea un numero entero lo medimos en minutos
if (tiempo < 60)
{
tiempo=tiempo+1440; // para cuando sean las 12 de la noche (00 horas)
}
Serial.println();
Serial.print("Tiempo: ");
Serial.println(tiempo);
delay(1000); // La información se actualiza cada 1 seg.
Luces (tiempo);
}
void Luces(int tiempo)
{
//conversion seria 60xHrs=660 la misma tabla para los demas parametros //
int PotLED;
int InicioAmanecerLED=1080; // 18:00 Hrs
int FinAmanecerLED=1140; // 19:00 Hrs
int InicioAnochecerLED=1200; // 20:00 Hrs
int FinAnochecerLED=1260; // 21:00 Hrs
int MaxLED=125; //Maximo que vamos a encender los LED sobre 255
//Noche
if (tiempo >FinAnochecerLED || tiempo < InicioAmanecerLED )
{
PotLED=0;
Serial.println();
Serial.print("NOCHE: ");
Serial.println(PotLED);
Serial.println();
}
//Amanecer
if (tiempo >= InicioAmanecerLED && tiempo <= FinAmanecerLED)
{
PotLED=map(tiempo,InicioAmanecerLED,FinAmanecerLED,0,MaxLED);
Serial.println();
Serial.print("AMANECIENDO: ");
Serial.println(PotLED);
Serial.println();
}
//Dia
if (tiempo > FinAmanecerLED && tiempo < InicioAnochecerLED)
{
PotLED=MaxLED;
Serial.println();
Serial.print("DIA: ");
Serial.println(PotLED);
Serial.println();
}
//Anochecer
if (tiempo >= InicioAnochecerLED && tiempo <= FinAnochecerLED)
{
PotLED=map(tiempo,InicioAnochecerLED,FinAnochecerLED,MaxLED,0);
Serial.println();
Serial.print("ANOCHECIENDO: ");
Serial.println(PotLED);
Serial.println();
}
//Control
if(PotLED < 0)
{
PotLED=0;
}
if(PotLED >MaxLED)
{
PotLED=MaxLED;
}
analogWrite(9, PotLED);
delay(1000);
}