[아두이노] [강좌] 4. Blink 예제 해부하기(3) - pinMode()

지난 시간함수에 대해 설명하면서 setup() 함수와 loop() 함수에 대해 설명했었다이번 시간에는 setup() 함수 안에 있는 “pinMode”라는 함수에 대해 알아보자.

 

“pinMode” 함수의 반환 값과 매개 변수는 다음과 같다.

 

 

void pinMode(pin, mode)

 

 

매개 변수는 미리 정의된 키워드 중 하나가 들어가야 하기 때문에 타입을 따로 표시하지 않았다.



 

 매개 변수

 

 pin : 아두이노 보드의 핀 번호

 

 mode : ‘INPUT’ 또는 ‘OUTPUT’, 또는 ‘INPUT_PULLUP’




“pinMode” 함수는 함수명 그대로 아두이노 핀의 모드를 설정하는 기능을 한다함수명을 잘 짓는 것은 참 좋은 것이야.

 

아두이노 보드 중 우노(Uno) 20개의 핀을 가지고 있다메가(Mega 2560/ADK)는 훨씬 많은 70개의 핀을 가지고 있다핀에는 각각 번호가 매겨져 있는데이 번호는 보드의 핀 꽂는 자리 옆에 표시되어 있다.

 


591773b98011d21d43efa2e69adc6d54.png 



이 중에서 내가 사용할 핀의 번호를 pin 값에 넣어주면 된다. “pinMode” 함수는 핀의 기능이 디지털’ 기능일 경우에 사용하면 되는데이 디지털’ 기능이란 단순히 핀에 전기가 흐르는가 흐르지 않는가 중에 고르는 기능이다나중에 설명할 아날로그’ 기능이라든지통신 기능 등을 사용할 경우에는 아두이노 내부 소스에서 자동으로 설정되므로 설정해주지 않아도 된다.

 

그럼 디지털’ 기능으로 사용할 수 있는 핀은 어떤 핀일까아두이노 보드에 번호가 표시된 부분을 보면 “Digital”이라고 표시된 부분이 있다이 핀들을 디지털’ 기능으로 사용할 수 있다는 말인가?

 


디지털’ 기능은 아두이노 보드의 모든 핀에서 사용할 수 있다. 



그럼 왜 “Digital”이라고 따로 표시해 둔거지글쎄아마도 “Digital”만 사용 가능한 핀이라는 뜻이 아닐까 싶네.



 

디지털’ 기능에는 입력(INPUT) 모드와 출력(OUTPUT) 모드가 있는데, “pinMode” 함수는 바로 이 모드를 설정하는 기능을 한다.

 

pinMode() 함수의 매개 변수로 핀 번호와 모드를 나타내는 키워드 값을 넣어주는데핀 번호는 아두이노에 표시된 번호를 그대로 넣어주면 되고모드는 “OUTPUT”, “INPUT”, “INPUT_PULLUP” 중 하나를 선택해서 넣어줘야 한다하나씩 살펴보자.



OUTPUT

 

디지털’ 기능 중 출력’ 기능을 설정한다. ‘출력’ 기능이란 설정한 핀으로 HIGH 또는 LOW의 신호를 내보내는 기능이다. ‘HIGH’란 전기를 흘려 보내서 ‘1’의 신호를 만드는 것, ‘LOW’란 전기를 흘려 보내지 않아서 ‘0’의 신호를 만드는 것.

 

컴퓨터나 반도체 등 복잡한 기능을 하는 전자 제품들을 자세히 뜯어보면 사실은 모든 동작이 ‘0’ 또는 ‘1’로 이루어 진다,는 건 이미 알고 있는 사실아두이노로 만들어질 무언가도 마찬가지모든 기능은 ‘0’ 또는 ‘1’로 이루어진다. 그리고 ‘0’이냐, ‘1’이냐를 구분하기 위한 기준이 되는 것이 바로 '전압'이다.


전압.. 기억나나? 초등학교 때 직렬 연결, 병렬 연결 하면서 꼬마 전구 여러 개 터뜨렸었지. ㅋㅋㅋ

 

아두이노 보드 중 우노(Uno)와 메가(Mega 2560/ADK)의 경우 기본 출력 전압이 5V이며듀에(Due)의 경우에는 3.3V가 기본 출력이다기본 출력이 뭐냐하면, ‘1’의 신호를 만들어내는 전압의 크기가 5V, 또는 3.3V 라는 말. ‘0’의 신호를 만드는 전압 크기는 당연히 0V. 


즉, 5V 또는 3.3V를 흘려보내면 '1', 전기를 내보내지 않고 0V를 만들면 '0'.


pinMode() 함수를 사용하여 핀을 OUTPUT 모드로 설정하면 그 핀으로 ‘1(HIGH)’ 또는 ‘0(LOW)’ 값을 내보낼 수 있다는 말어떻게 내보내는가에 대해서는 다음 강좌 “digitalWrite()” 함수에서 설명하도록 하자.

 

 

INPUT

 

입력’ 모드


출력’ 모드와 반대로 설정한 핀에 ‘0(LOW)’의 값이 들어오는가, ‘1(HIGH)’의 값이 들어오는가를 읽어오기 위한 모드이다아두이노 보드 단독으로 있을 때 사용하는 것은 의미가 없고설정한 핀에 다른 센서 또는 모듈 등이 연결되어 있을 때 그 센서(또는 모듈)에서 어떤 값을 출력하고 있는가(센서 입장에선 출력, 아두이노 입장에선 입력)를 알기 위해 사용된다.

 

