Is dat mogelijk?

Ik heb een relay balk van 8. nu kan ik ze wel om en om aanzetten maar niet tegelijkertijd. Het project is voor een spookhuis. Als het karretje langskomt moet er wat gebeuren, er zijn 4 karretjes dus soms gebeuren er twee dingen tegelijkertijd. Kan dat??

#define RELAY_ON 0
#define RELAY_OFF 1

#define Relay_1 2
#define Relay_2 3
#define Relay_3 4
#define Relay_4 5

const int switch_1 = 11;
const int switch_2 = 10;
const int switch_3 = 9;
const int switch_4 = 8;

void setup()
{

digitalWrite(Relay_1, RELAY_OFF);
digitalWrite(Relay_2, RELAY_OFF);
digitalWrite(Relay_3, RELAY_OFF);
digitalWrite(Relay_4, RELAY_OFF);

pinMode(Relay_1, OUTPUT);
pinMode(Relay_2, OUTPUT);
pinMode(Relay_3, OUTPUT);
pinMode(Relay_4, OUTPUT);
pinMode(switch_1, INPUT);
pinMode(switch_2, INPUT);
pinMode(switch_3, INPUT);
pinMode(switch_4, INPUT);

}

void loop() {

int switchState = digitalRead (switch_1, switch_2, switch_3, switch_4);

if(switchState == LOW){
digitalWrite(Relay_1, RELAY_OFF);
digitalWrite(Relay_2, RELAY_OFF);
digitalWrite(Relay_3, RELAY_OFF);
digitalWrite(Relay_4, RELAY_OFF);

} else {
digitalWrite(Relay_1, RELAY_ON);// set the Relay ON
delay(2000); // wait for a second
digitalWrite(Relay_2, RELAY_ON);// set the Relay ON
delay(2000); // wait for a second
digitalWrite(Relay_3, RELAY_ON);// set the Relay ON
delay(2000); // wait for a second
digitalWrite(Relay_4, RELAY_ON);// set the Relay ON
delay(2000); // wait for a second

}
}

met een arduino kan je nooit meerdere dingen echt gelijk doen, wel binnen een fractie van een seconde.

Die delay(2000) kan je eker niet gebruiken in uw geval, want dit stopt de arduino volledig voor 2 seconden.
gebruik in de plaats millis(). (moet je maar eens opzoeken hoe juist)

starttijd=millis() --> stoptijd=millis()+duurtijd

verder twijfel ik er sterk aan dat je met 1 digitalread 4 schakelaars kan uitlezen.:

int switchState = digitalRead (switch_1, switch_2, switch_3, switch_4);

groeten
Nico

vadeveni:
verder twijfel ik er sterk aan dat je met 1 digitalread 4 schakelaars kan uitlezen.:

int switchState = digitalRead (switch_1, switch_2, switch_3, switch_4);

Daarover hoef je niet te twijfelen hoor......

#define RELAY_ON 0
#define RELAY_OFF 1

#define Relay_1  2  
#define Relay_2  3
#define Relay_3  4
#define Relay_4  5

const int switch_1 = 11;
const int switch_2 = 10;
const int switch_3 = 9;
const int switch_4 = 8;

void setup() 
{

  
 
  pinMode(Relay_1, OUTPUT);   
  pinMode(Relay_2, OUTPUT);  
  pinMode(Relay_3, OUTPUT);  
  pinMode(Relay_4, OUTPUT);
  pinMode(switch_1, INPUT);
  pinMode(switch_2, INPUT);
  pinMode(switch_3, INPUT);
  pinMode(switch_4, INPUT);    
  
  digitalWrite(Relay_1, RELAY_OFF);
  digitalWrite(Relay_2, RELAY_OFF);
  digitalWrite(Relay_3, RELAY_OFF);
  digitalWrite(Relay_4, RELAY_OFF); 

}


void loop() { 

  int switchStatepos1 = digitalRead (switch_1);
  int switchStatepos2 = digitalRead (switch_2);
  int switchStatepos3 = digitalRead (switch_3);
  int switchStatepos4 = digitalRead (switch_4);
  
  
 if(switchState1 == HIGH){ 
  digitalWrite(Relay_1, RELAY_ON);}
else {digitalWrite(Relay_1,RELAY_OFF);}
// de andere zelfde
  digitalWrite(Relay_2, RELAY_OFF);
  digitalWrite(Relay_3, RELAY_OFF);
  digitalWrite(Relay_4, RELAY_OFF);

  }  
}

dit is een begin, en nee je kunt geen 4 ingangen in een keer vangen.
je kunt wel IF combineren dus if (1 && 2 ){dan iets doen}
als dat werkt dan kun je tijden gaan doen met een timer (met millis().

Bedankt voor de uitleg ik ga het eens proberen.

en kom gerust met nog meer vragen hoor.

Sorry voor mijn erg late reactie.
Kan ik ze nu ook tegelijk laten werken met een delay

Hoi.

Het antwoord heb je al gekregen; nee.
Maar dan gaat het er wel om wat jouw perceptie van tegelijk is.
Want je kunt wel dusdanig snel de relais na elkaar aanspreken, dat het 4e relais al word bediend voor het 1e het contact al gemaakt heeft.
Je weet natuurlijk dat een relais tijd nodig heeft, en die tijd verstrijkt tussen het aansturen, en het werkelijk tot stand komen van de gewenste verbinding.

En verder is het antwoord ook nee.
Delay moet je voor dit soort zaken gewoon niet gebruiken.
Zie mijn handtekening hier onder, en het onderwerp dat vastgepind is in dit Nederlandstalige gedeelte.

sorry, had deze niet gezien.