AI Journey/혼자 공부하는 임베디드
[아두이노] 푸시버튼을 적용한 S.O.S 신호 점멸 구현
보눔비스타
2025. 6. 23. 22:15
어제 우리 프로젝트 팀의 첫 오프라인 미팅이 있었다. 플젝 진행 방향에 대한 논의가 끝나고 잠시 남아서 리더님에게 아두이노 푸시버튼 연결을 좀 도와달라고 했다. 지난 글에서 아두이노 내장 LED로 S.O.S 신호 깜빡이기 실습을 했는데, 이 때 사실 원래 목표는 루프로 계속 돌리지 않고, 버튼을 한 번 눌렀다 떼면 S.O.S 신호가 한 차례 점멸하도록 하는 것이었다.
그런데 브래드보드에 푸시버튼과 점퍼와이어를 연결하는 방법을 제대로 몰라서 결국 이렇게 저렇게 시도하다가 포기했었는데, 어제 드디어 프로젝트 미팅에 가서 성공시켰다. (내가 한 건 아니고 리더님이 해주셨지만... ㅎㅎ)
우선 가장 중요한 회로를 다시 복기해 보도록 한다. 지난 포스팅에서 소개했던 팅커캐드를 이용해서 회로를 깔끔하게 정리해 보았다.
사용한 코드는 다음과 같다.
const int buttonPin = 2; // 버튼 연결 핀
const int ledPin = 13; // 내장 LED 핀
int buttonState = 0;
void dot() {
digitalWrite(ledPin, HIGH);
delay(250);
digitalWrite(ledPin, LOW);
delay(250);
}
void dash() {
digitalWrite(ledPin, HIGH);
delay(750);
digitalWrite(ledPin, LOW);
delay(250);
}
void sos() {
// S: ...
dot(); dot(); dot();
delay(200);
// O: ---
dash(); dash(); dash();
delay(200);
// S: ...
dot(); dot(); dot();
}
void setup() {
pinMode(buttonPin, INPUT_PULLUP); // 내부 풀업 저항 사용
pinMode(ledPin, OUTPUT); // LED 핀을 출력으로 설정
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == LOW) {
// 버튼이 눌렸으면 LED ON
sos();
} else {
// 버튼이 안 눌렸으면 LED OFF
digitalWrite(ledPin, LOW);
}
}
아래는 실제 동작하는 것을 촬영한 동영상이다.