// 아두이노 나노 보드 경우 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");
}
}
}
}