// 아두이노 나노 보드 경우 A6 , A7은 아날로그 전용 핀입니다. 
// 코드상에  ezButton20 , 21은 작동 안하는 코드 및 핀입니다.
// 디지털 2번 ,3번으로 옮길수있지만 채널 7개도 충분한듯 싶어
// 수정 안하겠습니다. 

// 토글 방식은 초반에 LED를 다 끄고 시작합니다. 
// 기타 시리얼 출력등도 사용에 맞게 수정하시면 됩니다. 
// 삼항식이 들어가 있는데 어려운 코드가 아니므로 수정안했습니다.

#include <ezButton.h>

const int numChannels = 9;
ezButton buttons[numChannels] = {ezButton(13), ezButton(14), ezButton(15), ezButton(16),
                                 ezButton(17), ezButton(18), ezButton(19), ezButton(20),
                                 ezButton(21)};
const int relayPins[numChannels] = {12, 11, 10, 9, 8, 7, 6, 5, 4};
bool relayStatus[numChannels] = {false};  // 초기 상태: 모든 릴레이는 Normal Open

void setup()
{
  Serial.begin(9600);

  for (int i = 0; i < numChannels; i++)
  {
    buttons[i].setDebounceTime(50);
    pinMode(relayPins[i], OUTPUT);
    digitalWrite(relayPins[i], LOW);  // 초기 상태에 따라 릴레이 상태 설정
  }
}

void loop()
{
  for (int i = 0; i < numChannels; i++)
  {
    buttons[i].loop();

    if (buttons[i].isPressed())
    {
      relayStatus[i] = !relayStatus[i];  // 릴레이 상태 토글

      digitalWrite(relayPins[i], relayStatus[i] ? HIGH : LOW);  // 릴레이 상태에 따라 출력 설정

      Serial.print("Button ");
      Serial.print(i);
      Serial.println(" is pressed!");

      if (relayStatus[i])
      {
        Serial.print("Relay ");
        Serial.print(i);
        Serial.println(": Normal Close => Normal Open");
      }
      else
      {
        Serial.print("Relay ");
        Serial.print(i);
        Serial.println(": Normal Open => Normal Close");
      }
    }
  }
}
NOCOMNCVCCGNDINLED1PWRRelay Module
NOCOMNCVCCGNDINLED1PWRRelay Module
NOCOMNCVCCGNDINLED1PWRRelay Module
NOCOMNCVCCGNDINLED1PWRRelay Module
NOCOMNCVCCGNDINLED1PWRRelay Module
NOCOMNCVCCGNDINLED1PWRRelay Module
NOCOMNCVCCGNDINLED1PWRRelay Module
NOCOMNCVCCGNDINLED1PWRRelay Module
NOCOMNCVCCGNDINLED1PWRRelay Module