Solucionado Uso de mas de un pin para ejecutar un programa

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);  
}

En los dos primeros ejempos hablas de 4 pines En el 3er caso no hay mas que un pin al que le asignas un valor PWM mejor dicho de brillo.

Donde me perdi? No se entiende.

Hola, El primero es el origina 4 pines, el seg seria la forma de usarlo según yo, para su uso en el ejemplo tres y así reemplazar el analogWrite(9, PotLED); que es la salida para un led y cambiarlo por analogWrite(led, PotLED); entonces así tendría 4 salidas para cuatro led y usarían el mismo código. sigo con lo mismo del dimmer para el acuario, mas básico para ir agregando funciones de a poco

Asi?

for (int i=0;i<Pleds;i++)
   analogWrite(led[i], PotLED);

Hola
estuve viendo ejemplos de la función for y me párese que va agregando un elemento (primero pin3, luego pin4, pin5 y pin6 para mi caso),termina uno y sigue con otro como una secuencia o estoy muy perdido.
y lo que quiero es que los cuatro elementos (pin3, pin4, pin5, pin6) actuen al mismo tiempo para no hacer el programa 4 veces con los mismos datos y cambiando solo el pin.
O seria muy descabellado poner algo como analogWrite(3 4 5 6, PotLED);
tiene que a ver una forma pero como

Lo marcado **** prue1az4blan es lo agregado y da este error
exit status 1
expected unqualified-id before numeric constant

sin esas partes funcionan los dos canales ok y abilitando al final esto //analogWrite(9, PotLED);

#include <Wire.h>    
#include "RTClib.h"  
//#include <OneWire.h>  
RTC_DS1307 RTC; // Crea el objeto RTC 
#define PotLED  4 //creamos la variable leds de 4 elementos **** prue1az4blan
int led[PotLED] = {3,4,5,6,}; //creamos un vector para los pines a utilizar **** prue1az4blan

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)  
{  
 ///////////tiempos de progamacion//////////  
//conversion seria 60x11=660 la misma tabla para los demas parametros //

int PotAzul;  
 int InicioAmanecerAzul=660;      //11:00   
 int FinAmanecerAzul=720;         //12:00           
 int InicioAnochecerAzul=1260;    //21:00   
 int FinAnochecerAzul=1380;       //23:00 
// int FinLuzLuna=1380;             //23:00// 
 int MaxAzul=125; //Maximo que vamos a encender los LED sobre 255  
 
int PotLED;  
 int InicioAmanecerLED=720; //12:00   
 int FinAmanecerLED=780;  //13:00 //  
 int InicioAnochecerLED=1200; //20:00//  
 int FinAnochecerLED=1260;  //21:00          
 int MaxLED=125; //Maximo que vamos a encender los LED sobre 255  


     
//////////////////// Azul ////////////////////////
 //Luna 
//if (tiempo <= FinLuzLuna) PotAzul=(FinAnochecerAzul-tiempo); 
 //Noche  
 if (tiempo >FinAnochecerAzul || tiempo < InicioAmanecerAzul )   
 {  
   PotAzul=0;  
   Serial.println(); 
   Serial.print("NOCHE AZUL: "); 
   Serial.println(PotAzul); 
   Serial.println();  
   
  }  
  
  //Amanecer  
 if (tiempo >= InicioAmanecerAzul && tiempo <= FinAmanecerAzul)
 {  
  PotAzul=map(tiempo,InicioAmanecerAzul,FinAmanecerAzul,0,MaxAzul);  
   Serial.println(); 
   Serial.print("AMANECIENDO AZUL: "); 
   Serial.println(PotAzul);  
   Serial.println(); 
  }  

 //Dia  
 if (tiempo > FinAmanecerAzul && tiempo < InicioAnochecerAzul) 
 {  
   PotAzul=MaxAzul;  
   Serial.println(); 
   Serial.print("DIA AZUL: "); 
   Serial.println(PotAzul);  
   Serial.println(); 
  }  

 //Anochecer  
 if (tiempo >= InicioAnochecerAzul && tiempo <= FinAnochecerAzul)
 {  
   PotAzul=map(tiempo,InicioAnochecerAzul,FinAnochecerAzul,MaxAzul,0);  
   Serial.println(); 
   Serial.print("ANOCHECIENDO AZUL: "); 
   Serial.println(PotAzul);  
   Serial.println(); 
  }  
 /////////////////// PotLED ///////////////////////
  //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(PotAzul < 0)   
  {  
   PotAzul=0;  
  }  
 if(PotAzul >MaxAzul)   
  {  
   PotAzul=MaxAzul;  
  }  

 if(PotLED < 0)   
  {  
   PotLED=0;  
  }  

 if(PotLED >MaxLED)   
  {  
   PotLED=MaxLED;  
  }
   
  {
     for (int i=0;i<PotLED;i++)        // **** prue1az4blan

     analogWrite(led[i],PotLED); // El pines del 3 al 7 seran de salida    **** prue1az4blan
    }   


 //analogWrite(9, PotLED);  
 analogWrite(10, PotAzul);  

 delay(1000);  
}

Hola, La solución es la que te ha dado surbyte. A la vez no se puede, al menos con programación básica, no hay ninguna instrucción que mueva pines al mismo tiempo. Pero la diferencia será muy pequeña.

Si la hay pero si tiene problemas con esto para que introducir otro comando?

Pudes manejar el port directo pero involucra un manejto distinto al actual.

Ahora la diferencia es tal como rodripelto lo ha afirmado, inperceptible para el usuario. Si para algun aparato especial.

Hola esta montado en prueba, pero note que al meterme por el monitor serial se apaga las luces y luego vuelve, eso se debe al uso del delay y para que no ocurra tendría que usar millis

Si en eso 2 delay que tienes de 1000 se espera el programa, te toca usar millis Aqui un ejemplo

Ve a Documentación y luego el primero hilo dice Indice de temas Tutoriales, dentro encontrar una buena guia de como se usa millis().