SWITCH
스위치는 전자제품의 전원을 켜거나 끌 때, 혹은 전자기기를 조작할 때 사용하는 제어장치.
스위치 사용법 : PUSH버튼
단추 모양의 버튼은 스위치를 동작시키는 역할을 하며, 하단의 4개 단자는 회로와 스위치를 연결하는 다리 역할을 합니다.
단자연결은 대각선 방향이 한 쌍으로 연결되어있음. 전류는 좌측상단단자에서 우하단 단자로 흘러들어감.
버튼을 누르는 동안 전류를 흘려주는 A type | |
---|---|
버튼을 누르는 동안 전류를 차단하는 B type |
부품명 | 수량 |
---|---|
아두이노 우노 R3 | 1 |
브레드보드 | 1 |
330Ω 저항 | 1 |
10KΩ 저항 | 1 |
포토 레지스터 | 1 |
5mm LED | 1 |
푸쉬 버튼 | 1 |
점퍼케이블 | 5 |
회로도
브레드보드 레이아웃
센서연결
PUSH Button 한 쪽 | GND |
---|---|
PUSH Button 다른 쪽 | 10KΩ 저항 |
coding
/* push button 연결하기
누르면 LED가 켜지도록 만들어 봅시다.
*/
const int button1Pin = 2; //푸시버튼과 연결된 핀 번호(2)를 저장할 변수 선언
const int ledPin = 13; //LED와 연결된 핀 번호(13)를 저장할 변수 선언
void setup()
{
//2번 핀을 입력용으로 설정
pinMode(button1Pin, INPUT);
//13번 핀을 출력용으로 설정
pinMode(ledPin, OUTPUT);
}
void loop()
{
int button1State; //읽어 올 디지털 값을 저장할 변수 선언
button1State = digitalRead(button1Pin); //버튼이 눌렸는 지 아닌지를 읽어와서 앞에 선언한 변수에 저장
if(button1State == LOW) { //눌렸다면
digitalWrite (ledPin, HIGH); //LED를 ON
} else { //눌리지 않았다면
digitalWrite(ledPin, LOW); //LED를 OFF
}
}
- 사전설명
푸시 버튼 한 쪽은 GND와 연결 되어 있습니다. 푸시 버튼을 누르면 GND와 연결되게 됩니다. digitalRead로 값을 읽으면 LOW로 읽히게 됩니다. 즉, 입력핀에 0V 값을 입력 한 것입니다.
다른 한 쪽은 디지털 핀과 연결이 되어있습니다. 하지만 누르지 않을 때 무조건 HIGH로 읽히는 것은 아닙니다. 이 경우 5V or 0V 둘 다 입력 되지 않았기 때문에 칩 자체에서 어떤 값인지 읽어 올 수 없습니다. 이렇게 핀에 어떤 값이 입력이 됬는 지 모르는 경우를 플로팅(floating)이라고 합니다.
플로팅 상태가 되면 소자의 특성과 주위 환경에 따라 High, Low 상태가 수시로 변할 수 있고 여러 노이즈를 유발하여 오작동을 일으킬 수 있습니다.
이런 경우 풀업 저항(pullup resister)를 사용합니다. 2번 핀과 푸쉬 버튼 사이 연결된 10KΩ 저항이 바로 풀업저항입니다. 이 사이에 저항을 연결 하므로써 항상 5V 전압이 걸려있는 HIGH 상태가 됩니다. 핀을 높은 저항인 상태로 매달아 둔다는 뜻으로 풀업 저항이라고 합니다.
정리하면, 누르면 LOW상태, 평상시는 HIGH 상태입니다.
- 스케치 설명
const int button1Pin = 2; //푸시버튼과 연결된 핀 번호(2)를 저장할 변수 선언
const int ledPin = 13; //LED와 연결된 핀 번호(13)를 저장할 변수 선언
void setup()
{
//2번 핀을 입력용으로 설정
pinMode(button1Pin, INPUT);
//13번 핀을 출력용으로 설정
pinMode(ledPin, OUTPUT);
}
각 핀 번호를 담을 변수를 선언.
푸시 버튼과 연결된 핀은 입력용으로 사용할 것이기 때문에 pinMode()안에 INPUT이라고 적습니다.
void loop()
{
int button1State; //읽어 올 디지털 값을 저장할 변수 선언
button1State = digitalRead(button1Pin); //버튼이 눌렸는 지 아닌지를 읽어와서 앞에 선언한 변수에 저장
if(button1State == LOW) { //눌렸다면
digitalWrite (ledPin, HIGH); //LED를 ON
} else { //눌리지 않았다면
digitalWrite(ledPin, LOW); //LED를 OFF
}
}
if 구문을 사용해서 푸시버튼과 연결된 2번핀에서 읽어온 디지털 값이 LOW이면 LED를 킵니다.
즉, LOW (버튼을 누르면) LED가 켜지고 HIGH (버튼 안누른상태) LED가 꺼집니다.