아두이노 우노 R4 - 버튼
버튼은 많은 Arduino UNO R4 프로젝트에 사용되는 간단하지만 중요한 구성 요소입니다. 초보자에게는 기계적 및 물리적 특성 때문에 복잡하게 보일 수 있습니다. 이 튜토리얼은 초보자가 이를 쉽게 이해할 수 있도록 설계되었습니다. 시작해봅시다!
※ NOTE THAT:
우리가 Arduino Uno R4에서 버튼을 사용하는 방법을 배우기 전에, 초보자들이 자주 겪는 두 가지 일반적인 오류를 강조하고자 합니다:
- 부동 입력 문제:
- 증상: 버튼이 Arduino UNO R4 입력 핀에 연결되었을 때, 입력 핀의 상태가 예측할 수 없으며 버튼 상태를 반영하지 않습니다.
- 원인: 버튼 핀이 풀다운 또는 풀업 저항기에 연결되어 있지 않습니다.
- 해결책: 입력 핀에 풀다운 또는 풀업 저항기를 연결하세요. 보다 자세한 내용은 이후의 튜토리얼에서 제공될 것입니다.
- 증상: Arduino UNO R4의 코드는 버튼의 상태를 읽고 상태 변경(HIGH에서 LOW로, 또는 LOW에서 HIGH로)을 감지하여 버튼 누름 이벤트를 식별하려고 합니다. 그러나 버튼이 한 번만 눌려도 Arduino Uno R4는 여러 번 눌림을 감지할 수 있습니다.
- 원인: 기계적 특성으로 인해 입력 핀의 상태가 한 번의 눌림으로 LOW와 HIGH 사이를 여러 번 빠르게 전환합니다.
- 해결책: 디바운스를 구현하십시오. 더 자세한 내용은 Arduino UNO R4 - 버튼 - 디바운스 튜토리얼에 있을 것입니다.
채터링은 버튼 누름 횟수를 정확히 세어야 하는 응용 프로그램에만 영향을 미칩니다. 다른 응용 프로그램에서는 문제가 되지 않을 수 있습니다.
Hardware Preparation
1 | × | Arduino UNO R4 WiFi | Amazon | |
1 | × | Arduino UNO R4 Minima (Alternatively) | Amazon | |
1 | × | USB Cable Type-C | 쿠팡 | Amazon | |
1 | × | Breadboard-mount Button with Cap | 쿠팡 | Amazon | |
1 | × | Breadboard-mount Button Kit | 쿠팡 | Amazon | |
1 | × | Panel-mount Button | Amazon | |
1 | × | Breadboard | 쿠팡 | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (Recommended) Screw Terminal Block Shield for Arduino UNO R4 | 쿠팡 | Amazon | |
1 | × | (Recommended) Breadboard Shield For Arduino UNO R4 | 쿠팡 | Amazon | |
1 | × | (Recommended) Enclosure For Arduino UNO R4 | Amazon | |
1 | × | (Recommended) Power Splitter For Arduino UNO R4 | Amazon |
버튼 정보
푸쉬버튼(또는 택타일 버튼, 일시적 스위치)은 누르고 있을 때 닫히고, 손을 떼면 열리는 스위치입니다. 푸쉬버튼은 여러 종류가 있으며, 주로 두 그룹으로 나눌 수 있습니다:
- PCB 장착용 푸시 버튼 (브레드보드에서 사용 가능)
- 패널 장착용 푸시 버튼
핀아웃
PCB 장착 버튼은 보통 네 개의 핀이 있습니다.
이 핀들은 내부에서 쌍으로 연결되어 있어서, 내부에서 연결되지 않은 네 개의 핀 중 두 개만 사용하면 됩니다.
버튼을 연결하는 방법은 네 가지가 있지만 실제로는 두 가지입니다. (이미지를 참조하세요.)
버튼에는 네 개의 핀이 있지만, 왜 두 개만 사용하나요? ⇒ 이는 PCB(보드)에서 안정적으로 고정되고 압력을 견딜 수 있도록 하기 위함입니다.
패널 장착 버튼은 일반적으로 두 개의 핀이 있습니다.
작동 원리
- 버튼이 눌리지 않으면 핀 A와 핀 B는 연결되지 않습니다.
- 버튼이 눌리면 핀 A와 핀 B가 연결됩니다.
아두이노 UNO R4 - 버튼
하나의 버튼 핀은 VCC 또는 GND에 연결되고, 다른 핀은 Arduino UNO R4의 핀에 연결됩니다.
우리는 입력 핀으로 설정된 Arduino UNO R4의 핀 상태를 확인하여 버튼이 눌렸는지 여부를 결정할 수 있습니다.
버튼 상태 및 누름 상태
버튼 상태와 누름 상태 간의 관계는 버튼을 Arduino UNO R4에 어떻게 연결하느냐와 Arduino UNO R4의 핀 설정에 따라 다릅니다.
Arduino UNO R4에서는 버튼을 사용하는 두 가지 방법이 있습니다:
- 하나의 버튼 핀을 VCC에 연결하고 다른 핀을 풀다운 저항과 함께 Arduino UNO R4 핀에 연결합니다.
- 버튼이 눌리면 Arduino UNO R4 핀 상태가 HIGH가 됩니다. 그렇지 않으면 Arduino UNO R4 핀 상태는 LOW가 됩니다.
- 반드시 외부 저항을 사용해야 합니다.
- 버튼이 눌리면 Arduino UNO R4 핀 상태는 LOW가 됩니다. 그렇지 않으면 Arduino UNO R4 핀 상태는 HIGH가 됩니다.
- 내부 또는 외부 저항 중 하나를 사용할 수 있습니다. 내부 저항은 Arduino UNO R4에 내장되어 있으며 Arduino 코드로 활성화할 수 있습니다.
※ NOTE THAT:
풀다운 또는 풀업 저항을 사용하지 않으면 버튼이 눌려지지 않았을 때 입력 핀이 "부유 상태"가 됩니다. 이는 핀의 상태가 예측할 수 없게 HIGH나 LOW로 변경되어 잘못된 판독값을 발생시킬 수 있음을 의미합니다.
- 최악의 실천: 외부 풀다운 또는 풀업 저항 없이 pinMode(BUTTON_PIN, INPUT)를 사용하여 Arduino UNO R4 핀을 입력으로 설정하기.
- 최선의 실천: pinMode(BUTTON_PIN, INPUT_PULLUP)를 사용하여 내부 풀업 저항과 함께 Arduino UNO R4 핀을 설정하기. 이는 외부 저항이 필요하지 않습니다.
초보자에게 쉽게 만들기 위해 이 튜토리얼은 가장 간단한 방법을 사용합니다: 외부 저항 없이 Arduino UNO R4 핀을 내부 풀업 입력으로 설정합니다. 초보자들은 풀업 또는 풀다운 저항을 연결하는 것에 대해 걱정할 필요가 없습니다. 제공된 Arduino 코드를 사용하기만 하면 됩니다.
Wiring Diagram
- 아두이노 UNO R4 및 PCB 장착 버튼을 위한 배선도
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
- 아두이노 UNO R4 및 패널 장착 버튼의 배선도
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
버튼 프로그래밍 방법
- PinMode() 함수를 사용하여 Arduino UNO R4의 핀 7을 내부 풀업 입력으로 설정합니다.
- Arduino UNO R4 핀의 상태를 확인하기 위해 digitalRead() 함수를 사용합니다.
※ NOTE THAT:
두 가지 일반적인 사용 사례가 있습니다:
- 첫 번째: 입력이 HIGH일 때 행동을 수행하고, 입력이 LOW일 때 반대 행동을 수행합니다.
- 두 번째: 입력이 LOW에서 HIGH로 (또는 HIGH에서 LOW로) 변할 때 행동을 수행합니다.
목적에 따라 이 옵션 중 하나를 선택합니다. 예를 들어, 버튼을 사용하여 LED를 제어할 때:
- 버튼이 눌렸을 때 LED가 켜지고 눌리지 않았을 때 꺼져야 한다면 첫 번째 시나리오를 선택해야 합니다.
- 버튼을 누를 때마다 LED가 켜지거나 꺼지게 하려면 두 번째 시나리오를 선택해야 합니다.
Arduino UNO R4 코드 - 버튼 상태 읽기
Detailed Instructions
이 지침을 단계별로 따르세요:
- Arduino UNO R4 WiFi/Minima를 처음 사용하는 경우, Arduino IDE에서 Arduino UNO R4 WiFi/Minima 환경 설정하기에 대한 튜토리얼을 참조하십시오.
- 제공된 다이어그램에 따라 버튼을 Arduino UNO R4에 연결하십시오.
- USB 케이블을 사용하여 Arduino Uno R4 보드를 컴퓨터에 연결하십시오.
- 컴퓨터에서 Arduino IDE를 실행하십시오.
- 적절한 Arduino Uno R4 보드(예: Arduino Uno R4 WiFi) 및 COM 포트를 선택하십시오.
- 위의 코드를 복사하여 Arduino IDE에서 엽니다.
- Arduino IDE에서 Upload 버튼을 클릭하여 코드를 Arduino UNO R4에 전송하십시오.
- 시리얼 모니터를 엽니다.
- 버튼을 여러 번 눌렀다 놓습니다.
- 시리얼 모니터에서 결과를 확인합니다.
1은 켜짐을 의미하고, 0은 꺼짐을 의미합니다.
코드 설명
설명은 위의 아두이노 코드의 주석 섹션에 있습니다.
Arduino UNO R4 코드 - 버튼의 누름 및 놓음 이벤트 감지
버튼이 눌리고 해제될 때를 인식하도록 코드를 변경합시다.
Detailed Instructions
- 위의 코드를 복사하여 Arduino IDE에 붙여넣으세요.
- Arduino IDE에서 Upload 버튼을 클릭하여 코드를 Arduino UNO R4로 전송하세요.
- 시리얼 모니터를 엽니다.
- 버튼을 눌렀다 놓으세요.
- 시리얼 모니터에서 결과를 확인하세요.
※ NOTE THAT:
- 버튼을 한 번만 누르고 놓아도 시리얼 모니터는 여러 번의 누름 및 놓음 이벤트를 표시할 수 있습니다. 이 일반적인 현상은 "채터링 현상"으로 알려져 있습니다. 더 자세한 내용은 Arduino UNO R4 - 버튼 디바운스 튜토리얼에서 확인할 수 있습니다.
- 여러 버튼을 사용하는 초보자를 위해 프로세스를 단순화하기 위해 ezButton이라는 라이브러리를 개발했습니다. ezButton 라이브러리에 대해 알아보세요.
Video Tutorial
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.