secuenciador para balizas (ambulancia, policia, etc.)

hola, estoy haciendo una baliza para ambulancia y funciona bien, lo que quiero hacer es encender 2 o mas salidas a la vez, dejo el sketch a ver si alguien puede darme una mano.

int timer1= 50;
int ledPins1 = {2, 3, 4, 5, 6, 7};

int pinCount1 = 6;

void setup() {
int thisPin;

for (int thisPin = 0; thisPin < pinCount1; thisPin++) {
pinMode(ledPins1[thisPin], OUTPUT);
}
}

void loop() {

for (int thisPin = 0; thisPin < pinCount1; thisPin++) {
digitalWrite(ledPins1[thisPin], HIGH);
delay(timer1);
digitalWrite(ledPins1[thisPin], LOW);}

for (int thisPin = pinCount1 - 1; thisPin >= 0; thisPin–) {
digitalWrite(ledPins1[thisPin], HIGH);
delay(timer1);
digitalWrite(ledPins1[thisPin], LOW);}}

es solo un ejemplo, el real es mucho mas largo y con 12 salidas, desde ya muchas gracias

Tal vez tendrías que explicar un poco mejor lo que quieres hacer porque con lo que yo entiendo es tan sencillo como que seguido a la instrucción que enciendes poner otra que encienda el led anterior o el que tú quieras.

