그림과 같이 Pull Up용 9K옴 저항과 스위치가 설치된 NodeMCU 보드에서의 INPUT 특성을 코딩을 통해 알아보자.
스위치가 OFF 된 상태에서 디지털 데이터 핀 D1(GPIO 5)은 3.3V 전압이 가해진 즉 HIGH 상태가 된다. 반면에 스위치 on이 되면 D1은 0V 전압 상태 즉 LOW로 바뀐다.
D1 디지털 핀에서의 입력 상태를 판독하기 위한 프로그램은 pinMode() 명령을 사용하여 D1 핀을 입력 즉 INPUT 으로 설정한 후 digitalRead() 명령을 사용하여 상태 값을 읽어 내도록 구성된다.
swPin 번호 5번은 NodeMCU의 D1 즉 GPIO 5 번 핀이며 ledPin 번호 2번은 빌트인 LED 핀 번
호이다.
pinMode()에서 swPin핀은 INPUT으로 ledPin은 OUTPUT으로 설정한다.
loop()문에서 digitalRead() 명령을 실행하여 swPin 핀의 디지털 데이터 값을 읽고 시리얼 모니터에 출력한다.
디지털 데이터 값이 HIGH 이면 ledPin을 LOW 로 두어 LED를 on 시킨다. 반면에 디지털 데이터 값이 LOW 이면 ledPin을 HIGH 로 두어 LED를 OFF 시킨다.
시리얼 플로터를 사용하여 스위치를 on OFF 하면서 INPUT 특성을 쉽게 관찰할 수 있다. 외부의 Pull Up 저항을 사용하는 시스템에서 바운스 효과는 전혀 나타나지 않았다.
현재의 배선에서 Pull Up 저항을 제거한 상태에서 INPUT_PULLUP 설정을 적용해 보자.
pinMode() 설정에서 INPUT을 INPUT_PULLUP 으로 변경하면 된다.
코드 실행 결과 시리얼 플로터 관찰에 의하면 INPUT 조건 때와 별 차이 없이 동작함을 확인할 수 있다.
NodeMCU 보드에서의 특이 사항은 D1,D2,D3,D4,D5,D6 핀에서만 INPUT 또는
INMPUT_PULLUP 설정이 가능하며 나머지는 항상 LOW 이든지 HIGH 상태이다. 내부에 하드웨어적인 배선이 있으리라 추정된다.
NodeMCU_DigitalInput_01
int swPin = 15;
int ledPin = 2;
void setup() {
Serial.begin(9600);
pinMode(swPin, INPUT_PULLUP);
// pinMode(swPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
int sensorVal = digitalRead(swPin);
Serial.println(sensorVal);
if (sensorVal == HIGH) {
digitalWrite(ledPin, LOW);
} else {
digitalWrite(ledPin, HIGH);
}
}//끝
'아두이노프로세싱 프로그래밍' 카테고리의 다른 글
라즈베리 파이3 Adafruit DHT11 온습도 센서 측정 파이선3 코딩 (0) | 2017.05.26 |
---|---|
초보자를 위한 라즈베리 파이 3 스위치 INPUT PULL UP DOWN 파이선 코딩 (0) | 2017.05.25 |
아두이노 NodeMCU ESP8266WiFi 라이브러리 설치용 ZIP 파일 다운받으세요! (0) | 2017.05.25 |
try: 와 finally: 명령으로 라즈베리 파이 3 스위치 INPUT 파이선 코딩 예제 다듬기 (0) | 2017.05.24 |
초보자를 위한 라즈베리 파이3 파이선 디지털 핀 스위치 INPUT 코딩 예제 (0) | 2017.05.24 |