아두이노 나노 - 버튼 - 릴레이 | Arduino Nano - Button - Relay

이 튜토리얼은 아두이노 나노와 버튼을 사용하여 릴레이를 제어하는 방법을 안내합니다. 릴레이를 솔레노이드 잠금장치, 전구, LED 스트립, 모터 또는 액추에이터 등에 연결함으로써, 우리는 버튼을 사용하여 그것들을 제어할 수 있습니다. 우리는 두 가지 다른 응용 프로그램을 배울 것입니다:

애플리케이션 1 - 릴레이 상태가 버튼 상태와 동기화됩니다. 자세히 설명하자면:

응용 프로그램 2 - 버튼이 눌릴 때마다 릴레이 상태가 토글됩니다. 보다 구체적으로:

아두이노 나노가 버튼이 눌려짐을 감지했을 때(높은 상태에서 낮은 상태로 변경됨), 현재 꺼져 있다면 릴레이를 켜고, 현재 켜져 있다면 릴레이를 끕니다.

버튼을 놓아도 릴레이 상태에는 영향을 주지 않습니다.

애플리케이션 2에서 우리는 버튼을 제대로 작동하게 하기 위해 디바운스(Debounce) 처리를 해야 합니다. 버튼의 디바운싱을 사용하지 않았을 때와 사용했을 때 아두이노 코드를 사용하여 릴레이가 어떻게 동작하는지 비교함으로써 그것이 왜 중요한지 알게 될 것입니다.

준비물

1×Arduino Nano Amazon
1×USB A to Mini-B USB cable 쿠팡 | Amazon
1×Push Button Amazon
1×(Optional) Panel-mount Push Button Amazon
1×Relay Amazon
1×Breadboard 쿠팡 | Amazon
1×Jumper Wires Amazon
1×(Optional) Solenoid Lock Amazon
1×(Optional) 12V Power Adapter Amazon
1×(Optional) DC Power Jack 쿠팡 | Amazon
1×(Optional) 9V Power Adapter for Arduino Nano Amazon
1×(Recommended) Screw Terminal Adapter for Arduino Nano 쿠팡 | Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

릴레이와 버튼에 관하여

만약 여러분이 릴레이와 버튼(핀 배치, 작동 방법, 프로그래밍 포함)에 익숙하지 않다면, 다음과 같은 튜토리얼이 도움이 될 수 있습니다:

선연결

Arduino Nano Button relay wiring diagram

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

애플리케이션 1 - 릴레이 상태가 버튼 상태와 동기화됩니다

아두이노 나노 코드

/* * 이 Arduino Nano 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino Nano 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-nano/arduino-nano-button-relay */ const int BUTTON_PIN = 8; // 아두이노 나노 핀이 버튼의 핀에 연결됨 const int RELAY_PIN = 2; // 아두이노 나노 핀이 릴레이의 핀에 연결됨 void setup() { Serial.begin(9600); // 시리얼 모니터와 통신하기 위해 시리얼을 초기화합니다. pinMode(BUTTON_PIN, INPUT_PULLUP); // 아두이노 핀을 입력 풀업 모드로 설정 pinMode(RELAY_PIN, OUTPUT); // 아두이노 핀을 출력 모드로 설정 } void loop() { int button_state = digitalRead(BUTTON_PIN); // 새 상태 읽기 if (button_state == LOW) { Serial.println("버튼이 눌려짐"); digitalWrite(RELAY_PIN, HIGH); // 켜기 } else if (button_state == HIGH) { Serial.println("버튼이 눌려지지 않음"); digitalWrite(RELAY_PIN, LOW); // 끄기 } }

사용 방법

  • USB 케이블로 컴퓨터에 아두이노 나노를 연결하세요.
  • 아두이노 IDE를 실행하고, 올바른 보드와 포트를 선택하세요.
  • 코드를 복사하고 아두이노 IDE에서 열어보세요.
  • 아두이노 IDE에서 Upload 버튼을 클릭하여 코드를 컴파일하고 아두이노 나노로 업로드하세요.
Arduino IDE Upload Code
  • 버튼을 누르고 몇 초간 계속 누르세요.
  • 릴레이 상태의 변화를 확인하세요.

버튼 상태와 릴레이 상태가 동기화되어 있음을 확인하게 될 것입니다.

코드 설명

소스 코드의 주석에 포함된 줄별 설명을 확인하세요!

애플리케이션 2 - 버튼이 릴레이를 전환합니다

