본문 바로가기
아두이노

아두이노 플로팅 현상

by 잡T 2020. 1. 27.

아두이노 플로팅 현상. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void setup()
{
  pinMode(13, OUTPUT);
  pinMode(8, INPUT);
}
 
void loop()
{
  int a = digitalRead(8);
  
  if (a == HIGH){
    digitalWrite(13, HIGH);
  } else {
    digitalWrite(13, LOW);
  }
}
cs

우선 코드 해석을 보자.

setup() 함수는 아두이노에 전원이 공급되면 가장 먼저 실행되는 함수이자 한 번만 실행되는 함수이다. 주로 프로그램 시작 전에 수행될 환경설정과 초기화에 필요한 코드들이 포함된다.

 

다음 pinMode() 함수는 디지털 핀의 용도를 설정한다. pinMode(13, OUTPUT) 은 아두이노 13번 핀을 출력용도로 사용하겠다는 뜻이다. pinMode(8, INPUT)은 8번 핀을 입력용도로 사용한다.

loop() 함수는 setup() 함수가 실행된 후 계속해 반복적으로 실행되는 함수이다. 아두이노가 실행할 수 있는 최대 빠르기로 실행된다. 

 

int a는 변수 a를 선언하고 8번 핀 값을 읽어 저장한다. 

 

a=HIGH. a의 값이 HIGH 즉 전류가 들어오면 digitalWrite(13, HIGH) 13번 핀에 전류를 흘려보낸다. 아니라면 digitalWrite(13, LOW) 전류를 흘려보내지 않는다.

 

아래 이미지를 보자. 버튼을 누르면 5v핀에서 나온 전류가 8번핀으로 들어가게 되고, 8번 핀에서 전류의 흐름을 감지하면 다시 13번 핀으로 전류를 내보내 led에 불을 켠다. 

아두이노 플로팅 현상

그럼 시뮬레이션 해보자.

 

 

기대와는 달리 버튼을 누르지 않아도 led에 불이 들어온다. 왜 그럴까? 디지털 핀을 입력으로 설정하면 입력 핀 주위에 작은 전류가 흐른다. 이것이 플로팅 현상.

 

흐르는 전류를 모두 그라운드 핀으로 빼주어 평상시 전류를 LOW로 맞추어 주는 것이 풀다운이다. 시뮬레이션 해보자.

 

 

이번에는 버튼을 누르면 led가 켜지며 제대로 작동한다. 평상시 8번 핀에 흐르는 전류는 그라운드로 빼주었다. 이것이 바로 풀다운. 그라운드로 전류를 보낼때 반드시 저항을 사용한다. 저항을 사용하지 않으면 버튼을 눌렀을 때, 전류가 8번핀으로 흐르지 않고 바로 그라운드로 흘러 보드가 망가질 수 있다. 저항은 10K를 사용했다.

 

 

풀업은 평상시 전류를 HIGH로 맞추어준다. 풀업 저항은 평상시에는 전원을 공급하다 누르면 전원 공급을 멈추는 리셋(Reset) 버튼과 같은 곳에 사용된다. 또 내부 풀업 저항을 사용할 수 있다. 

pinMode(8, INPUT)pinMode(8, INPUT_PULLUP)으로 써 주면 된다.

 

'아두이노' 카테고리의 다른 글

555 timer 쌍안정 모드  (0) 2020.01.31
슬라이드 스위치 사용 (풀다운)  (0) 2020.01.27
led 깜박이기  (0) 2020.01.27
아두이노 예제 1  (0) 2020.01.27
randomSeed  (0) 2020.01.04

댓글