• 검색 결과가 없습니다.

제 2 강 arduino 입력, 출력 사용

N/A
N/A
Protected

Academic year: 2022

Share "제 2 강 arduino 입력, 출력 사용"

Copied!
18
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

목원대학교 정보통신공학과 정윤수 1

제 2 강 arduino 입력, 출력 사용

목원대학교

정보통신공학과 정윤수

2013. 1학기

(2)

강의내용

arduino 입력, 출력 사용

(3)

목원대학교 정보통신공학과 정윤수 3

- 아두이노는 디지털 입력, 디지털 출력을 사용하는게 기본임.

- 디지털 입력이라고 하면 스위치가 눌렸는지 등을 체크하는데, 결국은 디지털 입력 단자로 5V가 감지되면 ON, 0V이면 OFF로 인식할 수 있음.

- 디지털 출력은 반대로 출력하면 5V가 나가고, 출력을 끄면 0V가 나가는 동작을 말함.

- 예를들면, 출력을 ON하면 LED가 켜지고, 출력을 OFF하면 LED가 꺼지는 동작이 될 수 있음.

- 아두이노 프로그램을 작성할 때는 늘

http://arduino.cc/en/Reference/HomePage

확인하면서 작성하는 것이 좋습니다. 각 함수의 쓰임새를 알고 써야 에러를 줄일 수 있음.

(4)

(1) 아두이노 핀의 출력방향을 출력(out)으로 설정한다.

(2) 출력으로 설정한 핀에 출력을 ON한다. 또는 출력 지정을 OFF 한다.

두 원칙을 지키며 프로그램을 작성해 보도록 한다.

(5)

목원대학교 정보통신공학과 정윤수 5

기본구조

void setup() {

// 여기는 프로그램이 시작되면 딱 한번만 실행됩니다.

}

void loop() {

//여기는 반복적으로 계속 실행됩니다.

}

(1) setup() 함수

프로그램이 실행되면 딱 한번만 실행됨. 다시 리셋되어 실행되지 않는 이상 절대 다시는 실행되지 않음. 보통 초기화 작업에 많이 활용

(2) loop() 함수

setup()이 실행되고 바로 실행되는 함수인데, 알아서 반복적으로 실행됨. 한번 끝나면 다시 loop() 함수의 처음으로 돌아와 실행이 됨. 주로 제어코드는 여기에 작성을 하게 됨

(6)

예제

Int ledPin = 13; //전압이 출력될 핀번호 변수에 설정

void setup() {

// 여기는 프로그램이 시작되면 딱 한번만 실행됩니다.

pinMode(ledPin, OUTPUT); // 핀의 출력방향으로 out으로 설정, 5V를 내보낼 수 있음.

}

void loop() {

//여기는 반복적으로 계속 실행됩니다.

}

- 아두이노의 13번 핀을 출력으로 설정

- 한번 설정되면 다시 설정할 때 까지는 설정한 값이 계속 유지되므로 13번 핀은 출력 전용 포트가 되어 5V를출력하거나 끄거나 할 수 있음

(7)

목원대학교 정보통신공학과 정윤수 7

아두이노 보드의 각 핀의 위치와 기능

- 위의 그림에서 빨간색으로 표시한 부분의 핀이 디지털 입력 또는 출력으로 사용할 수 있는 핀임.

- 우측부터 0~13번까지 설정되어 있음. 0~13번 핀은 다른 기능으로도 사용할 수 있지만, 우선 디지털 입출력 기능이 기본 기능이라고 생각하면 됨

- 위의 코드에서 설정한 13번 핀은 GND라고 써있는 글씨의 바로 우측에 13번이라고 표시된 부분을 말함.

- 13번핀과 GND 사이에 LED를 넣으면 LED를 ON 또는 OFF로 할 수 있음

- 핀의 디지털 입력 출력을 설정은 꼭 한번 하여야 그 해당 핀들을 사용할 수 있음. 위에서 원칙으로 표시한 (1)룰을 반드시 지켜야 함

