02_5 버튼 입력받기
Reporting Date: November. 12, 2024
아두이노의 디지털 입력 기능을 활용하여
버튼의 값을 입력 받는 것에 대해 다루고자 한다.
목차
01 버튼 (Button)
사용자가 특정 동작을 수행하도록 입력을 제공하기 위해 사용하는 장치.
버튼은 전자기기, 기계, 소프트웨어 등 다양한 분야에서 사용된다.
1. 물리적 버튼
손으로 누르는 물리적인 장치.
스위치 역할을 하며, 특정 동작(예: 전원 켜기/끄기, 모드 변경)을 수행한다.
전원 버튼, 키보드 키, 엘리베이터 버튼이 해당된다.
2. 소프트웨어 버튼
UI(사용자 인터페이스) 상에서 클릭 가능한 요소.
특정 명령을 실행하거나 이벤트를 트리거 역할을 하며,
웹페이지의 "확인" 버튼, 앱 내의 "설정" 버튼이 해당된다.
02 전자공학에서의 버튼
스위치(Switch)의 한 종류로 두 가지 방식으로 동작한다.
① 순간 동작 (Momentary Action)
버튼을 누를 때만 회로가 닫히고 신호가 전달되며,
버튼에서 손을 떼면 회로가 열린다.
② 토글 동작 (Toggle Action)
한 번 누르면 켜지고, 다시 누르면 꺼진다.
팅커캐드(Tinkercad) 사이트로 들어간다.
Tinkercad - From mind to design in minutes
Tinkercad is a free, easy-to-use app for 3D design, electronics, and coding.
www.tinkercad.com
첫 번째 실습
두 개의 버튼을 읽고 그 상태를 시리얼 모니터에 출력하기.
#define BUTTON_1 4
#define BUTTON_2 7
void setup() {
Serial.begin(9600);
pinMode(BUTTON_1, INPUT);
pinMode(BUTTON_2, INPUT);
}
void loop() {
int bnt_1_value = digitalRead(BUTTON_1);
int bnt_2_value = digitalRead(BUTTON_2);
Serial.print(bnt_1_value);
Serial.print(",");
Serial.println(bnt_2_value);
delay(100);
}
두 번째 실습
두 개의 버튼을 각각 눌렀다 떼는 동작을 감지하여
순차적으로 카운트를 증가시키며 버튼 클릭 메시지를 직렬 모니터에 출력한다.
#define BUTTON_1 4
#define BUTTON_2 7
int prevBtn1State = LOW; // BUTTON_1의 이전 상태
int prevBtn2State = LOW; // BUTTON_2의 이전 상태
int count = 1;
void setup() {
Serial.begin(9600);
pinMode(BUTTON_1, INPUT);
pinMode(BUTTON_2, INPUT);
}
void loop() {
// BUTTON_1과 BUTTON_2의 현재 상태 읽기
int currBtn1State = digitalRead(BUTTON_1);
int currBtn2State = digitalRead(BUTTON_2);
// BUTTON_1: 눌렸다가 떼진 경우 (즉, HIGH -> LOW로 상태 변화)
if (prevBtn1State == HIGH && currBtn1State == LOW) {
Serial.print(count);
Serial.print(": ");
Serial.println("Button 1 click");
count++;
delay(50); // 디바운싱을 위한 짧은 대기 시간
}
// BUTTON_2: 눌렸다가 떼진 경우 (즉, HIGH -> LOW로 상태 변화)
if (prevBtn2State == HIGH && currBtn2State == LOW) {
Serial.print(count);
Serial.print(": ");
Serial.println("Button 2 click");
count++;
delay(50); // 디바운싱을 위한 짧은 대기 시간
}
// 버튼 상태를 업데이트
prevBtn1State = currBtn1State;
prevBtn2State = currBtn2State;
}
참고: 한 권으로 끝내는 아두이노와 파이썬으로 52개 작품 만들기 (p.80)
Basic Elements — Schemdraw 0.19 documentation