A power sequencer is useful for audio systems where you can power up each equipment one at a time in sequence. This will prevent pop sound on the speaker during powering up or down. Basically the power sequence is from input to output when powering up and output to input when powering down.\

About the circuit
The circuit uses an arduino nano for the control and relay module

Code is very simple, I just created it real quick.
// power sequencer
// by:tataylino.com
// Configurations
#define sequence_delay 10
const int led_speed = 100;
// constants won't change. They're used here to set pin numbers:
const int buttonPin = 9; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin
const int ledPin2 = 8;
const int relay1 = 2; // LED -2
const int relay2 = 3; // LIGHTS - 3
const int relay3 = 7; // inst - 7
const int relay4 = 5; // mixer - 5
const int relay5 = 6; //
const int relay6 = 4; // Speaker - 4
bool power1 = false;
bool power2 = false;
bool power3 = false;
bool power4 = false;
bool powerall = false;
bool led_dim = false;
int button_ctr = 0;
int led_pwm = 0;
int led_ctr = 0;
int delay_ctr = 0;
int i = 0;
// variables will change:
int buttonState = 0; // variable for reading the pushbutton status
void setup() {
digitalWrite(relay1, HIGH);
digitalWrite(relay2, HIGH);
digitalWrite(relay3, HIGH);
digitalWrite(relay4, HIGH);
digitalWrite(relay5, HIGH);
digitalWrite(relay6, HIGH);
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
pinMode(relay5, OUTPUT);
pinMode(relay6, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
//blinkled_delay(10);
//power_on_sequence();
//power_off_sequence();
blinkled_delay(10);
}
void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
//buttonState = LOW; // debug
// check if the pushbutton is pressed.
if (buttonState == LOW) {
button_ctr++;
digitalWrite(ledPin, HIGH);
digitalWrite(ledPin2, HIGH);
if(button_ctr > 100) {
button_ctr = 0;
delay_ctr++;
if(delay_ctr > 250){
delay_ctr = 0;
if(powerall){
power_off_sequence();
powerall = false;
} else {
power_on_sequence();
powerall = true;
}
}
}
} else {
button_ctr = 0; // reset counter
delay_ctr = 0;
led_pwm_control();
if(led_dim){
led_ctr++;
if(led_ctr > led_speed){
led_ctr = 0;
led_pwm--;
if(led_pwm <= 10){
led_dim = false;
refresh_io(); // this may not be needed. just want to be sure :)
}
}
} else {
led_ctr++;
if(led_ctr > led_speed){
led_ctr = 0;
led_pwm++;
if(led_pwm >= 100){
led_dim = true;
}
}
}
}
_delay_us(100);
//delay(1);
}
void led_pwm_control(){
static int led_pwm_ctr = 0;
led_pwm_ctr++;
if(led_pwm >= led_pwm_ctr ){
digitalWrite(ledPin, HIGH);
digitalWrite(ledPin2, HIGH);
} else {
digitalWrite(ledPin, LOW);
digitalWrite(ledPin2, LOW);
}
if(led_pwm_ctr >= 100){
led_pwm_ctr = 0;
}
}
void refresh_io(){
if(powerall){
digitalWrite(relay1, LOW);
digitalWrite(relay2, LOW);
digitalWrite(relay3, LOW);
digitalWrite(relay4, LOW);
digitalWrite(relay5, LOW);
digitalWrite(relay6, LOW);
} else {
digitalWrite(relay1, HIGH);
digitalWrite(relay2, HIGH);
digitalWrite(relay3, HIGH);
digitalWrite(relay4, HIGH);
digitalWrite(relay5, HIGH);
digitalWrite(relay6, HIGH);
}
}
void power_on_sequence() {
blinkled_delay(3);
digitalWrite(relay1, LOW);
blinkled_delay(sequence_delay);
digitalWrite(relay2, LOW);
blinkled_delay(sequence_delay);
digitalWrite(relay3, LOW);
blinkled_delay(sequence_delay);
digitalWrite(relay4, LOW);
blinkled_delay(sequence_delay);
digitalWrite(relay5, LOW);
blinkled_delay(sequence_delay);
digitalWrite(relay6, LOW);
blinkled_delay(3);
//powerall = true;
}
void power_off_sequence() {
blinkled_delay(3);
digitalWrite(relay6, HIGH);
blinkled_delay(sequence_delay);
digitalWrite(relay5, HIGH);
blinkled_delay(sequence_delay);
digitalWrite(relay4, HIGH);
blinkled_delay(sequence_delay);
digitalWrite(relay3, HIGH);
blinkled_delay(sequence_delay);
digitalWrite(relay2, HIGH);
blinkled_delay(sequence_delay);
digitalWrite(relay1, HIGH);
blinkled_delay(3);
//powerall = false;
}
void blinkled_delay(int blink_num){
//int i = 0;
for(i=0; i <= blink_num; i++){
digitalWrite(ledPin, HIGH);
digitalWrite(ledPin2, HIGH);
delay(100);
digitalWrite(ledPin, LOW);
digitalWrite(ledPin2, LOW);
delay(100);
}
i = 0;
}