(8)

예제

Int ledPin = 13; //전압이 출력될 핀번호 변수에 설정

void setup() {

// 여기는 프로그램이 시작되면 딱 한번만 실행됩니다.

pinMode(ledPin, OUTPUT); // 핀의 출력방향으로 out으로 설정, 5V를 내보낼 수 있음.

}

void loop() {

//여기는 반복적으로 계속 실행됩니다.

digitalWirte(ledPin, HIGH); // 13번 핀에 5V 출력 delay (1000); // 1000ms 대기

digitalWirte(ledPin, LOW); // 13번 핀에 5V 출력 끔 delay (1000); // 1000ms 대기

}

- 13번 핀은 출력으로 지정되었으므로 loop() 함수 안에서 5V를 줬다가 끊었다가 반복하면 13번 핀에 연결된 LED 같은 것에 전원을 넣었다 뺐다 할 수 있어 마치 깜빡거리는 효과를 만들 수 있음

※ 위의 코드를 실행하면 delay()라는 함수 때문에 1초는 켜져있고 1초는 꺼지고,

다시 1초는 켜지고 1초는 꺼지는 반복 동작을 끊임없이

수행할 수 있음

(9)

목원대학교 정보통신공학과 정윤수 9

(1) 아두이노 핀의 출력방향을 출력(out)으로 설정한다.

- (1) 원칙을 위해서 사용된 함수는 pinMode(핀번호, 출력방향) - 핀번호에는 아두이노의 디지털 입출력 핀인 0~13번까지를 지정할 있음

- 출력방향은 출력 용이면 OUTPUT, 입력이라면 INPUT이라고 써줌.

이때 대문자로 써야 함.

(10)

(2) 출력으로 설정한 핀에 출력을 ON 한다. 또는 출력 지정을 OFF 한다.

- (2) 원칙을 위해서는 digitalWrite(핀번호, HIGH or LOW)를 사용

- pinMode로 핀의 방향을 설정하였으면 해당 핀번호에 전원을 넣었다 뺐다 함.

- HIGH 는 5V 출력을 설정하며, LOW는 0V 출력을 설정함

(11)

목원대학교 정보통신공학과 정윤수 11

예제

- 위의 그림과 같이 LED를 연결하고, 작성한 코드를 컴파일한 후 아두이노에

업로드하면 연결된 LED가 깜작이기 시작합니다.

- Delay() 함수의 값을 변화시켜 감빡이는 시간을 조절하여 여러가지로 LED의

깜빡임을 제어해보는 것도 할 수 있습니다.

(12)

- 디지털 입력을 사용하면 스위치 입력 등을 받을 수 있음 - 디지털 입력도 출력과 같음

- 단지 방향을 INPUT으로 설정하고 출력 함수인 digitalWrite()를 사용하지 않고 해당 핀으로 5V가 들어왔는지를 검사하는

digitalRead()라는 함수를 사용

(13)

목원대학교 정보통신공학과 정윤수 13

예제

int ledPin = 13; //전압이 출력될 핀번호 변수에 설정

int buttonPin = 12; // 스위치 입력 연결할 핀번호 변수에 설정 void setup()

