// Define the pins connected to the relays
const int relayPins[] = {2, 3, 4, 5, 6, 7, 8, 9}; // Pins for 8-channel relays

void setup() {
  // Initialize serial communication at 9600 baud
  Serial.begin(9600);

  // Set relay pins as outputs
  for (int i = 0; i < 8; i++) {
    pinMode(relayPins[i], OUTPUT);
    digitalWrite(relayPins[i], 0); // Turn off all relays initially
  }
}

void loop() {
  if (Serial.available() > 0) { // Check if data is available to read
    char receivedChar = Serial.read(); // Read the incoming byte

    // Use switch-case to control relays based on the received character
    switch (receivedChar) {
      case '1':
        controlRelay(0, 1); // Turn on relay 1
        break;
      case '2':
        controlRelay(0, 0); // Turn off relay 1
        break;
      case '3':
        controlRelay(1, 1); // Turn on relay 2
        break;
      case '4':
        controlRelay(1, 0); // Turn off relay 2
        break;
      case '5':
        controlRelay(2, 1); // Turn on relay 3
        break;
      case '6':
        controlRelay(2, 0); // Turn off relay 3
        break;
      case '7':
        controlRelay(3, 1); // Turn on relay 4
        break;
      case '8':
        controlRelay(3, 0); // Turn off relay 4
        break;
      case '9':
        controlRelay(4, 1); // Turn on relay 5
        break;
      case 'A':
        controlRelay(4, 0); // Turn off relay 5
        break;
      case 'B':
        controlRelay(5, 1); // Turn on relay 6
        break;
      case 'C':
        controlRelay(5, 0); // Turn off relay 6
        break;
      case 'D':
        controlRelay(6, 1); // Turn on relay 7
        break;
      case 'E':
        controlRelay(6, 0); // Turn off relay 7
        break;
      case 'F':
        controlRelay(7, 1); // Turn on relay 8
        break;
      case 'G':
        controlRelay(7, 0); // Turn off relay 8
        break;
      case 'H':
        for (int i = 0; i < 8; i++) {
          pinMode(relayPins[i], OUTPUT);
          digitalWrite(relayPins[i], 1); // Turn on all relays initially
        delay(100);
        }
        break;

      case 'I':
        for (int i = 0; i < 8; i++) {
          pinMode(relayPins[i], OUTPUT);
          digitalWrite(relayPins[i], 0); // Turn off all relays initially
         delay(100);
        }
         break;

      default:
        Serial.println(" ");
    }
  }
}

// Function to control a relay
void controlRelay(int relayIndex, int state) {
  if (relayIndex >= 0 && relayIndex < 8) {
    digitalWrite(relayPins[relayIndex], state);
    if (state == LOW) {
      Serial.print("Relay ");
      Serial.print(relayIndex + 1);
      Serial.println(" is turned ON.");
    } else {
      Serial.print("Relay ");
      Serial.print(relayIndex + 1);
      Serial.println(" is turned OFF.");
    }
  } else {
    Serial.println("Invalid relay index.");
  }
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
NOCOMNCVCCGNDINLED1PWRRelay Module
relay1:VCC
relay1:GND
relay1:IN
relay1:NC
relay1:COM
relay1:NO
NOCOMNCVCCGNDINLED1PWRRelay Module
relay2:VCC
relay2:GND
relay2:IN
relay2:NC
relay2:COM
relay2:NO
NOCOMNCVCCGNDINLED1PWRRelay Module
relay3:VCC
relay3:GND
relay3:IN
relay3:NC
relay3:COM
relay3:NO
NOCOMNCVCCGNDINLED1PWRRelay Module
relay4:VCC
relay4:GND
relay4:IN
relay4:NC
relay4:COM
relay4:NO
NOCOMNCVCCGNDINLED1PWRRelay Module
relay5:VCC
relay5:GND
relay5:IN
relay5:NC
relay5:COM
relay5:NO
NOCOMNCVCCGNDINLED1PWRRelay Module
relay6:VCC
relay6:GND
relay6:IN
relay6:NC
relay6:COM
relay6:NO
NOCOMNCVCCGNDINLED1PWRRelay Module
relay7:VCC
relay7:GND
relay7:IN
relay7:NC
relay7:COM
relay7:NO
NOCOMNCVCCGNDINLED1PWRRelay Module
relay8:VCC
relay8:GND
relay8:IN
relay8:NC
relay8:COM
relay8:NO