아두이노 나노 코드 - 디바운싱 없이 버튼으로 릴레이 전환

/* * 이 Arduino Nano 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino Nano 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-nano/arduino-nano-button-relay */ const int BUTTON_PIN = 8; // 버튼의 핀에 연결된 아두이노 나노 핀 const int RELAY_PIN = 2; // 릴레이의 핀에 연결된 아두이노 나노 핀 int relay_state = LOW; // 릴레이의 현재 상태 int prev_button_state; // 버튼의 이전 상태 int button_state; // 버튼의 현재 상태 void setup() { Serial.begin(9600); // 시리얼 모니터와 통신하기 위해 시리얼 초기화 pinMode(BUTTON_PIN, INPUT_PULLUP); // 아두이노 핀을 입력 풀업 모드로 설정 pinMode(RELAY_PIN, OUTPUT); // 아두이노 핀을 출력 모드로 설정 button_state = digitalRead(BUTTON_PIN); } void loop() { prev_button_state = button_state; // 마지막 상태 저장 button_state = digitalRead(BUTTON_PIN); // 새로운 상태 읽기 if(prev_button_state == HIGH && button_state == LOW) { Serial.println("The button is pressed"); // 릴레이 상태 토글 relay_state = !relay_state; // 토글된 상태에 따라 릴레이 제어 digitalWrite(RELAY_PIN, relay_state); } }

코드 설명

Arduino Nano 코드 위의 주석 줄에서 설명을 찾을 수 있습니다.

코드에서 relay_state = !relay_state 표현식은 다음 코드와 동일합니다:

if(relay_state == LOW) relay_state = HIGH; else relay_state = LOW;

사용 방법

  • 코드를 복사하여 아두이노 IDE에서 열어보세요.
  • 코드를 아두이노 나노에 업로드하세요.
  • 릴리스와 버튼을 여러 번 눌러보세요.
  • 릴레이 상태의 변화를 확인하세요.

버튼을 누를 때마다 릴레이가 켜지거나 꺼지는 것을 알아차릴 수 있지만, 항상 같지는 않을 수 있습니다. 때로는 버튼을 한 번 누르는 것만으로도 여러 번 빠르게 전환되거나 전혀 전환되지 않을 수도 있습니다(맨눈으로는 볼 수 없을 정도로 매우 빠르게 두 번 전환됩니다).

이 문제를 해결하려면, 버튼에 대해 디바운스를 해야 합니다.

아두이노 나노 코드 - 디바운싱으로 버튼 토글 릴레이

버튼 디바운싱은 초보자에게 도전적일 수 있습니다. 다행히도, ezButton 라이브러리가 쉽게 만들어 줍니다.

디바운싱이 왜 필요한가요? 자세한 정보는 아두이노 나노 - 버튼 디바운스 튜토리얼을 참조하세요.

/* * 이 Arduino Nano 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino Nano 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-nano/arduino-nano-button-relay */ #include <ezButton.h> const int BUTTON_PIN = 8; // 아두이노 나노 핀이 버튼의 핀에 연결됨 const int RELAY_PIN = 2; // 아두이노 나노 핀이 릴레이의 핀에 연결됨 ezButton button(BUTTON_PIN); // 핀 7에 대한 ezButton 객체를 생성한다. int relay_state = LOW; // 릴레이의 현재 상태 void setup() { Serial.begin(9600); // 시리얼 모니터와 통신하기 위해 시리얼을 초기화한다. pinMode(RELAY_PIN, OUTPUT); // 아두이노 핀을 출력 모드로 설정한다 button.setDebounceTime(50); // 디바운스 시간을 50 밀리초로 설정한다 } void loop() { button.loop(); // loop() 함수를 먼저 호출해야 한다 if(button.isPressed()) { Serial.println("The button is pressed"); // 릴레이의 상태를 토글한다 relay_state = !relay_state; // 토글된 상태에 따라 릴레이를 제어한다. digitalWrite(RELAY_PIN, relay_state); } }

사용 방법

  • EzButton 라이브러리를 설치하세요. 지침은 방법을 참조하세요.
  • 코드를 복사하고 Arduino IDE로 엽니다.
  • Arduino IDE에서 Upload 버튼을 클릭하여 코드를 Arduino Nano에 업로드하세요.
  • 버튼을 여러 번 누르고 놓으세요.
  • 릴레이의 상태 변경을 확인하세요.

버튼을 누를 때마다 릴레이가 한 번만 켜지거나 꺼짐을 알 수 있습니다.

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!