2019.07.26 15:30

간만에 만들 게 있어서 아두이노를 연결하고 버튼을 연결했는데.....

 

 

 

간단하게 코드를 만들어서 올리고....

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#define Button01 2
 
void setup() 
{
  Serial.begin(9600);
  
  pinMode(Button01, INPUT);
}
 
void loop() 
{
  Serial.println(digitalRead(Button01));
  delay(10);
}
cs

 

 

버튼을 누르지 않았을 때 입력값이 이상합니다???

 

 

 

1. 플로팅(floating)

버튼을 누르지 않고 있을 때 값이 랜덤하게 나오는 것을 플로팅(floating)상태라고 합니다.

이 상태에서는 버튼값이 0이나 1이 아닙니다.

( 참고 : stackExchange - Button state changing randomly, Arduino Tutorlals - Button )

 

 

2. 상태 변경

플로팅 상태를 해결하려면 풀 업(Pull Up), 풀 다운(Pull Down) 회로를 만들어야 합니다.

방법은 접지해주는 것인데 그냥 접지하면  그냥 다운되어버리니 저항을 연결하여 상태를 유지하는 것이죠.

 

2-1. 풀 다운(Pull Down) 저항 만들기

풀 다운은 버튼이 눌리지 않았을 때 '0'을 유지합니다.

 

 

GitHub - https://github.com/dang-gun/ArduinoSample/tree/master/ButtonFloating

ButtonFloating_PullDown.fzz

 

 

이제 실행해보면 버튼을 누르지 않았을 때 '0'값이 유지됩니다.

 

 

 

2-2. 풀 업(Pull Up) 저항 만들기

풀 업은 버튼이 눌리지 않았을 때 '1'을 유지니다.

 

 

GitHub - https://github.com/dang-gun/ArduinoSample/tree/master/ButtonFloating

ButtonFloating_PullUp.fzz

 

 

이제 실행해보면 버튼을 누르지 않았을 때 '1'값이 유지됩니다.

 

 

 

마무리

이게 배선에 따라 자기도 모르게 풀업이나 풀다운이 될 수 있습니다.

버튼을 처음 단독으로 쓰다가 당황했네요. ㅋㅋㅋㅋ

댓글 작성

이름
패스워드
홈페이지
비밀글