본문 바로가기

Embedded System/Arduino Board

[Arduino] 아두이노 택트 스위치로 LED제어 (9)

반응형

 


 

안녕하세요.

이번 포스팅에서는 택트 스위치에 대해 알아보고 택트 스위치를 통해 스위치를 켜도 끄는 방식을 알아보겠습니다.

개요~


택트 스위치(Tactile switch)는 일반적으로 전자 프로젝트에서 많이 사용되는 소형의 푸시 버튼 스위치입니다. 주로 사용자가 스위치를 누르면 회로가 연결되고, 손을 떼면 회로가 끊어지는 형태로 작동합니다. 아두이노 프로젝트에서 LED를 켜고 끄는 데 자주 사용됩니다. 택트 스위치의 구조와 동작 원리, 그리고 아두이노와의 연결 방법에 대해 자세히 설명드리겠습니다.

 

※1.  택트 스위치의 구조와 동작 원리

 

  • 구조:
    • : 택트 스위치는 일반적으로 4개의 핀이 있습니다. 이 중 두 핀은 내부적으로 연결되어 있으며, 다른 두 핀도 마찬가지로 연결되어 있습니다.
    • 내부 메커니즘: 스위치를 누르면 내부의 접점이 연결되어 전류가 흐르게 됩니다. 스위치를 놓으면 접점이 다시 분리되어 전류 흐름이 중단됩니다.
  • 동작 원리:
    • 누를 때: 스위치를 누르면 회로가 닫히고 전기가 흐르게 되어 LED와 같은 장치가 활성화됩니다.
    • 놓을 때: 스위치를 놓으면 회로가 열리고 전기 흐름이 멈추어 장치가 비활성화됩니다.

2핀 스위치의 경우는 상관이 없겠지만 위와 같은 4핀(4개의 다리)를 가진 스위치라고한다면, 대각선(1&4 또는 2&3)을 In/Out으로 사용하거나  해당 사진의 기준 세로열(1&3 또는 2&4)끼리 In/Out을 사용해야 합니다. 만약 가로열(1&2 또는 3&4)을 사용한다면 항상 신호가(전류)흐르는 상태가 되기에 스위치 작용을 못합니다.

 

또한 스위치를 사용하기 위해서는 풀 업 / 풀 다운의 기능을 사용해야 합니다.(필수) 이에 대해서는 아래 링크를 참조해주세요. 

https://semicircuit.tistory.com/83

 

풀 업 / 풀 다운 [Pull Up / Pull Down ] 저항

안녕하세요.풀업 저항(pull-up resistor)과 풀다운 저항(pull-down resistor)은 디지털 회로에서 중요한 역할을 하는 구성 요소입니다. 이 저항들은 입력 핀이 안정적인 전압 상태를 유지하게 도와줍니다.

semicircuit.tistory.com

 

 

※2. Wiring (배선 연결)

저항의 크기는 풀 업/다운에 사용하는 저항 1000ohm(충분하게 큰 크기의 저항 ~=1000ohm이상),  LED에 사용하는 저항  330ohm(100~1000ohm 추천) 을 사용하였습니다.

Pull Down 방식

 

Pull Up 방식

 

 

 

 

※3. 소스코드 및 동작

스위치가 눌렸을때 LED가 켜지는 코드는 아래와 같습니다.

1. 소스코드

Pull Down 동작을하는 코드를 실행해 보겠습니다. (소스코드는 첨부파일 제공해 드리겠습니다.)

9-1_Tact_SW_PullDown.ino
0.00MB

//Pull Down//
// 택트 스위치가 연결된 디지털 핀 번호
const int switchPin = 3;

// LED가 연결된 디지털 핀 번호
const int ledPin = 2;

// 스위치 상태를 저장하는 변수
int switchState = 0;

void setup() {
  //  택트 스위치 핀을 입력으로 설정
  pinMode(switchPin, INPUT);
  
  // 스위치의 기본 상태를 LOW로 설정
  digitalWrite(switchPin, LOW);

  // LED 핀을 출력으로 설정
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // 스위치의 상태를 읽어옴
  switchState = 0;
  digitalWrite(ledPin, LOW);
  switchState = digitalRead(switchPin);

  // 만약 스위치가 눌리면
  if (switchState == HIGH) {
    // LED를 켬
    digitalWrite(ledPin, HIGH);
  }
}

 

Pull UP 동작을하는 코드를 실행해 보겠습니다. (소스코드는 첨부파일 제공해 드리겠습니다.)

9-2_Tact_SW_PullUp.ino
0.00MB

// Pull Up//
// 택트 스위치가 연결된 디지털 핀 번호
const int switchPin = 3;

// LED가 연결된 디지털 핀 번호
const int ledPin = 2;

// 스위치 상태를 저장하는 변수
int switchState = 0;

void setup() {
  // 택트 스위치 핀을 입력으로 설정
  pinMode(switchPin, INPUT);
  
  // 스위치의 기본 상태를 HIGH로 설정
  digitalWrite(switchPin, HIGH);

  // LED 핀을 출력으로 설정
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // 스위치의 상태를 읽어옴
  switchState = 0;
  digitalWrite(ledPin, LOW);
  switchState = digitalRead(switchPin);

  // 만약 스위치가 눌리면
  if (switchState == LOW) {
    // LED를 켬
    digitalWrite(ledPin, HIGH);
  }
}

 

2. 하드웨어 연결 및 동작 확인

Pull UP과 Pull Down 방식에는 각각 동작을 확인 할 수 있습니다.

==> 하드웨어적인 특성을 다르지만 코드상에서 동일한 동작을 하도록 해주어 같은 동작을 할 수 있습니다.

 

Pull Down 

 

Pull Up

 

이상으로 아두이노에서 Tack Switch를 통해 LED를 다루는 방법에 대한 설명을 마치겠습니다.

다름 포스트에서 Slide Switch를 통해 LED를 다루는 방법에 대해 다루겠습니다.

감사합니다.

반응형