{

// 여기는 프로그램이 시작되면 딱 한번만 실행됩니다.

pinMode(ledPin, OUTPUT); // 핀의 출력방향으로 out으로 설정, 5V를 내보낼 수 있음.

pinMode(buttonPin, INPUT); // 핀의 출력방향을 in으로 설정, 5V 입력을 받아들일 수 있음 }

void loop() {

//여기는 반복적으로 계속 실행됩니다.

digitalWirte(ledPin, HIGH); // 13번 핀에 5V 출력 delay (1000); // 1000ms 대기

digitalWirte(ledPin, LOW); // 13번 핀에 5V 출력 끔 delay (1000); // 1000ms 대기

}

- 위의 코드에서 buttonPin이라는 변수에 12번을 설정하고, pinMode() 함수를 이용하여 12번 핀을 INPUT으로 설정하였음.

※ 위의 코드를 실행하면 delay()라는 함수 때문에 1초는 켜져있고 1초는 꺼지고,

다시 1초는 켜지고 1초는 꺼지는 반복 동작을 끊임없이

수행할 수 있음

(14)

예제

- 그림과 같이 스위치를 12번핀과 5V핀 사이에 연결

- 그리고, 저항 10K 옴을 GND와 12번 핀 사이에 연결

- 스위치를 누르면 5V전압이 스위치를 통과하여 12번 핀으로 들어가 전압이 가해지고, 스위치를 띠면 12번 핀은 저항을 통해 항상 GND에 연결이되어 0V로 전압이 내려감.

(15)

목원대학교 정보통신공학과 정윤수 15

예제

int ledPin = 13; //전압이 출력될 핀번호 변수에 설정

int buttonPin = 12; // 스위치 입력 연결할 핀번호 변수에 설정 int buttonState = 0; // 버튼의 상태값 저장

void setup() {

// 여기는 프로그램이 시작되면 딱 한번만 실행됩니다.

pinMode(ledPin, OUTPUT); // 핀의 출력방향으로 out으로 설정, 5V를 내보낼 수 있음.

pinMode(buttonPin, INPUT); // 핀의 출력방향을 in으로 설정, 5V 입력을 받아들일 수 있음

}

(16)

예제

void loop() {

//여기는 반복적으로 계속 실행됩니다.

buttonState = digitalRead(buttonPin); // 12번 핀의 상태를 읽음. 5V이면 HIGH, 0V이면 LOW

if(buttonState == HIGH) {

digitalWirte(ledPin, HIGH); // 13번 핀에 5V 출력 delay (1000); // 1000ms 대기

digitalWirte(ledPin, LOW); // 13번 핀에 5V 출력 끔 delay (1000); // 1000ms 대기

} }

- digitalRead(핀번호) 함수를 호출하면 해당 핀 번호의 포트의 전압값을 얻어온다.

- 스위치가 눌렸을 때 5V가 되므로 HIGH, 스위치를 누르지 않았을 때 0V이므로 LOW를 리턴한다.

- 눌렸을 때만 HIGH가 되므로 누르고 있으면 LED는 점멸하게 됨. 스위치를 띄면 LED가 더 이상

(17)

목원대학교 정보통신공학과 정윤수 17 - 디지털 출력

pinMode(), digitalWrite()

- 디지털 입력

pinMode(), digitalRead()

(18)

참조

관련 문서

스위치에 인가전압이

시행자는 개발구역 안에서 개발사업의 시행을 위하여 필요한 때에는 공익사업을위 한토지등의취득및보상에관한법률 제 조의 규정에 의한 토지 물건 또는 권리를 수 3 · 용 또는 사용할

결과보고서 입력 방법 (온라인

과제수행에 대한 결과물/결과보고서/ 만족도 조사서를 정해진 기간 내에 inSTAR에 입력 및

It is known that a much better reconstruction can be achieved by using a local flap of tissue from the non- weight-bearing portion of the sole or a free flap that

실험값을 얻는 과정에서 그 값을 얻지 못하는 경우 빈칸으로 된 부분을 말한다 (SPSS 에서는 빈칸으로 비워두면 자동으로 결측값으로 인정한다).. SPSS에서는 숫자는 오른쪽

전원 입력 또는 차단 시 채터링이 생기지 않도록 스위치 등으로 전원을 입력 또는 차단하십시오.. 제품의 전원 입력 및 차단을 위해 스위치나

(주) 본 기능은 표준 제어, 아날로그 입력 종별, 가열 냉각 튜브 방식이 수냉 이외, 정동작, SP 램프 동작 중 하나인 경우에는 사용할 수 없습니다.. 적응제어란