아까 OUTPUT 모드에서는 기본 출력 전압으로 ‘0’ 또는 ‘1’을 만들었었는데, INPUT 모드에서는 ‘0’ 또는 ‘1’을 판단해야 하므로 그 판단을 위한 입력 기준 전압(내가 만든 말임-_- 실제 단어가 뭔지는 모르겠음)이 존재한다예를 들어내가 11번 핀을 INPUT 모드로 설정했는데, 11번 핀으로 2.5V의 전압이 입력되고 있다그럼 이건 ‘0’일까, ‘1’일까두둥. 


2.5V라도 전압이 들어오고 있으니 ‘1’로 봐야 할까아니면 기본 출력 전압인 5V 3.3V보다 작은 전압이 들어오고 있으니 ‘0’으로 봐야 할까이것을 판단하기 위해 기준 전압이 사용되며, 이 기준 전압은 기본 출력 전압에 따라 달라진다.

 

아두이노 우노(Uno)나 메가(Mega 2560/ADK) 등 기본 출력 전압이 5V인 보드에서는 0 1을 판단하는 기준 전압이 3V이며듀에(Due)처럼 기본 출력 전압이 3.3V인 보드에서는 기준 전압이 2V이다.

 

똑같이 2.5V가 입력된다고 할 때우노나 메가에서는 이 값을 기준 전압인 3V보다 낮으므로 ‘0’으로 판단하고, 듀에에서는 2V보다 높으므로 ‘1’로 판단한다는 말.

 

아무튼 INPUT 모드로 설정하면 설정한 핀으로 들어오는 입력 값이 ‘0(LOW)’인지 ‘1(HIGH)’인지를 읽어 올 수 있다어떻게 읽어 오느냐는 역시 다음 강좌 “digitalRead()” 함수에서 설명.



INPUT_PULLUP

 

이 모드는 INPUT 모드와 동일한 역할을 하도록 설정한다해당 핀에 장착된 내부 풀업 저항을 동작시켜 기본 입력 값이 ‘1(HIGH)’이 되도록 한다풀업 저항에 대해서는 “digitalRead()” 함수에서 역시 자세히 설명하도록 하자.

 



그럼 Blink 예제의 setup() 함수를 다시 살펴볼까?



 

 void setup() {

   pinMode(13, OUTPUT);

 } 



pinMode() 함수를 사용해서 '13'번 핀을 'OUTPUT' 모드로 사용하겠다고 설정하고 있다. 램프를 켜기 위해서는 전기를 읽는 기능이 아니라 내보내는 '출력' 기능이 필요하므로. 쉽다. 

 



이번 강좌에서 기억해야 할 것은 pinMode() 함수는 사용할 핀의 모드를 입력’ 또는 출력으로 설정하는 기능을 한다,는 것.

 

pinMode() 함수는 주로 setup() 함수 내에서 사용되지만아두이노 동작 중에 사용하여 모드를 변경하는 것도 가능하기 때문에 loop() 함수 안에서 사용되기도 한다예를 들면초음파 센서 같은. 음, 다음에 초음파 센서 예제도 하나 추가해야겠다,고 생각한 순간 뭔가 숙제가 생긴거 같고 기분이 좋네.. 

 brown_and_cony-77

 



그럼 이번 강좌는 짧게 끝냈다는 의미의 만세를 부르며여기서 끝바바이.

0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기

임베디드 보드

번호 제목 글쓴이 날짜 조회수
18 아두이노 [강좌] 10. 아날로그 기능 - analogRead() 함수 icon 양재동메이커 03-14 11,398
17 아두이노 [강좌] 9. digitalWrite()/digitalRead() 실습 – 초음파 센서 icon 양재동메이커 03-14 8,777
16 아두이노 [강좌] 8. digitalRead() 함수(2) – 풀업 저항과 INPUT_PULLUP 모드 icon 양재동메이커 03-14 10,690
15 아두이노 [강좌] 7. digitalRead() 함수(1) - 스위치를 이용한 DigitalReadSerial 예제 icon 양재동메이커 03-14 9,492
14 아두이노 [강좌] 6. digitalWrite() 함수 실습 - LED 깜빡이기 icon 양재동메이커 03-14 8,492
13 아두이노 [강좌] 5. Blink 예제 해부하기(4) - digitalWrite()와 delay() icon 양재동메이커 03-14 7,371
12 아두이노 [강좌] 4. Blink 예제 해부하기(3) - pinMode() icon 양재동메이커 03-14 8,291
11 아두이노 [강좌] 3. Blink 예제 해부하기(2) - 함수 icon 양재동메이커 03-14 7,362
10 아두이노 [강좌] 2. Blink 예제 해부하기(1) icon 양재동메이커 03-14 7,938
9 아두이노 [강좌] 1. 아두이노 보드와 스케치 툴 icon 양재동메이커 03-13 8,005
8 아두이노 [강좌] 0. 아두이노, 시작. icon 양재동메이커 03-11 8,146
7 STM32 / MBED 19년 Mbed OS 동영상 강좌 List icon HelloMaker 03-11 7,876
6 STM32 / MBED MBED 수학 icon HelloMaker 03-11 7,663
5 STM32 / MBED MBED RTOS icon HelloMaker 03-11 7,326
4 STM32 / MBED MBED 파일 시스템 icon HelloMaker 03-11 7,364
3 STM32 / MBED MBED 통신 icon HelloMaker 03-10 7,859
2 STM32 / MBED MBED Timer icon HelloMaker 03-10 9,235
1 STM32 / MBED MBED 기본 구조 icon HelloMaker 03-10 6,679