puede ser, ya que no se de programacion, solo algo de electronica, el tema es asi, tengo una serie de secuencias de 12 canales que encienden de a una a la vez (puedo dar la sensacion de que encienden algunas juntas con timer, pero lo que necesitaria es que, por ejemplo, enciendan las 6 de un lado juntas o las 6 del otro juntas, espero explicarme mejor, desde ya muchas gracias

este es un ejemplo mas amplio que de todas maneras le faltan un par de cosas que quiero que las luces hagan, pero a lo mejor sirve mas para ayudarme:

int timer1 = 30;
int timer2 = 20;

int ledPins1 = {7, 8, 7, 8, 7, 8, 7, 8,
6, 9, 6, 9, 6, 9, 6, 9,
5, 10, 5, 10, 5, 10, 5, 10,
4, 11, 4, 11, 4, 11, 4, 11,
3, 12, 3, 12, 3, 12, 3, 12,
2, 13, 2, 13, 2, 13, 2, 13};

int ledPins2 ={6, 7, 6, 7, 6, 7, 6, 7,
8, 9, 8, 9, 8, 9, 8, 9,
6, 7, 6, 7, 6, 7, 6, 7,
8, 9, 8, 9, 8, 9, 8, 9,
4, 5, 4, 5, 4, 5, 4, 5,
10, 11, 10, 11, 10, 11, 10, 11,
4, 5, 4, 5, 4, 5, 4, 5,
10, 11, 10, 11, 10, 11, 10, 11,
2, 3, 2, 3, 2, 3, 2, 3,
12, 13, 12, 13, 12, 13, 12, 13,
2, 3, 2, 3, 2, 3, 2, 3,
12, 13, 12, 13, 12, 13, 12, 13};

int ledPins3 ={2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, };

int ledPins4 ={7, 8, 6, 9, 5, 10, 4, 11, 3, 12, 2, 13,
2, 12, 3, 11, 4, 10, 5, 9, 6, 8, 7,
8, 6, 9, 5, 10, 4, 11, 3, 12, 2, 13,
2, 12, 3, 11, 4, 10, 5, 9, 6,};

int ledPins5 = {2, 3, 4, 2, 3, 4,
8, 9, 10, 8, 9, 10,
13, 12, 11, 13, 12, 11,
5, 6, 7, 5, 6, 7};

int pinCount1 = 48;
int pinCount2 = 96;
int pinCount3 = 23;
int pinCount4 = 43;
int pinCount5 = 24;

void setup() {
int thisPin;

for (int thisPin = 0; thisPin < pinCount1; thisPin++) {
pinMode(ledPins1[thisPin], OUTPUT);
}
}

void loop() {

/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////

for (int thisPin = 0; thisPin < pinCount1; thisPin++) {
digitalWrite(ledPins1[thisPin], HIGH);
delay(timer1);
digitalWrite(ledPins1[thisPin], LOW);}

for (int thisPin = pinCount1 - 1; thisPin >= 0; thisPin–) {
digitalWrite(ledPins1[thisPin], HIGH);
delay(timer1);
digitalWrite(ledPins1[thisPin], LOW);}

////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////

for (int thisPin = 0; thisPin < pinCount2; thisPin++) {
digitalWrite(ledPins2[thisPin], HIGH);
delay(timer2);
digitalWrite(ledPins2[thisPin], LOW);}

for (int thisPin = pinCount2 - 1; thisPin >= 0; thisPin–) {
digitalWrite(ledPins2[thisPin], HIGH);
delay(timer2);
digitalWrite(ledPins2[thisPin], LOW);}

for (int thisPin = 0; thisPin < pinCount2; thisPin++) {
digitalWrite(ledPins2[thisPin], HIGH);
delay(timer2);
digitalWrite(ledPins2[thisPin], LOW);}

for (int thisPin = pinCount2 - 1; thisPin >= 0; thisPin–) {
digitalWrite(ledPins2[thisPin], HIGH);
delay(timer2);
digitalWrite(ledPins2[thisPin], LOW);}

///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////

for (int thisPin = 0; thisPin < pinCount3; thisPin++) {
digitalWrite(ledPins3[thisPin], HIGH);
delay(timer2);
digitalWrite(ledPins3[thisPin], LOW);}

for (int thisPin = pinCount3 - 1; thisPin >= 0; thisPin–) {
digitalWrite(ledPins3[thisPin], HIGH);
delay(timer2);
digitalWrite(ledPins3[thisPin], LOW);}

for (int thisPin = 0; thisPin < pinCount3; thisPin++) {
digitalWrite(ledPins3[thisPin], HIGH);
delay(timer2);
digitalWrite(ledPins3[thisPin], LOW);}

for (int thisPin = pinCount3 - 1; thisPin >= 0; thisPin–) {
digitalWrite(ledPins3[thisPin], HIGH);
delay(timer2);
digitalWrite(ledPins3[thisPin], LOW);}

for (int thisPin = 0; thisPin < pinCount3; thisPin++) {
digitalWrite(ledPins3[thisPin], HIGH);
delay(timer2);
digitalWrite(ledPins3[thisPin], LOW);}

for (int thisPin = pinCount3 - 1; thisPin >= 0; thisPin–) {
digitalWrite(ledPins3[thisPin], HIGH);
delay(timer2);
digitalWrite(ledPins3[thisPin], LOW);}

//////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////

for (int thisPin = 0; thisPin < pinCount1; thisPin++) {
digitalWrite(ledPins4[thisPin], HIGH);
delay(timer2);
digitalWrite(ledPins4[thisPin], LOW);}

for (int thisPin = pinCount1 - 1; thisPin >= 0; thisPin–) {
digitalWrite(ledPins4[thisPin], HIGH);
delay(timer2);
digitalWrite(ledPins4[thisPin], LOW);}

//////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////

for (int thisPin = 0; thisPin < pinCount5; thisPin++) {
digitalWrite(ledPins5[thisPin], HIGH);
delay(timer1);
digitalWrite(ledPins5[thisPin], LOW);}

for (int thisPin = pinCount5 - 1; thisPin >= 0; thisPin–) {
digitalWrite(ledPins5[thisPin], HIGH);
delay(timer1);
digitalWrite(ledPins5[thisPin], LOW);}

}

Por lo que yo entiendo creo que tu código no está nada bien estructurado. Por ejemplo pones

int ledPins1[] = {7, 8, 7, 8, 7, 8, 7, 8, 
                 6, 9, 6, 9, 6, 9, 6, 9, 
                 5, 10, 5, 10, 5, 10, 5, 10, 
                 4, 11, 4, 11, 4, 11, 4, 11, 
                 3, 12, 3, 12, 3, 12, 3, 12, 
                 2, 13, 2, 13, 2, 13, 2, 13};

y después

  for (int thisPin = 0; thisPin < pinCount1; thisPin++)  {
    pinMode(ledPins1[thisPin], OUTPUT);      
  }

con lo que estás declarando repetidamente como OUTPUT a un montón de salidas. Cada pin sólo hace falta que lo declares una vez.

Por último haces

for (int thisPin = 0; thisPin < pinCount1; thisPin++) { 
    digitalWrite(ledPins1[thisPin], HIGH);   
    delay(timer1);                  
    digitalWrite(ledPins1[thisPin], LOW);}
    
for (int thisPin = pinCount1 - 1; thisPin >= 0; thisPin--) { 
    digitalWrite(ledPins1[thisPin], HIGH);
    delay(timer1);
    digitalWrite(ledPins1[thisPin], LOW);}

Si quieres tener más de un LED encendido a la vez tendrás que hacerte otra secuencia en la que añadas más digitalWrite(Pin, HIGH) antes de poner el digitalWrite(Pin, LOW).

gracias por la rapida repuesta, creo que lo de la estructura es para que me haga la secuencia que yo deseo, pero seguramente tenes razon ya que no se casi nada de programacion, (como veras jajaja) podrias ponerme un ejemplo de lo que me decis como para darme cuenta? aunque sea con dos salidas para no hacerte trabajar tanto, gracias.

Si no tienes pensado que Arduino haga nada más que estas secuencias yo haría:

Primero declarar bien los pines. Según veo sería:

const int ledPins [] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};

y en el setup

for (int thisPin = 0; thisPin < 12; thisPin++)  {
    pinMode(ledPins [thisPin], OUTPUT);      
  }

Y por último estableces la secuencia que quieras establecida “a mano”.

// Secuencia 1

    digitalWrite(ledPins[0], HIGH);   
    delay(timer1);
    digitalWrite(ledPins[1], HIGH);
    digitalWrite(ledPins[2], HIGH);
    delay(timer1);
    digitalWrite(ledPins[0], LOW);
    delay(timer1);
    digitalWrite(ledPins[1], LOW);
    digitalWrite(ledPins[3], HIGH);
// y sigues así como quieras hacer la secuencia, 
// encendiendo y apagando los LED que quieras, 
// en el orden que quieras y con delay o sin delay

millon de gracias, anduvo genial

Me alegro, ¡a seguir aprendiendo!