100
Starter Kit for Arduino Anyone can easily㈜퍼스트봇 ( V1.0 ) www.firstbot.co.kr www.firstbot.co.kr

Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

  • Upload
    others

  • View
    12

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino Anyone can easily…

퍼스트봇 ( V1.0 )

www.firstbot.co.kr ww

w.fi

rstb

ot.c

o.kr

Page 2: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

2 | 페 이 지

Arduino Starter Kit 는 Arduino 를 배우고자 하는 분들께 전자회로, 모듈, 센서 등의

다양한 조합으로 구성되어 Aruduino 를 쉽게 접근, 이해 할 수 있는 고급 Kit 입니다.

각 구성품 의 기본 동작과 특성을 파악 한 후 응용을 통해 본인이 원하는 프로젝트를

계획 하고 실행 할 수 있습니다.

- 목 차 -

1. Arduino UNO R3 (Micro 5 Pin USB) ………………………………………….. 4

2. BreadBoard MB-102 830P ………………………………………….. 7

3. RC-522 RFID Module (CARD,KEY) ………………………………………….. 8

4. I2C + 1602 LCD Module ………………………………………….. 14

5. 1 digit display Module ………………………………………….. 17

6. 4 digit display Module ………………………………………….. 20

7. 8X8 dotmatrix Module ………………………………………….. 26

8. 4X4 Keypad Module ………………………………………….. 30

9. Stepper Motor ULN2003&28BYJ-48 Drive ………………………………………….. 33

10. SG90 Servo Motor ………………………………………….. 35

11. 5V Relay Module ………………………………………….. 37

12. Remote Control / Infrared Receiver Sensor ………………………………………….. 39

13. Dual-axis XY Joystick Module ………………………………………….. 44

14. DHT11 Temperature Sensor ………………………………………….. 46

15. LM35 Temperature Sensor ………………………………………….. 48

16. Water level Sensor ………………………………………….. 50

17. Flame Sensor ………………………………………….. 52

18. Sound Sensor ………………………………………….. 54

19. Clock Module ………………………………………….. 56

20. RGB 3 Color Module ………………………………………….. 61

ww

w.fi

rstb

ot.c

o.kr

Page 3: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

3 | 페 이 지

21. Ball Switch Sensor ………………………………………….. 63

22. Photo resistor Sensor ………………………………………….. 65

23. 74HC595N Shift register ………………………………………….. 67

24. Passive Buzzer ………………………………………….. 70

25. Piezzo Buzzer ………………………………………….. 72

26. 12X12 Key Button ………………………………………….. 74

27. Color LED ( Red, Green, Yellow ) ………………………………………….. 76

28. Potentiometer ………………………………………….. 78

29. Resistor ………………………………………….. 80

< 별책 >

1장. 아두이노 IDE 설치 ………………………………………….. 81

2장. 아두이노 프로그램을 위한 기초 C 언어 문법 ………………………………………….. 84

3장. 아두이노 라이브러리(Library)추가 / 사용 하기 ………………………………………….. 99

ww

w.fi

rstb

ot.c

o.kr

Page 4: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

4 | 페 이 지

1. Arduino Uno R3 ( Micro 5 Pin USB Type )

- Microcontroller ATmega328

- Operating Voltage 5V

- Input Voltage (recommended) 7-12V

- Input Voltage (limits) 6-20V

- Digital I/O Pins 14 (of which 6 provide PWM output)

- Analog Input Pins 6

- DC Current per I/O Pin 40 mA

- DC Current for 3.3V Pin 50 mA

- Flash Memory 32 KB (ATmega328) of which 0.5 KB-used by bootloader

- SRAM 2 KB (ATmega328)

- EEPROM 1 KB (ATmega328)

- Clock Speed 16 MHz

ww

w.fi

rstb

ot.c

o.kr

Page 5: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

5 | 페 이 지

아두이노 우노(uno) R3는 ATmega328P 라는 AVR 8-bit 마이크로콘트롤러를 사용한다.

PC와 USB로 연결할 수 있으며 이것으로 프로그램 다운로드 및 시리얼 통신에 사용된다.

(1) 전원 연결

아두이노 우노보드는 내부적으로 5V로 동작한다. 전원은 다음과 같이 두 가지 방법 중 한 가지로

인가하면 된다.

1) USB로부터 5V 전원을 공급받아서 동작할 수 있다. 따라서 이 보드를 PC와 USB로 연결하면

일단 기본적인 하드웨어 구성은 끝난 것이다.

2) 외부 전원을 연결하는 단자가 있는데 이것으로 7~12V 사이의 전원을 인가하면 되며 9V가

권장 전압이다. 일반적인 AA 혹은 AAA 사이즈의 1.5V건전지를 6개를 직렬로 연결하거나 1.2V

충전지를 사용해도 된다. AC어댑터도 전압 범위가 맞으면 사용 가능하다.

USB와 전원 소켓에 둘 다 연결 된 경우에는 소켓에서 공급되는 전원을 우선적으로 사용하게

된다.

(2) 디지털 입출력 핀 14 개 ( 0~13번 핀)

디지털(digital) 입출력 핀들을 이용해서 외부의 이진 신호를 읽어들어나 또는 이진 신호를

내보낼 수 있다. 이진 신호란 on/off 와 같이 상태값이 두 가지만을 가지는 신호라는 의미이다.

이 디지털 핀을 이용해서 LED를 켜고/끄거나 외부의 스위치가 눌려져 있는지 아닌지 등을

검출 할 수 있다. 구체적으로 0V 와 5V 두 전압중 하나의 값을 가지며 이것은 프로그램으로

제어할 수 있다.

디지털 입출력으로 사용되면서 또한 부가적인 기능을 가지는 핀들은 다음과 같다.

0번과 1번 핀은 시리얼 통신에 사용된다. USB로 PC와 통신을 할 수 있다.

2번과 3번 핀은 인터럽트 기능을 갖는다.

3, 5, 6, 9, 10, 11번 핀은 PWM 기능을 가지며 아날로그 출력으로 표현 할 수 있다.

(3) 아날로그 입력 핀 6 개 ( A0~A5)

아날로그 입력 핀이란 외부의 아날로그 입력값을 읽어들이는 핀으로서 주로 센서(sensor)와

연결하여 사용된다. 아날로그(analog)신호는 디지털 신호와는 달리 연속값을 의미하면 예를

ww

w.fi

rstb

ot.c

o.kr

Page 6: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

6 | 페 이 지

들어서 온도, 빛의 세기 등이 있다. 이러한 물리량을 센서가 전기 신호로 변환하며 이것을 이

아날로그 핀으로 읽어들일 수 있다.

센서를 통해 읽은 전압값은 0에서 1023 사이의 숫자로 변환된다. 기준 전압은 5V 이지만 1.1V의

내부 전압이 사용될 수 있으며 AREF핀으로 기준 전압을 직접 인가할 수도 있다.

그리고 아날로그 핀은 디지털 입/출력 핀으로도 사용 할 수 있다.

(4) 아날로그 출력 핀 6 개 ( 3,5,6,9,10,11번 핀 )

디지털 출력핀이 0V/5V 두 가지 값만을 가질수 있는데 비해서 아날로그 출력핀은 0V~5V

사이의 전압 값 (256단계)을 가질 수 있다. 엄밀히 따지면 PWM방식으로 동작하므로 순수

아날로그 방식은 아니다.

(5) 인터럽트 ( 2,3번 핀 )

2번핀과 3번핀은 인터럽트(interrupt) 기능을 가진다. 인터럽트 처리(interrupt handling)라는

것은 이벤트를 처리하는 데 사용되는 기능으로서 특정한 신호가 발생했을 때 정해진 동작을

수행하여야 하는 경우 사용되는 방식이다. 예를 들어서 버튼이 눌려진 시점에서 (또는 떼어진

시점에서) 어떤 작업을 수행해야 하는 경우다.

(6) 그 외 기능들

아두이노 우노 보드는 3.3V의 전압도 공급할 수 있다. 이는 USB만 연결한 경우도 마찬가지이다.

AREF 핀은 아날로그 핀의 기준 전압을 설정하는 용도로 사용된다.

다른 기기와의 통신 기능은 다음과 같다.

시리얼 통신 : 0번, 1번 핀

SPI 통신 : ICSP 헤더핀

TWI (I2C) 통신 : A0, A1 핀

시리얼 통신 방식 외에는 일반적으로 사용 빈도가 낮지만 기기간 통신이나 일대 다 통신을

하는 경우 SPI, TWI 통신이 널리 사용된다.

ww

w.fi

rstb

ot.c

o.kr

Page 7: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

7 | 페 이 지

2. BreadBoard MB-102 830P

브레드보드(Breadboard), 속칭 빵판 또는 빵틀은 전자 회로의 (일반적으로 임시적인) 시제품을

만드는 데 사용하는 재사용할 수 없는, 초기 인쇄회로기판과 비슷하다. 일반적인 브레드보드는

버스 스트립으로 알려진, 내부연결 전기단자의 스트립이 있고, 주장치의 일부나 격리된 블록처럼

한쪽이나 양쪽은 전원선을 확장하도록 끼워져 있다. 현대의 무땜납 브레드보드는 천공아래의

많은 납이 도금된 스프링 클립이 있는 플라스틱 구멍이 뚫린 블록으로 구성되며, 두개의 일련

패키지(Dual In-Line Package)인 집적회로(IC)는 블록의 중앙선을 벌려서 삽입할 수 있다.

내부연결 전선과 (축전기, 저항기, 코일 등과 같은 부품들) 각각 부품핀은 회로 위상을 완성하기

위해서 여전히 남는 구멍에 삽입할 수 있다.

브레드보드는 전자제품 시제품을 만들거나 계속 회로 수정이 있을 때 PCB기판을 계속 뜰수

없어서 손쉽게 납땜없이 회로를 시험해 볼 수 있는 도구이다. 주로 실험이나 실습용으로 많이

사용 한다.

브레드보드를 처음 사용하는 사람이면 저 브레드보드의 구멍들이 모두 같아 보일 것이다.

하지만 브레드보드에 내부에 금속이 있는데 각기 다르게 세로방향 가로방향으로 배치되있어서

꼽는 방법이 있다.

그림 오른쪽 의 브레드보드 위쪽(A)과 아래쪽(D)을 보면 파란색 선과 빨간색 선이 지나가는

부분이 있는데, 그 부분을 (버스)부분 이라 부르며, 빨간색은 + 파란색은 – 전원 선을 연결한다.

그리고 중간에 검은색 부분(B,C) 을 보면 세로로 5칸씩 구멍이 있는데 이 부분을 (IC영역/부품영역)

이라고 하며, 부품영역에 위 아래로 5칸씩 되있는데 이 것은 위 아래 서로 5칸씩 격리되어있고

위에 5칸 아래 5칸은 서로 전기가 통하지 않는다.

ww

w.fi

rstb

ot.c

o.kr

Page 8: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

8 | 페 이 지

3. RC-522 RFID Module (CARD,KEY)

RFID (Radio-Frequency Identification) 는 주파수를 이용해 ID를 식별하는 SYSTEM으로

일명 전자태그로 불린다. RFID 기술이란 전파를 이용해 먼 거리에서 정보를 인식하는

기술을 말한다. 여기에는 RFID 태그 와, RFID 판독기 가 필요하다.

태그는 안테나와 집적 회로로 이루어지는데, 집적 회로 안에 정보를 기록하고 안테나를

통해 판독기에게 정보를 송신한다. 이 정보는 태그가 부착된 대상을 식별하는 데 이용된다.

쉽게 말해, 바코드와 비슷한 기능을 하는 것이다. RFID가 바코드 시스템과 다른 점은 빛을

이용해 판독하는 대신 전파를 이용한다는 것이다. 따라서 바코드 판독기처럼 짧은

거리에서만 작동하지 않고 먼 거리에서도 태그를 읽을 수 있으며, 물체를 통과해서 정보를

수신할 수도 있다.

우리가 흔히 쓰는 버스카드, 신용카드, 현관문전자키 등에 많이 쓰이고 있다.

*** 내용참고 : https://ko.wikipedia.org/wiki/RFID

이번 예제에 사용할 RFID 모듈은 NXP 사의 RC-522 칩을 사용한 리더기 이다.

RC-522 칩은 passive 방식(카드를 reader에 가져다 대면 작동), 13.56Mhz 주파수를 통해

작동하는 RFID를 지원한다. ISO14443A 프로토콜 호환되는 태그를 지원한다고 하며,

매우 낮은 전력으로 작동하므로(30mA이하) Arduino UNO의 3.3V 전원 공급만으로

작동한다. ( 반드시 3.3V 전원을 쓰고 5V 에 전원을 공급하지 않도록 주의 한다 )

ww

w.fi

rstb

ot.c

o.kr

Page 9: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

9 | 페 이 지

< RC-522 RFID PIN 배열 >

< 아두이노 연결 구성 >

ww

w.fi

rstb

ot.c

o.kr

Page 10: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

10 | 페 이 지

RC-522 RFID Arduino Uno

SDA (RX) D10

SCK D13

MOSI D11

MISO (TX) D12

IRQ -

GND GND

RST -

3.3V 3.3V

PASSIVE Buzzer Arduino Uno

S D8

- GND

스케치를 하기전에 아래 싸이트에서 AddiCoreRFID 라이브러를 다운받아 아두이노 IDE

라이브러리 폴더에 저장하여 라이브러리를 설치한다.

http://www.addicore.com/v/vspfiles/downloadables/Product%20Downloadables/RFID_RC522

/AddicoreRFID.zip

상기 아두이노와 RFID-RC522 구성시 이장치가 핀이 이동할 수 없는 SPI bus를 사용하고

있기 때문에 그림처럼 동일하게 구성되어야 한다. 핀 11, 12, 13은 아래 테이블과 동일하게

고정되어야 하고, RST, IRQ는 사용자가 명시할 수 있다.

또한 앞서 설명했듯이 5V 가 아닌 3.3V 전원을 사용하여야 한다. 5V 사용시 RFID 에

과전류가 발생하여 기기가 망가질 수 있으니 주의 하여야 한다.

ww

w.fi

rstb

ot.c

o.kr

Page 11: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

11 | 페 이 지

< RC-522 RFID 동작 스케치 예제 > *** 다운로드 받은 파일에 예제소스 포함됨

#include <AddicoreRFID.h>

#include <SPI.h>

#define uchar unsigned char

#define uint unsigned int

//4 bytes tag serial number, the first 5 bytes for the checksum byte

uchar serNumA[5];

uchar fifobytes;

uchar fifoValue;

AddicoreRFID myRFID; // create AddicoreRFID object to control the RFID module

/////////////////////////////////////////////////////////////////////

//set the pins

/////////////////////////////////////////////////////////////////////

const int chipSelectPin = 10;

const int NRSTPD = 5;

const int speakerPin = 8; //스피커가 연결된 디지털핀 설정

//Maximum length of the array

#define MAX_LEN 16

void setup()

Serial.begin(9600);

// start the SPI library:

SPI.begin();

// Set digital pin 10 as OUTPUT to connect it to the RFID /ENABLE pin

pinMode(chipSelectPin,OUTPUT);

digitalWrite(chipSelectPin, LOW); // Activate the RFID reader

pinMode(NRSTPD,OUTPUT); // Set digital pin 10 , Not Reset and Power-down

digitalWrite(NRSTPD, HIGH);

myRFID.AddicoreRFID_Init();

ww

w.fi

rstb

ot.c

o.kr

Page 12: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

12 | 페 이 지

void loop()

uchar i, tmp, checksum1;

uchar status;

uchar str[MAX_LEN];

uchar RC_size;

uchar blockAddr; //Selection operation block address 0 to 63

String mynum = "";

str[1] = 0x4400;

//RFID 태그의 타입을 리턴

status = myRFID.AddicoreRFID_Request(PICC_REQIDL, str);

if (status == MI_OK) //MIFARE 카드일때만 작동

tone(speakerPin,2000,100);

Serial.println("RFID tag detected");

Serial.print(str[0],BIN);

Serial.print(" , ");

Serial.print(str[1],BIN);

Serial.println(" ");

//RFID 충돌방지, RFID 태그의 ID값(시리얼넘버) 등 저장된 값을 리턴함. 4Byte

status = myRFID.AddicoreRFID_Anticoll(str);

if (status == MI_OK) //MIFARE 카드일때만 작동

checksum1 = str[0] ^ str[1] ^ str[2] ^ str[3];

Serial.println("The tag's number is : ");

Serial.print(str[0]);

Serial.print(" , ");

Serial.print(str[1],BIN);

Serial.print(" , ");

Serial.print(str[2],BIN);

Serial.print(" , ");

Serial.print(str[3],BIN);

Serial.print(" , ");

Serial.print(str[4],BIN);

Serial.print(" , ");

Serial.println(checksum1,BIN); ww

w.fi

rstb

ot.c

o.kr

Page 13: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

13 | 페 이 지

// 본인이 TEST 하는 CARD 의 넘버를 확인하여 입력한다

if(str[0] == 78) //RFID 태그의 ID값이 78번이면 BUS 카드

Serial.print("BUS CARD\n");

else if(str[0] == 182) //RFID 태그의 ID값이 182번이면 DOOR 카드

Serial.print("DOOR CARD\n");

Serial.println();

delay(1000);

myRFID.AddicoreRFID_Halt(); //Command tag into hibernation

ww

w.fi

rstb

ot.c

o.kr

Page 14: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

14 | 페 이 지

4. I2C + 1602 LCD Module

1602 Character LCD는 1줄에 16개의 문자씩 2줄을 보여주는 LCD 모듈 이다.

하지만 해당 LCD 를 그냥 사용하게 되면 Pin 의 수가 많고 배선도 복잡해져

I2C 인터페이스 모듈과 결합하여 사용하면 단 4개의 선으로 LCD 를 조작 할 수 있다.

I2C(Inter Integrated Circuit)버스는 마이크로프로세서와 저속 주변장치 사이의 통신의 용도로

Philips 에서 개발한 규격이다. 두가닥의 선을 사용해서 TWI(Two Wire Interface)라고도 불린다.

I2C 버스는 양방향 오픈 드레인 선인 SCL(Serial Clock)과 SDA(Serial Data)로 이루이져 있으며,

Master-Slave 형태로 동작한다. 속도면에서 다른 방식에 비해 느리지만 하드웨어적으로 간단한

구성과 대화형 protocol 을 만들 수 있고 하나의 버스에 많은 수의 노드를 연결 할 수 있는

특성이 있어 많이 사용된다.

< 1602 LCD Pin 배열 > < I2C Module > ww

w.fi

rstb

ot.c

o.kr

Page 15: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

15 | 페 이 지

참고로 I2C Module 의 종류에 따라 프로그램에서 라이브러리 함수와 LCD Address 표기 주소가

다를 수 있으니 아래 링크 주소 내용을 참고 한다.

또한 I2C+1602 의 동작을 위한 라이브러리는 아래 주소에서 다운받아 라이브러리를

설치한다. ( 라이브러리에 따라 I2C+1602 LCD 동작여부가 다를 수 있다 )

<참고 링크 주소 >

https://arduino-info.wikispaces.com/LCD-Blue-I2C

<라이브러리> :

http://firstbot.ipdisk.co.kr:80/publist/HDD1/Link/Arduino%20Library/NewliquidCrystal_1.3.4.zip

< 아두이노 연결 구성 >

I2C+1602 LCD Arduino Uno

GND GND

VCC 5V

SDA A4

SCL A5

ww

w.fi

rstb

ot.c

o.kr

Page 16: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

16 | 페 이 지

< I2C+1602 LCD 동작 스케치 예제 >

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F,16,2);

// I2C 모듈에 따라 LCD Address 가 다를 수 있다

// 해당 구성에는 0X3F 를 쓰는 모듈을 사용하였다 (참고내용 링크 참조)

void setup()

lcd.init(); // initialize the lcd

lcd.backlight();

lcd.print("Hello, world!");

void loop()

## LCD Function 정리 ##

lcd.init(); // LCD 초기화

lcd.backlight(); // LCD 백라이트 ON

lcd.noBacklight(); // LCD 백라이트 OFF

lcd.noDisplay(); // LCD 표시된 내용 숨김

lcd.display(); // LCD 내용 표시

lcd.cursor(); // 커서 표시

lcd.noCursor(); // 커서를 없앰

lcd.setCursor(0,0); // 해당 LCD 좌표로 커서 이동

lcd.home(); //커서를 0,0 좌표로 이동

lcd.blink(); // 커서를 깜빡임

lcd.noBlink(); // 커서를 깜빡이지 않음

lcd.write(36); // LCD 화면에 값을 출력, 아스키코드 입력 시 해당문자 출력

lcd.print("TEST"); // LCD 화면에 값을 출력

lcd.clear(); // LCD 모든 내용 지움

lcd.scrollDisplayRight(); //lcd 내용을 우측으로 1칸 스크롤

lcd.scrollDisplayLeft(); //lcd 내용을 좌측으로 1칸 스크롤

lcd.autoscroll(); // 출력내용을 자동으로 우에서 좌로 스크롤

LCD Function 참고 : https://www.arduino.cc/en/Reference/LiquidCrystal?from=Tutorial.LCDLibrary

ww

w.fi

rstb

ot.c

o.kr

Page 17: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

17 | 페 이 지

5. 1 digit display Module

숫자 1글자를 표현할 수 있는 7개 LED ( . 포함 8개 ) 가 조합된 부품이다.

각 전자제품이나 디지털 시계 등 숫자를 표기하는 제품에 많이 사용 된다.

< 아두이노 연결 구성 >

ww

w.fi

rstb

ot.c

o.kr

Page 18: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

18 | 페 이 지

1 digit display Module Arduino Uno

1 (e) D6

2 (d) D5

3 (GND) GND

4 (c) D4

5 (dp) D9

6 (b) D3

7 (a) D2

8 (GND) GND

9 (f) D7

10 (g) D8

< 1 digit display Module 동작 스케치 예제 >

byte seven_seg_digits[10][7] =

1,1,1,1,1,1,0 , // = 0

0,1,1,0,0,0,0 , // = 1

1,1,0,1,1,0,1 , // = 2

1,1,1,1,0,0,1 , // = 3

0,1,1,0,0,1,1 , // = 4

1,0,1,1,0,1,1 , // = 5

1,0,1,1,1,1,1 , // = 6

1,1,1,0,0,0,0 , // = 7

1,1,1,1,1,1,1 , // = 8

1,1,1,0,0,1,1 // = 9

;

void setup()

pinMode(2, OUTPUT);

pinMode(3, OUTPUT);

pinMode(4, OUTPUT);

pinMode(5, OUTPUT);

pinMode(6, OUTPUT);

pinMode(7, OUTPUT); ww

w.fi

rstb

ot.c

o.kr

Page 19: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

19 | 페 이 지

pinMode(8, OUTPUT);

pinMode(9, OUTPUT);

writeDot(0); // start with the "dot" off

void writeDot(byte dot)

digitalWrite(9, dot);

void sevenSegWrite(byte digit)

byte pin = 2;

for (byte segCount = 0; segCount < 7; ++segCount)

digitalWrite(pin, seven_seg_digits[digit][segCount]);

++pin;

void loop()

for (byte count = 10; count > 0; --count)

delay(1000);

sevenSegWrite(count - 1);

delay(4000);

ww

w.fi

rstb

ot.c

o.kr

Page 20: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

20 | 페 이 지

6. 4 digit display Module

앞서 1 자리의 숫자를 표시 할 수 있는 1 digit display Module 을 4개로 조합해논 Module 이다.

4 자리의 표시를 할 수 있으며 핀은 위 그림과 같이 12 개로 조합되어 있다.

< 아두이노 연결 구성 >

ww

w.fi

rstb

ot.c

o.kr

Page 21: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

21 | 페 이 지

4 digit display Module Arduino Uno

1 (E) A5

2 (D) A4

3 (DP) A3

4 (C) A2

5 (G) A1

6 (D4) A0

7 (B) D7

8 (D3) D6

9 (D2) D5

10 (F) D4

11(A) D3

12(D1) D2

< 4 digit display Module 동작 스케치 예제 >

*** 1 부터 9999 까지 숫자 증가

int a = 3;

int b = 7;

int c = A2;

int d = A4;

int e = A5;

int f = 4;

int g = A1;

int p = A3; //The decimal point

//Set DIG1, DIG2, DIG3, DIG4

int d1 = 2; //Thousand

int d2 = 5; //Hundred

int d3 = 6; //Ten

int d4 = A0;//One

int val4 = 0; // DIG1 용 변수

int val3 = 0; // DIG2 용 변수 ww

w.fi

rstb

ot.c

o.kr

Page 22: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

22 | 페 이 지

int val2 = 0; // DIG3 용 변수

int val1 = 0; // DIG4 용 변수

const int DELAY = 1000; // led display delay

int val = 0;

int digitpin[5] = -1, d4, d3, d2, d1 ;

#define _0 HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, LOW

#define _1 LOW, HIGH, HIGH, LOW, LOW, LOW, LOW

#define _2 HIGH, HIGH, LOW, HIGH, HIGH, LOW, HIGH

#define _3 HIGH, HIGH, HIGH, HIGH, LOW, LOW, HIGH

#define _4 LOW, HIGH, HIGH, LOW, LOW, HIGH, HIGH

#define _5 HIGH, LOW, HIGH, HIGH, LOW, HIGH, HIGH

#define _6 HIGH, LOW, HIGH, HIGH, HIGH, HIGH, HIGH

#define _7 HIGH, HIGH, HIGH, LOW, LOW, LOW, LOW

#define _8 HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH

#define _9 HIGH, HIGH, HIGH, HIGH, LOW, HIGH, HIGH

int num_bit[10][7] = _0, _1, _2, _3, _4, _5, _6, _7, _8, _9 ;

void setup()

Serial.begin(115200); //Set baud rate 115200

pinMode(d1, OUTPUT);

pinMode(d2, OUTPUT);

pinMode(d3, OUTPUT);

pinMode(d4, OUTPUT);

pinMode(a, OUTPUT);

pinMode(b, OUTPUT);

pinMode(c, OUTPUT);

pinMode(d, OUTPUT);

pinMode(e, OUTPUT);

pinMode(f, OUTPUT);

pinMode(g, OUTPUT);

pinMode(p, OUTPUT);

ww

w.fi

rstb

ot.c

o.kr

Page 23: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

23 | 페 이 지

void loop()

val = millis() / 1000;

val4 = (val / 1000) % 10;

val3 = (val / 100) % 10;

val2 = (val / 10) % 10;

val1 = val % 10;

if (val >= 1000)

clearLEDs();

pickDigit(4);

pickNumber(val4);

delayMicroseconds(DELAY);

if (val >= 100)

clearLEDs();

pickDigit(3);

pickNumber(val3);

delayMicroseconds(DELAY);

if (val >= 10)

clearLEDs();

pickDigit(2);

pickNumber(val2);

delayMicroseconds(DELAY);

ww

w.fi

rstb

ot.c

o.kr

Page 24: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

24 | 페 이 지

if (val >= 0)

clearLEDs();

pickDigit(1);

pickNumber(val1);

delayMicroseconds(DELAY);

void pickDigit(int x)

digitalWrite(d1, HIGH);

digitalWrite(d2, HIGH);

digitalWrite(d3, HIGH);

digitalWrite(d4, HIGH);

digitalWrite(digitpin[x], LOW);

void pickNumber(int n)

digitalWrite(a, num_bit[n][0]);

digitalWrite(b, num_bit[n][1]);

digitalWrite(c, num_bit[n][2]);

digitalWrite(d, num_bit[n][3]);

digitalWrite(e, num_bit[n][4]);

digitalWrite(f, num_bit[n][5]);

digitalWrite(g, num_bit[n][6]);

ww

w.fi

rstb

ot.c

o.kr

Page 25: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

25 | 페 이 지

void clearLEDs()

digitalWrite(a, LOW);

digitalWrite(b, LOW);

digitalWrite(c, LOW);

digitalWrite(d, LOW);

digitalWrite(e, LOW);

digitalWrite(f, LOW);

digitalWrite(g, LOW);

digitalWrite(p, LOW);

void dpoint() //Light the decimal point

digitalWrite(p, HIGH);

ww

w.fi

rstb

ot.c

o.kr

Page 26: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

26 | 페 이 지

7. 8X8 dotmatrix Module

전면에는 8x8 의 LED가 구성 되어 있으며 후면에는 상/하로 8개씩 총 16개의 핀이 있다.

64개의 LED를 단순히 직렬 병렬 연결한 것으로 전광판의 글자나 모듈 여러개를 조합하여

이미지 모양등을 연출 해 볼 수 있다.

< 아두이노 연결 구성 >

*** 자료 출처 : http://www.brescianet.com/appunti/Elettronica/Arduino/corso/Esempio_DOTMATRIX.htm

ww

w.fi

rstb

ot.c

o.kr

Page 27: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

27 | 페 이 지

8X8 dotMatrix Module Arduino Uno

1 (ROW 5) D5

2 (ROW 7) D4

3 (COL 2) D3

4 (COL 3) D2

5 (ROW 8) A0

6 (COL 5) A1

7 (ROW 6) A2

8 (ROW 3) A3

9 (ROW 1) D13

10 (COL 4) D12

11 (COL 6) D11

12 (ROW 4) D10

13 (COL 1) D9

14 (ROW 2) D8

15 (COL 7) D7

16 (COL 8) D6

ww

w.fi

rstb

ot.c

o.kr

Page 28: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

28 | 페 이 지

< 8X8 dotMatrix Module 동작 스케치 예제 >

int pins[17]= -1, 5, 4, 3, 2, 14, 15, 16, 17, 13, 12, 11, 10, 9, 8, 7, 6;

int cols[8] = pins[13], pins[3], pins[4], pins[10], pins[06], pins[11], pins[15], pins[16];

int rows[8] = pins[9], pins[14], pins[8], pins[12], pins[1], pins[7], pins[2], pins[5];

void AllLedON()

for (int i = 1; i <= 8; i++)

digitalWrite(cols[i - 1], HIGH);

digitalWrite(rows[i - 1], LOW);

delay(1000);

AllLedOFF();

void AllLedOFF()

for (int i = 1; i <= 8; i++)

digitalWrite(cols[i - 1], LOW);

digitalWrite(rows[i - 1], HIGH);

void LedON(int r, int c)

AllLedOFF();

digitalWrite(cols[c - 1], HIGH);

digitalWrite(rows[r - 1], LOW);

delay(100);

ww

w.fi

rstb

ot.c

o.kr

Page 29: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

29 | 페 이 지

void setup()

for (int i = 1; i <= 16; i++)

pinMode(pins[i], OUTPUT);

AllLedOFF();

void loop()

int i, c, r;

for (c=1; c<=8; c++)

for (r=1; r<=8; r++)

digitalWrite(rows[r - 1], LOW);

digitalWrite(cols[c - 1], HIGH);

delay(300);

digitalWrite(cols[c - 1], LOW);

for (r=1; r<=8; r++)

digitalWrite(rows[r - 1], HIGH);

for (r=1; r<=8; r++)

for (c=1; c<=8; c++)

digitalWrite(cols[c - 1], HIGH);

digitalWrite(rows[r - 1], LOW);

delay(300);

digitalWrite(rows[r - 1], HIGH);

for (i=1; i<=8; i++)

digitalWrite(cols[i - 1], LOW);

for (r=1; r<=8; r++)

for (c=1; c<=8; c++)

LedON(r,c);

AllLedOFF();

ww

w.fi

rstb

ot.c

o.kr

Page 30: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

30 | 페 이 지

8. 4X4 Keypad Module

키패드 모듈은 16개의 푸시 버튼이 4×4 행렬로 배치되어 있다.

모듈은 총 8개의 핀으로 구성되어 1~4 까지 4개의 핀은 버튼을 가로로 연결하고 있고

5~8까지 4개의 핀은 버튼을 세로로 연결하고 있다.

각 버튼들은 1~4 가로로 연결된 회로와 5~8 세로로 연결된 회로의 교차되는 부분에

위치해 있다. 버튼을 누르면 두개의 회로가 연결된다는 것을 뜻한다.

< 아두이노 연결 구성 >

ww

w.fi

rstb

ot.c

o.kr

Page 31: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

31 | 페 이 지

4X4 Keypad Module Arduino Uno

1 D2

2 D3

3 D4

4 D5

5 D6

6 D7

7 D8

8 D9

< 4X4 Keypad Module 동작 스케치 예제 >

*** Keypad 라이브러리 다운링크 : http://playground.arduino.cc/Code/Keypad#Download

#include <Keypad.h> //keypad 라이브러리

const byte ROWS = 4; //four rows

const byte COLS = 4; //four columns

//define the cymbols on the buttons of the keypads

char hexaKeys[ROWS][COLS] =

'1','2','3','4','5','6','7','8',

'9','A','B','C','D','*','0','#'

;

byte rowPins[ROWS] = 2, 3, 4, 5; //connect to the row pinouts of the keypad

byte colPins[COLS] = 6, 7, 8, 9; //connect to the column pinouts of the keypad

//initialize an instance of class NewKeypad

Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

void setup()

Serial.begin(9600);

ww

w.fi

rstb

ot.c

o.kr

Page 32: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

32 | 페 이 지

void loop()

readKey();

void readKey()

int correct = 0;

char customKey = customKeypad.getKey();//get the key value

if(customKey)

Serial.print("keyValue: ");

Serial.println(customKey);

ww

w.fi

rstb

ot.c

o.kr

Page 33: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

33 | 페 이 지

9. Stepper Motor ULN2003&28BYJ-48 Driver

일반적으로 기계적인 이동량을 정밀하게 제어하는 일에 DC servo motor나 stepping motor가

많이 사용 되고 있으며, 특히 stepping motor는 pulse에 의해 digital적으로 제어하는 것이

가능하므로 micom에서 사용하기에 적합한 motor이다. stepping motor가 DC motor나 AC motor와

크게 다른 점은 모터의 shaft 의 위치를 검출하기 위한 feedback없이, 정해진 각도를 회전하고,

상당히 높은 정확도로 정지할 수 있다는 것이다.

< 아두이노 연결 구성 >

ww

w.fi

rstb

ot.c

o.kr

Page 34: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

34 | 페 이 지

ULN2003&28BYJ-48 Arduino Uno

- GND

+ 5V

N1 D8

N2 D9

N3 D10

N4 D11

< ULN2003&28BYJ-48 동작 스케치 예제 >

#include <Stepper.h> // Stepper Motor 라이브러리

// 2048:한바퀴(360도), 1024:반바퀴(180도)...

const int stepsPerRevolution = 2048;

// 모터 드라이브에 연결된 핀 IN4, IN2, IN3, IN1

Stepper myStepper(stepsPerRevolution,11,9,10,8);

void setup()

myStepper.setSpeed(14);

void loop()

// 시계 반대 방향으로 한바퀴 회전

myStepper.step(stepsPerRevolution);

delay(500);

// 시계 방향으로 한바퀴 회전

myStepper.step(-stepsPerRevolution);

delay(500);

ww

w.fi

rstb

ot.c

o.kr

Page 35: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

35 | 페 이 지

10. SG90 Servo Motor

서보모터는 보통 0~180 각도 사이를 움직이며, 해당 회전 범위 안에서의 위치를 사용자가

설정 가능하다. 동작 범위가 제한적이지만 정확한 위치 제어가 가능하며 제어 방법도 간단하다.

(PWM 신호로 간단히 위치제어) RC카의 방향타, 로봇 관절 등 회전각 제어가 필요한 곳에

광범위하게 사용된다.

< 아두이노 연결 구성 >

ww

w.fi

rstb

ot.c

o.kr

Page 36: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

36 | 페 이 지

SG90 Servo Motor Arduino Uno

GND (brown color) GND

VCC (Red color) 5V

PWM (Orange color) D9

< SG90 Servo Motor 동작 스케치 예제 >

#include <Servo.h> //Servo motor 라이브러리

Servo myservo; // create servo object to control a servo

int pos = 0; // 서보모터 포지션 초기화

void setup()

myservo.attach(9); //PWM 9 번 신호

void loop()

for(pos = 0; pos < 180; pos += 1) // 0 도~ 180 도 사이

myservo.write(pos); // pos 값 만큼 이동 ( 1도씩 )

delay(15); // 서보가 위치에 도달할 때 까지 15초 대기

for(pos = 180; pos>=1; pos-=1) // 반대방향 회전

myservo.write(pos);

delay(15);

ww

w.fi

rstb

ot.c

o.kr

Page 37: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

37 | 페 이 지

11. 5V Relay Module

릴레이는 코일이 전자석으로 되었을 때 철판을 끌어당겨, 그 철판에 붙어있는 스위치부의 접점을

열거나 닫는다. 쉽게 말해 릴레이는 자동으로 컨트롤이 가능한 스위치의 일종으로 작은 전압으로

큰 전압을 컨트롤 하기 위한 부품이다.

신호(제어부의 전원)를 받으면 릴레이가 작동되어 접점이 바뀐다.

신호가 끊어지면 릴레이가 작동되지 않아 다시 원래의 접점으로 돌아온다.

릴레이가 작동할 때 전류는 순간적으로 끌어가므로 다른 모듈들의 전류부족을 조심 해야 한다.

< 아두이노 연결 구성 >

ww

w.fi

rstb

ot.c

o.kr

Page 38: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

38 | 페 이 지

5V Relay Module Arduino UNO

GND GND

VCC 5V

IN D8

< 5V Relay Module 동작 스케치 예제 >

int Relay = 8;

void setup()

pinMode(Relay, OUTPUT);

void loop()

digitalWrite(Relay, HIGH); // relay Switch ON

delay(5000);

digitalWrite(Relay, LOW); // relay Switch OFF

delay(5000);

ww

w.fi

rstb

ot.c

o.kr

Page 39: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

39 | 페 이 지

12. Remote Control / Infrared Receiver Sensor

적외선 송신모듈(Remote Control)에서 전송한 data 를 수신받아 수신 개체 (아두이노) 로

전송한다. 가정에서 사용하는 IR 리모콘등으로 data 를 전송하여 스케치 프로그램 시리얼

모니터로 전송한 data 를 확인 할 수도 있다. 리모콘의 각 버튼마다 고유 코드가 설정되어

있어 Receiver 에서 해당 코드를 전송받아 개체로 전송하여 전송된 코드별로 개체의 각 동작

기능을 설정 할 수 있다.

※ IR receiver Sensor 는 제조사별 제품별로 SIGNAL, GND, VCC 순서가 다를 수 있다.

< 아두이노 연결 구성 >

ww

w.fi

rstb

ot.c

o.kr

Page 40: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

40 | 페 이 지

IR Receiver Arduino UNO

Signal D11

GND GND

VCC 5V

< Remote Control / Infrared Receiver Sensor 동작 스케치 예제 >

*** IRremote 라이브러리 다운링크 : https://github.com/z3t0/Arduino-IRremote

#include "IRremote.h" // IRremote 라이브러리

int receiver = 11; // pin 1 of IR receiver to Arduino digital pin 11

IRrecv irrecv(receiver); // create instance of 'irrecv'

decode_results results; // create instance of 'decode_results'

void setup()

Serial.begin(9600);

Serial.println("IR Receiver Raw Data + Button Decode Test");

irrecv.enableIRIn(); // Start the receiver

void loop()

if (irrecv.decode(&results)) // have we received an IR signal?

translateIR();

irrecv.resume(); // receive the next value

ww

w.fi

rstb

ot.c

o.kr

Page 41: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

41 | 페 이 지

void translateIR() // takes action based on IR code received

switch(results.value)

case 0xFFA25D:

Serial.println(" CH- ");

break;

case 0xFF629D:

Serial.println(" CH ");

break;

case 0xFFE21D:

Serial.println(" CH+ ");

break;

case 0xFF22DD:

Serial.println(" PREV ");

break;

case 0xFF02FD:

Serial.println(" NEXT ");

break;

case 0xFFC23D:

Serial.println(" PLAY/PAUSE ");

break;

case 0xFFE01F:

Serial.println(" VOL- ");

break;

ww

w.fi

rstb

ot.c

o.kr

Page 42: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

42 | 페 이 지

case 0xFFA857:

Serial.println(" VOL+ ");

break;

case 0xFF906F:

Serial.println(" EQ ");

break;

case 0xFF6897:

Serial.println(" 0 ");

break;

case 0xFF9867:

Serial.println(" 100+ ");

break;

case 0xFFB04F:

Serial.println(" 200+ ");

break;

case 0xFF30CF:

Serial.println(" 1 ");

break;

case 0xFF18E7:

Serial.println(" 2 ");

break;

case 0xFF7A85:

Serial.println(" 3 ");

break;

ww

w.fi

rstb

ot.c

o.kr

Page 43: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

43 | 페 이 지

case 0xFF10EF:

Serial.println(" 4 ");

break;

case 0xFF38C7:

Serial.println(" 5 ");

break;

case 0xFF5AA5:

Serial.println(" 6 ");

break;

case 0xFF42BD:

Serial.println(" 7 ");

break;

case 0xFF4AB5:

Serial.println(" 8 ");

break;

case 0xFF52AD:

Serial.println(" 9 ");

break;

default:

Serial.println(" other button ");

delay(500);

ww

w.fi

rstb

ot.c

o.kr

Page 44: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

44 | 페 이 지

13. Dual-axis XY Joystick Module

각종 제어에 많이 쓰이는 조이스틱은 X, Y 축의 움직임을 2개의 Analog 신호로 만들어 주고

Z 축(KEY)으로 누르면 버튼 처럼 동작해서 1개의 Digital 신호로 만들어 준다.

Analog 출력 방식으로 아두이노에 연결하여 로보트 나 모터등의 제어를 쉽게 할 수 있다.

< 아두이노 연결 구성 >

Joystic Module Arduino UNO

GND GND

VCC 5V

X A0

Y A1

KEY(SW) D2

ww

w.fi

rstb

ot.c

o.kr

Page 45: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

45 | 페 이 지

< Joystic Module 동작 스케치 예제 >

int Xin= A0; // X Input Pin

int Yin = A1; // Y Input Pin

int KEYin = 2; // Push Button

void setup ()

pinMode (KEYin, INPUT);

Serial.begin (9600);

void loop ()

int xVal, yVal, buttonVal;

xVal = analogRead (Xin); // X 축

yVal = analogRead (Yin); // Y 축

buttonVal = digitalRead (KEYin); // Z 축 (KEY)

Serial.print("X = ");

Serial.println (xVal, DEC);

Serial.print ("Y = ");

Serial.println (yVal, DEC);

Serial.print("Button is ");

if (buttonVal == HIGH)

Serial.println ("not pressed"); // Z축을 누르지 않았을 때

else

Serial.println ("PRESSED"); // Z 축을 눌렀을 때

delay (500);

ww

w.fi

rstb

ot.c

o.kr

Page 46: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

46 | 페 이 지

14. DHT11 Temperature Sensor

상대 습도와 온도를 측정해 주는 센서로 장시간 사용해도 변화율이 낮다.

온도는 2 °C, 습도는 ± 5% 정도의 오차범위를 갖는다.

< 아두이노 연결 구성 >

DHT11 Temperature Sensor Arduino UNO

+ 5V

Out D2

- GND

ww

w.fi

rstb

ot.c

o.kr

Page 47: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

47 | 페 이 지

< DHT11 Temperature Sensor 동작 스케치 예제 >

*** DHT11 라이브러리 다운링크 : https://github.com/niesteszeck/idDHT11

#include <DHT11.h> // DHT11 라이브러리

int pin=2;

DHT11 dht11(pin);

void setup()

Serial.begin(9600);

void loop()

int err;

float temp, humi;

if((err=dht11.read(humi, temp))==0)

Serial.print("temperature:");

Serial.print(temp); // 온도

Serial.print(" humidity:");

Serial.print(humi); // 습도

Serial.println();

else

Serial.println();

Serial.print("Error No :");

Serial.print(err);

Serial.println();

delay(DHT11_RETRY_DELAY);

ww

w.fi

rstb

ot.c

o.kr

Page 48: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

48 | 페 이 지

15. LM35 Temperature Sensor

LM35 온도센서는 LM35 라는 트랜지스터를 사용하여 주위의 온도를 측정한다.

전압값으로 출력 1도가 증가할때 마다 10mV 가 증가하여 비례한다.

측정범위는 통상 0 ~ 100 도 이다. 섭씨온도는 LM35 계산 공식을 사용한다.

스케치 프로그램 시리얼 모니터로 현재 측정된 온도를 확인 할 수 있다.

< 아두이노 연결 구성 >

ww

w.fi

rstb

ot.c

o.kr

Page 49: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

49 | 페 이 지

LM35 Temperature Sensor Arduino UNO

5V 5V

Output A0

GND GND

< LM35 Temperature Sensor 동작 스케치 예제

const int temperaturePin = 0;

void setup()

Serial.begin(9600);

void loop()

int reading = analogRead(temperaturePin); //센서값 Read

//센서값 섭씨온도로 변환(LM35 계산 공식에 의함)

Serial.print((5.0*reading*100.0)/1024.0); Serial.println(" 도");

delay(1000); //측정 간격 설정 (1초)

ww

w.fi

rstb

ot.c

o.kr

Page 50: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

50 | 페 이 지

16. Water level Sensor

물에도 전기가 통하는 원리를 이용하여 세로로 길게 배치된 전극에 전류를 흘려보내서 전류의

흐름을 측정하여 물이 감지되는지의 여부 또는 물의 깊이(수위)를 측정할 수 있는 센서이다.

센서가 물에 깊이 담길수록 전류는 많이 흐를 것이고 얕을 수록 전류는 적게 흐를 것이다.

< 아두이노 연결 구성 >

ww

w.fi

rstb

ot.c

o.kr

Page 51: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

51 | 페 이 지

Water level Sensor Arduino UNO

- GND

+ 5V

S A0

< Water level Sensor 동작 스케치 예제 >

int analogPin = 0; // Sensor A0

int led = 13; // LED

int val = 0; // 전류변화값

void setup()

pinMode(led, OUTPUT); // LED OUTPUT

Serial.begin (9600);

void loop()

val = analogRead(analogPin); // analogPin 의 변화값(전류값)을 Read

if (val > 100) // val 값이 100이 넘으면 (전류가 100이 넘으면)

digitalWrite(led, HIGH); // LED ON

else // val 값이 100이하면 (전류가 100이하면)

digitalWrite(led, LOW); // LED OFF

Serial.println(val);

delay (500);

ww

w.fi

rstb

ot.c

o.kr

Page 52: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

52 | 페 이 지

17. Flame Sensor

적외선LED를 통해 불꽃에서 감지되는 적외선 파장을 감지하여 이를 아날로그 혹은 디지털 신

호로 변환해 주는 구조이다. 기본적으로 빛을 받으면 전기에너지로 변환시켜 증폭하는 작용을

하며 빛을 많이 받을 수록 생성되는 전기 에너지가 커진다.

불꽃도 결국은 빛 이므로 이를 감지하여 화재여부를 감지하는 센서로 사용이 된다.

< 아두이노 연결 구성 >

Flame Sensor Arduino UNO

- (짧은다리) GND+10KΩ+A0

+ (긴다리) 5V

ww

w.fi

rstb

ot.c

o.kr

Page 53: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

53 | 페 이 지

< Flame Sensor 동작 스케치 예제 >

int Led=13;

int OutputAO=A0;

int val;

float sensor;

void setup ()

pinMode (Led, OUTPUT) ;

pinMode (OutputAO, INPUT) ;

Serial.begin(9600);

void loop ()

sensor = analogRead(OutputAO);

Serial.println(sensor);

if (sensor >= 1) // 불꽃신호감지시(범위설정가능)

digitalWrite (Led, HIGH); // LED ON

else

digitalWrite (Led, LOW); // LED OFF

delay(1000);

ww

w.fi

rstb

ot.c

o.kr

Page 54: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

54 | 페 이 지

18. Sound Sensor

Digital 값을 사용하여 소리를 전기적 신호로 변환하여 입력받는 원리이다.

파란색 부품 윗면의 - 나사를 시계반대 방향으로 돌리면 감도가 증가, 시계방향으로 돌리면

감도가 감소한다. 평소 알고 있는 마이크와 비슷한 원리이다.

음악이나 소리를 감지하여 LED 가 켜지게 하거나 경보를 울리게 할 수 도 있다.

< 아두이노 연결 구성 >

ww

w.fi

rstb

ot.c

o.kr

Page 55: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

55 | 페 이 지

Sound Sensor Arduino UNO

VCC 5V

GND GND

OUT D10

< Sound Sensor 동작 스케치 예제 >

int soundDetectedPin = 10;

int soundDetectedVal = HIGH;

boolean bAlarm = false;

unsigned long lastSoundDetectTime;

int soundAlarmTime = 500;

void setup ()

Serial.begin(9600);

pinMode (soundDetectedPin, INPUT) ;

void loop ()

soundDetectedVal = digitalRead (soundDetectedPin) ;

if (soundDetectedVal == LOW) // 소리가 들리면

lastSoundDetectTime = millis();

if (!bAlarm)

Serial.println("BBangBBang");

bAlarm = true;

else

if( (millis()-lastSoundDetectTime) > soundAlarmTime && bAlarm)

Serial.println("quiet");

bAlarm = false;

ww

w.fi

rstb

ot.c

o.kr

Page 56: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

56 | 페 이 지

19. Clock Module

아두이노 우노 보드는 별도로 타임을 측정 할 수 있는 기능이 없어 RTC(Real Time Clock)

Module 을 사용하여 날짜, 시간등을 확인 할 수 있다. RTC Module 은 여러가지가 있으나

해당 Module 은 DS1302 chip 을 사용한 DS1302 RTC Module 이다.

*** VCC 전원은 3.3V 이다.

< 아두이노 연결 구성 >

ww

w.fi

rstb

ot.c

o.kr

Page 57: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

57 | 페 이 지

Clock Module Arduino UNO

VCC 3.3V

GND GND

CLK D4

DAT D3

RST D2

< Clock Module 동작 스케치 예제 >

*** DS1302RTC 라이브러리 다운링크 : http://playground.arduino.cc/uploads/Main/DS1302RTC.zip

*** Time 라이브러리 다운링크 : https://github.com/PaulStoffregen/Time

#include <Time.h>

#include <DS1302RTC.h>

// Set pins: CE(reset),IO(dat),CLK

DS1302RTC RTC(2, 3, 4);

void setup()

// Setup Serial connection

Serial.begin(9600);

Serial.println("DS1302RTC Read Test");

Serial.println("-------------------");

// Activate RTC module

// digitalWrite(DS1302_GND_PIN, LOW);

// pinMode(DS1302_GND_PIN, OUTPUT);

// digitalWrite(DS1302_VCC_PIN, HIGH);

// pinMode(DS1302_VCC_PIN, OUTPUT);

Serial.println("RTC module activated");

Serial.println();

delay(500); ww

w.fi

rstb

ot.c

o.kr

Page 58: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

58 | 페 이 지

if (RTC.haltRTC())

Serial.println("The DS1302 is stopped. Please run the SetTime");

Serial.println("example to initialize the time and begin running.");

Serial.println();

if (!RTC.writeEN())

Serial.println("The DS1302 is write protected. This normal.");

Serial.println();

time_t t;

tmElements_t tm;

delay(5000);

//시간을 맞춰야할때 주석을 풀어서 설정

/*

tm.Year = CalendarYrToTm(2016);

tm.Month = 6;

tm.Day = 9;

tm.Hour = 21;

tm.Minute = 00;

tm.Second = 00;

t = makeTime(tm);

if(RTC.set(t) == 0) // Success

setTime(t);

Serial.print("RTC set to: ");

printDateTime(t);

Serial.println("");

else

Serial.println("RTC set failed!");

*/

ww

w.fi

rstb

ot.c

o.kr

Page 59: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

59 | 페 이 지

void loop()

tmElements_t tm;

Serial.print("UNIX Time: ");

Serial.print(RTC.get());

if (! RTC.read(tm))

Serial.print(" Time = ");

print2digits(tm.Hour);

Serial.write(':');

print2digits(tm.Minute);

Serial.write(':');

print2digits(tm.Second);

Serial.print(", Date (Y-M-D) = ");

Serial.print(tmYearToCalendar(tm.Year));

Serial.write('-');

Serial.print(tm.Month);

Serial.write('-');

Serial.print(tm.Day);

Serial.print(", DoW = ");

Serial.print(tm.Wday);

Serial.println();

else

Serial.println("DS1302 read error! Please check the circuitry.");

Serial.println();

delay(9000);

// Wait one second before repeating :)

delay (1000);

void print2digits(int number)

if (number >= 0 && number < 10)

Serial.write('0');

Serial.print(number);

ww

w.fi

rstb

ot.c

o.kr

Page 60: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

60 | 페 이 지

//print date and time to Serial

void printDateTime(time_t t)

printDate(t);

Serial.print(' ');

printTime(t);

//print time to Serial

void printTime(time_t t)

printI00(hour(t), ':');

printI00(minute(t), ':');

printI00(second(t), ' ');

//print date to Serial

void printDate(time_t t)

printI00(day(t), 0);

Serial.print(monthShortStr(month(t)));

Serial.print(year(t));

//Print an integer in "00" format (with leading zero),

//followed by a delimiter character to Serial.

//Input value assumed to be between 0 and 99.

void printI00(int val, char delim)

if (val < 10) Serial.print('0');

Serial.print(val);

if (delim > 0) Serial.print(delim);

return;

ww

w.fi

rstb

ot.c

o.kr

Page 61: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

61 | 페 이 지

20. RGB 3 Color Module

RED, GREEN, BLUE 세종류의 광원을 이용하여 색을 혼합하며 여러가지 색상을 표현 할 수 있다.

칼라 LED에 3개의 PWM 채널이 연결되기 때문에 총 256*256*256=16,777,216가지의 조합이

만들어 질 수 있다.

< 아두이노 연결 구성 >

RGB 3 Color Module Arduino UNO

R D11

G D9

B D10

- GND

ww

w.fi

rstb

ot.c

o.kr

Page 62: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

62 | 페 이 지

< RGB 3 Color Module 동작 스케치 예제 >

int redpin = 11; // red LED

int bluepin =10; //blue LED

int greenpin = 9;// green LED

int val;

void setup()

pinMode(redpin, OUTPUT);

pinMode(bluepin, OUTPUT);

pinMode(greenpin, OUTPUT);

Serial.begin(9600);

void loop() // 어두어졌다 밝아졌다 반복

for(val = 255; val > 0; val--) // 점점 어두워짐

analogWrite(redpin, val); // PWM value for red

analogWrite(bluepin, 255 - val); // PWM value for blue

analogWrite(greenpin, 128 - val); // PWM value for green

Serial.println(val); //print current value

delay(1);

for(val = 0; val < 255; val++) // 점점 밝아짐

analogWrite(redpin, val);

analogWrite(bluepin, 255 - val);

analogWrite(greenpin, 128 - val);

Serial.println(val);

delay(1);

ww

w.fi

rstb

ot.c

o.kr

Page 63: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

63 | 페 이 지

21. Ball Switch Sensor

Ball Switch Sensor(진동센서)는 흔들어보면 물체가 내부에서 움직이는 느낌이 난다. 그것이

흔들리면서 진동(움직임)을 감지 한다.

진동을 감지(그림-Connect)하면 디지털신호로 Signal 을 보내게 되어 있다.

< 아두이노 연결 구성 >

Ball Switch Sensor Arduino UNO

S D7

- GND

ww

w.fi

rstb

ot.c

o.kr

Page 64: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

64 | 페 이 지

< Ball Switch Sensor 동작 스케치 예제 >

int Shock=7; //define vibration sensor interface

int val; //define digital varible val

void setup()

Serial.begin(9600);

pinMode(Shock,INPUT);

digitalWrite(Shock,HIGH);

void loop()

val=digitalRead(Shock);//

if(val==HIGH)

Serial.println("OPEN");

else

Serial.println("Close");

delay(50);

ww

w.fi

rstb

ot.c

o.kr

Page 65: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

65 | 페 이 지

22. Photoresistor Sensor

빛의 양, 세기를 감지하는 센서로 실내, 실외 환경의 빛의 양을 측정할 수 있으며 빛의

밝기에 따라 변화되는 광센서(CDS)의 입력 값을 아두이노 시리얼 모니터를 통해 확인

할 수 있다.

< 아두이노 연결 구성 >

Photoresistor Sensor Arduino UNO

+ 5V+10KΩ+A0

- GND

ww

w.fi

rstb

ot.c

o.kr

Page 66: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

66 | 페 이 지

< Photoresistor Sensor 동작 스케치 예제 >

int potpin = 0;

int ledpin=13;

int val = 0;

void setup()

pinMode(ledpin, OUTPUT);

Serial.begin(9600);

void loop()

val = analogRead(potpin); // 조도 값 Read

Serial.println(val);

delay(10);

ww

w.fi

rstb

ot.c

o.kr

Page 67: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

67 | 페 이 지

23. 74HC595N Shift register

시프트 레지스터는 다른 이름으로 Serial to Parallel Converter 로 불린다.

시리얼(직렬)로 입력되는 데이터를 패러럴(병렬)로 바꿔준다는 말이다.

시프트 레지스터에게 데이터가 전달된다고 알려주는 클럭(clock) 신호와 함께 8개의

핀 출력이 어떻게 되는지 알려주는 시리얼 데이터를 일렬로 보내준다.

8개의 출력을 가지고 있으며 3개의 입력 핀을 가지고 있다. 74HC595N의 동작은

클럭핀(clock pin), 래치핀(latch pin), 데이터핀(data input)으로 동작을 시킨다.

데이터핀에 데이터를 주고 클럭을 주고 래치핀에 신호를 주면 데이터가 74HC595N의

각핀에서 데이터가 병렬로 출력된다.

ww

w.fi

rstb

ot.c

o.kr

Page 68: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

68 | 페 이 지

< 아두이노 연결 구성 , 자료 출처 : bildr.blog >

ww

w.fi

rstb

ot.c

o.kr

Page 69: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

69 | 페 이 지

< 74HC595N Shift register 동작 스케치 예제, 자료 출처 : bildr.blog >

// 상기 표에서 아두이노 연결 ( latch pin, clock pin, data input )

int latchPin = 10;

int clockPin = 9;

int dataPin = 8;

byte leds = 0; // 8개의 LED의 on/off 패턴을 저장하기 위한 변수

void setup()

pinMode(latchPin, OUTPUT);

pinMode(dataPin, OUTPUT);

pinMode(clockPin, OUTPUT);

void loop()

leds = 0;

up_SR();

delay(500);

for(int i = 0; i < 8; i++)

bitSet(leds, i); // bitset함수를 이용하여 leds변수의 비트를 셋팅

up_SR(); // up_SR를 호출, leds변수의 비트패턴을 업데이트

delay(200); // delay time 에 따라 변환 확인

void up_SR()

digitalWrite(latchPin, LOW);

// shiftOut : 1.Data, 2.Clock, 3.비트시작위치, 4.쉬프트레지스터 input data

//MSB - Most Significant Bit : 가장 큰 자릿수의 비트, 즉 가장 왼쪽 비트

//LSB - Least Significant Bit : 가장 작은 자릿수의 비트, 즉 가장 오른쪽 비트

//LSBFIRST,MSBFIRST 에 따라 LED 점등순서바뀜

shiftOut(dataPin, clockPin, LSBFIRST, leds);

digitalWrite(latchPin, HIGH);

ww

w.fi

rstb

ot.c

o.kr

Page 70: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

70 | 페 이 지

24. Passive Buzzer

Passive Buzzer (수동 부저)는 주파수를 만들어 전류를 흘려주면 해당 주파수대로 소리를 낸다.

내장된 회로가 없어 스스로 소리를 낼 수는 없지만 코딩을 통해 원하는 음역대의 소리를 낼 수 있다

< 아두이노 연결 구성 >

Passive buzzer Module Arduino UNO

S D8

- GND

ww

w.fi

rstb

ot.c

o.kr

Page 71: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

71 | 페 이 지

< Passive Buzzer 동작 스케치 예제 >

int buzzer = 8;

void setup()

pinMode(buzzer, OUTPUT);

void loop()

for (int i = 0; i < 80; i++) // 1번 소리 생성

digitalWrite(buzzer, HIGH);

delay(1);

digitalWrite(buzzer, LOW);

delay(1);

delay(50);

for (int i = 0; i < 100; i++) // 2번 소리 생성

digitalWrite(buzzer, HIGH);

delay(2);

digitalWrite(buzzer, LOW);

delay(2);

delay(100);

ww

w.fi

rstb

ot.c

o.kr

Page 72: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

72 | 페 이 지

25. Piezzo Buzzer

Piezzo 부저는 피에조 효과를 이용한 소자인데 피에조 효과란 수정, 세라믹과 같은 일부

물질의 경우 전기적 신호를 주면 물질이 응축, 신장을 하는 효과를 말한다.

여기에 판을 붙여주면 소리가 나는데 이것이 피에조 부저이다. 내부에 회로가 있어 전원을

연결하면 스스로 소리를 낸다. 피에조 부저는 케이스와 판의 크기를 조절해서 특정한

주파수에서 공진이 발생해서 큰소리가 나도록 기구적으로 만든다.

Active 부저와 같은 말로 사용된다.

< 아두이노 연결 구성 >

Piezo buzze Arduino UNO

- D8

+ 5V

ww

w.fi

rstb

ot.c

o.kr

Page 73: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

73 | 페 이 지

< Piezo buzzer 동작 스케치 예제 >

/* Piezo buzzer 를 테스트할 때 간혹 buzzer 의 +, - 가 바뀌어 있는 경우가

있다. 소리가 나지 않거나 할 때 +,- 를 바꿔본다 */

int speakerpin = 8;

int note[] = 2093,2349,2637,2793,3136,3520,3951,4186; //도레미파솔라시도 값 배열 생성

void setup()

int elementCount = sizeof(note) / sizeof(int);

for (int i=0; i < elementCount; i++) //소리(배열값) play

tone(speakerpin,note[i],500);

delay(750);

void loop()

ww

w.fi

rstb

ot.c

o.kr

Page 74: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

74 | 페 이 지

26. 12X12 Key button

버튼을 누르고 있을 때만 ON이 유지되는 스위치(Tact Switch) 이다.

버튼에서 손을 떼면 스위치가 원상복귀됨과 동시에 OFF로 전환 된다.

< 아두이노 연결 구성 >

12X12 Key button Arduino UNO

S D2

- GND

ww

w.fi

rstb

ot.c

o.kr

Page 75: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

75 | 페 이 지

< 12X12 Key button 동작 스케치 예제 >

void setup()

Serial.begin(9600);

//아두이노 풀업저항 사용

pinMode(2, INPUT_PULLUP);

pinMode(13, OUTPUT);

void loop()

int sensorVal = digitalRead(2);

Serial.println(sensorVal);

if (sensorVal == HIGH)

digitalWrite(13, LOW);

else

digitalWrite(13, HIGH);

ww

w.fi

rstb

ot.c

o.kr

Page 76: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

76 | 페 이 지

27. Color LED ( Red, Green, Yellow )

LED(Light Emitting Diode, 발광다이오드)는 순방향으로 전압을 가했을 때 발광하는 반도체 소자이다.

발광 원리는 전계 발광 효과를 이용하고 있다. 발광색은 사용되는 재료에 따라서 다르며 자외선

영역에서 가시광선, 적외선 영역까지 발광하는 것을 제조할 수 있다.

발광 다이오드는 반도체를 이용한 PN 접합이라고 불리는 구조로 만들어져 있다.

발광은 PN 접합에서 전자가 가지는 에너지가 직접 빛 에너지로 변환되기 때문에 거시적으로

열이나 운동에너지를 필요로 하지 않는다. 전극으로부터 반도체에 주입된 전자와 양공은 다른

에너지띠(전도띠나 원자가띠)를 흘러 PN 접합부 부근에서 띠틈을 넘어 재결합한다.

재결합할 때 거의 띠틈에 상당한 에너지가 광자, 즉 빛으로 방출된다.

< 내용 : https://ko.wikipedia.org/wiki/발광다이오드 >

< 아두이노 연결 구성 >

ww

w.fi

rstb

ot.c

o.kr

Page 77: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

77 | 페 이 지

LED Arduino UNO

RED LED + D7

YELLOW LED + D6

GREEN LED + D5

RED LED - 220Ω + GND

YELLOW LED - 220Ω + GND

GREEN LED - 220Ω + GND

< LED 동작 스케치 예제 – 간단 신호등 >

int redLed = 7;

int yellowLed = 6;

int greenLed = 5;

void setup()

pinMode(redLed, OUTPUT);

pinMode(yellowLed, OUTPUT);

pinMode(greenLed, OUTPUT);

void loop()

digitalWrite(redLed, HIGH);

delay(10000);

digitalWrite(yellowLed, HIGH);

delay(2000);

digitalWrite(redLed, LOW);

digitalWrite(yellowLed, LOW);

digitalWrite(greenLed, HIGH);

delay(10000);

digitalWrite(yellowLed, HIGH);

digitalWrite(greenLed, LOW);

delay(2000);

digitalWrite(yellowLed, LOW);

ww

w.fi

rstb

ot.c

o.kr

Page 78: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

78 | 페 이 지

28. Potentiometer

전자회로에서 저항값을 임의로 바꿀 수 있는 저항기이다. 가변저항을 사용하여 저항을 바꾸면

전류의 크기도 바뀐다. 아두이노의 아날로그 포트에 연결하여 시리얼 모니터로 가변저항의

축을 회전할때마다 저항값이 바뀌는(0~1023) 것을 확인해 볼 수 있다.

< 아두이노 연결 구성 >

ww

w.fi

rstb

ot.c

o.kr

Page 79: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

79 | 페 이 지

Potentiometer Arduino UNO

1 GND

2 A0

3 5V

< Potentiometer 동작 스케치 예제 >

void setup()

Serial.begin(9600); //직렬포트 초기화

void loop()

int sensorValue = analogRead(A0); //아날로그 입력값 읽기

Serial.println(sensorValue); //입력값을 직렬포트로 출력

ww

w.fi

rstb

ot.c

o.kr

Page 80: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

80 | 페 이 지

29. 저항 ( resistor )

주된 전기적 특성이 저항(resistance) 이 되도록 제조된 회로소자를 저항기(resistor)라 한다.

저항기는 전류를 조절함으로써 전기회로에서 전압 또는 전류를 제어하는 필수 적인 소자이다.

이상적인 저항기는 어떤 파형의 양단전압에 대해서도 어느 순간에나 정확히 비례하는 전류가

흐르는 저항기이다. 저항기에는 크기와 형태가 다른 여러 종류가 있으나 저항기는 용도에 따라

고정저항기(fixed resistor) 와 가변저항기(variable resistor) 로 나눌 수 있다.

아래는 고정 저항기의 띠 색상으로 저항값을 확인하는 방법이다. 하지만 띠색상이 잘 안보이거나

색상별로 구성된 각 형식을 외우기 힘드므로 멀티미터 라는 계측 장비로 측정하는 것이 합리적이다.

< 띠 색상으로 저항값 확인 >

ww

w.fi

rstb

ot.c

o.kr

Page 81: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

81 | 페 이 지

< 별책 >

1장. 아두이노 IDE 설치

아두이노 기능을 제어하는데 여러 컴퓨터 명령어들이 있는데 이러한 명령어들을 조합한 소스

코드를 스케치(Sketch)라고 한다. 이 용어는 아두이노에서 프로그램 코드를 칭하는데 사용한다.

아두이노 소프트웨어 다운로드 사이트에서 아두이노 통합 개발 환경을 다운받을 수 있다.

이 통합 개발 환경은 소스 코드를 쓰고 편집 기능을 제공하고 아두이노 하드웨어가 이해할 수

있는 명령어로 컴파일을 지원하며 아두이노 보드에 이 명령어들(실행코드)을 업로드하는 기능을

제공하고 있다.

기본적으로 프로그램 하기 위해서는 프로그램툴을 설치해야 한다. 아두이노 공식 홈페이지로

가서 다운받은 후 설치를 진행 하면 된다.

STEP 1 ) 아두이노 홈페이지 방문, 아두이노 프로그램 다운로드 / 설치

홈페이지 주소 : http://www.arduino.cc/

다운 받을 프로그램 : https://www.arduino.cc/en/Main/Software

ww

w.fi

rstb

ot.c

o.kr

Page 82: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

82 | 페 이 지

( DownLoad 받은 아두이노 설치 실행파일 )

< 아두이노 IDE 설치 과정 >

설치가 완료되면 바탕화면에 Arduino 바로가기가 생성된다.

설치 중 Arduino USB Driver 설치 유무 팝업이 뜨면 설치를 진행 해도 되며

프로그램 설치 이후에도 별도로 Arduino USB Driver 를 설치 할 수 있다.

ww

w.fi

rstb

ot.c

o.kr

Page 83: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

83 | 페 이 지

STEP 2 ) 프로그램 메뉴에서 보드와 포트 설정

아두이노 우노를 가지고 있다면 다음과 같이 Arduino/Genuino Uno 를 선택한다.

일반적으로 아두이노 IDE 를 설치할 때 아두이노 드라이버가 설치된다.

그래서 자동으로 이 부분에서 아두이노 포트가 보여진다.

지금까지 아두이노 프로그램을 설치하는 방법과 PC 와 아두이노를 연결하여 프로그램 에서 보드와

포트설정까지 진행을 해 보았다. 가장 기본적인 셋팅이 끝났으니 기초적인 아두이노 프로그램의

기초적인 C 언어 문법에 대해 알아본다. ww

w.fi

rstb

ot.c

o.kr

Page 84: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

84 | 페 이 지

2장. 아두이노 프로그램을 위한 기초 C 언어 문법

1. 아두이노 프로그램 기본 구조

아두이노 프로그램의 기본 구조는 2개의 몸통으로 구분된다. 첫번째 구조는 실제 일을 하기 전

준비를 하는 단계이다. setup() 이라고 하는 이름이다. 두번째 구조는 실제 일을 하는 단계이다.

loop() 라는 이름이다.

1) setup()

setup() 함수는 아두이노가 시작되는 처음단계에서 한번만 실행된다. 다음처럼 어떤 핀을

출력으로 사용한다면 먼저 그 핀을 출력으로 쓴다고 알려주는 역할로 사용된다.

ww

w.fi

rstb

ot.c

o.kr

Page 85: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

85 | 페 이 지

첫째 줄은 setup() 함수를 시작한다는 뜻이고, 둘째 줄의 기호는 여기서부터 시작이라는

뜻이다. 마지막 줄에 있는 를 만날 때까지 모든 것이 setup() 의 내용이 된다.

pinMode(13, OUTPUT);

pinMode() 함수는 아두이노의 핀을 입력으로 사용할 것인지 출력으로 사용할 것인지 선택

하게 해준다. OUTPUT 은 출력으로 쓰겠다는 뜻이다. 아두이노의 13번 핀은 전류를 흘려서

바깥으로 내보낼 수 있다. 이 전류로 LED 를 켜서 전기가 흐르는지 안흐르는 지를 확인

할 수 있다. 참고로 pinMode() 를 통해서 13번 핀을 출력으로 선택했다는 것이 13번 핀에

전류가 흐른다는 뜻은 아니다. 출력으로 정의 됐고, 그 출력은 5V가 될 수도 있고, 0V 가

될 수도 있다. setup() 은 처음부터 끝까지 한번만 실행하고 끝이 난다.

※ 주의 : 아두이노 함수는 대소문자를 구별하므로 타이핑할 때 대소문자 구분을 꼭 확인하

여야 한다. 항상 명령의 끝은 ; 로 마무리 한다. 즉, ; 를 만나기 전까지는 프로그램은

아직 끝이 나지 않았다고 판단한다.

2) Loop()

준비단계로 13번 핀을 출력으로 설정했다. 13번 핀에 전기가 흐르게 해본다.

13번 핀에 LED 를 연결하고 전기를 흐르게 해서 불이 켜지게 해본다.

이것은 Loop() 에서 한다.

ww

w.fi

rstb

ot.c

o.kr

Page 86: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

86 | 페 이 지

setup() 에서 13번 핀을 출력으로 쓰겠다고 정의했고 loop() 에서는 그 13번 핀을 사용해서

전기를 흐르게 하든지 혹은 흐르지 않게 하든지 하면 된다. 아두이노의 13번 핀에 LED 의

한쪽 발은 연결하고, 다른 한쪽발은 0V에 연결한다. 전기는 높은 곳에서 낮은 곳으로 흐른다.

LED 의 한쪽 발이 5V 에 연결되어있고, 다른 한쪽 발이 0V에 연결되어 있다면 5V에서 0V로

전기가 흐른다.

참고로 저항을 하나 연결해 준다. 아두이노에서 나오는 전류가 약해서 LED 가 손상되지는

않으나, 아두이노에 직접 연결하는 경우가 아니라면 LED 에 너무 많은 전류가 흐르게 되면

LED 가 고장이 날 수 있고 보드에 손상을 줄 수 있다.

200 Ω 에서 500 Ω 사이의 저항을 하나 연결해 주면 된다. 13번 핀과 LED 사이에 연결

하거나 혹은 GND 와 LED 사이에 해도 된다.

( LED 의 +, - 극성에 주의 한다, 보통 다리가 두개인 LED 는 긴다리가 + 이다 )

digitalWrite() 함수는 ()안에 2개의 내용이 들어간다. digitalWrite() 안에 들어가는 2개의 내용은

첫째, 어떤 핀을 사용 할 까와 둘째 그 핀에 전기를 흐르게 할까 말까이다.

13번 핀에 전기를 흐르게 하겠다(5V)면 13 과 HIGH 를 넣어주면 된다.

반대로 흐르지 않게 하겠다(0V)면 LOW 를 넣어주면 된다.

loop() 는 처음부터 끝까지 실행한 다음 다시 처음으로 돌아간다. 이것을 끝없이 반복한다.

아두이노에 전기가 공급되는 한 계속된다.

그래서 위의 loop() 는 그냥 계속 13번에 연결된 LED 가 불이 켜진 채로 그대로 있다.

불이 켜졌다 꺼졌다를 하기 위해 다음과 같이 바꿔본다.

digitalWrite(13, LOW)

ww

w.fi

rstb

ot.c

o.kr

Page 87: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

87 | 페 이 지

digitalWrite(13, LOW) 라는 것을 추가했다. loop() 는 처음부터 끝까지 실행한 후 다시 처음

으로 돌아간다고 했으니까 13번 핀에 전기를 흘렀다(HIGH)가 그 다음에는 전기가 흐르지

않았다(LOW)를 계속 반복하게 된다. 그러나 LED 가 깜빡이지 않고 그냥 켜져 있다.

이유는 전기가 흐르고 흐르지 않고를 반복하는 시간이 너무 짧기 때문에 눈에는 그냥

커져있는 것으로 보인다. 그러면 깜박이게 하려면 어떻게 하면 될까? 켜지고 꺼지는 사이에

충분히 눈으로 깜박거리는 것을 확인 할수 있도록 시간을 넣으면 된다. 아두이노 에서는

기본적으로 delay() 라는 함수를 지원한다. delay() 라는 함수는 ()안에 mili second 인 1/1000

초의 배수를 넣게 된다. 즉, () 안에 1000 을 넣으면 1초 동안 아무것도 하지 않고 잠시 멈춰

있게 된다. delay(“시간”) 는 주어진 “시간”동안 아무것도 하지 말고 정지해 있으라고 하는

명령이다.

Delay(1000)

Delay(1000) 이라는 함수를 넣었다.

하지만 실제로 실행해보면 깜박이지 않는다. 계속 켜져 있다.

내용을 보면 처음 LED 를 켜고 1초를 기다리다가 LED 를 끄지만, 끄자마자 바로 LED 를

켜기 때문에 끄고 켜는 사이 시간이 매우 짧으므로 계속 켜져 있는 것으로 보인다.

그래서 아래와 같이 delay(1000) 을 추가로 넣어줘야 한다.

ww

w.fi

rstb

ot.c

o.kr

Page 88: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

88 | 페 이 지

이렇게 하면 처음 LED 를 켜고 1초 기다리다가 LED 를 끄고 1초를 기다리다가 다시 LED 를

켜기 때문에 LED 가 깜빡 거리는 것을 눈으로 확인 할 수가 있다.

3) 괄호의 의미

c 언어 문법에서 괄호는 문단을 의미한다. "" 바로 다음이 시작이 되고, "" 의 바로 앞이

끝이 된다.

로 둘러싸인 문단은 의미상 하나로 처리된다.

함수의 내용은 시작하는 과 끝나는 사이에 들어간다.

4) 세미콜론 ( ; )

세미콜론 (;) 은 반드시 명령의 끝에 붙어야만 한다. 한 줄에 명령을 하나만 써야 한다는 제약은

없다. 여러 명령을 한 줄에 써도 되지만, 각 명령의 끝에 ; 를 붙여야 한다.

5) 주석

프로그램을 하다보면 설명을 넣고 싶은 곳이 있다. 설명은 나중에 다시 이 프로그램을 살펴볼때

예전에 했던 일을 왜 이렇게 했는지 기록하는 것이다.

전체 주석은 /* 이렇게 시작하고 */ 이렇게 끝난다. /* 과 */ 사이에 있는 모든 것은 눈에는

보이지만 프로그램에서는 없는 것으로 간주한다.

간단하게 한 줄 짜리 설명을 붙이고 싶을 때 설명의 앞에 // 를 넣으면 // 이후에 줄의 끝까지

나오는 모든 것은 주석이 된다. /* */ 과는 달리 줄의 끝 부분이나 혹은 한 줄로 설명할 수 있는

간단한 주석을 달 때 사용된다.

ww

w.fi

rstb

ot.c

o.kr

Page 89: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

89 | 페 이 지

즉, 주석은 프로그램과 아무런 상관이 없다. 오직 주석은 나중에

소스를 보는 사람을 위한 설명이다. 한달 후에 혹은 일년 후에 내가 만들었던 소스를 다시 수정

하거나 비슷한 다른 프로그램을 만들려고 할 때 내가 만들었지만 생소한 기분을 느낀다.

그럴 때 적어둔 설명(주석)을 보면서 내가 이 부분을 왜 이렇게 만들었는지 다시 알게 해 주는

기능이다.

6) 변수

변수라는 것은 "변할 수 있는 수"로 어떤 값을 저장할 수 있는 공간을 의미한다. 이를테면 빈

박스와 같다. 이 박스에는 양파도 담을 수 있고, 당근도 담을 수 있다. 어떤 박스는 크기가

작아서 계란 하나만 담을 수 있고 또 어떤 박스는 플라스틱 용기로 되어 있어서 물을 담을

수 있다. 변수는 컴퓨터 메모리에 차지하는 공간을 의미한다. 거기에 작은 숫자만 저장할 수

있는 변수도 있고, 큰 숫자를 저장할 수 있는 변수도 있다.

변수를 쓰기 위해서는 먼저 변수를 쓰겠다고 알려야 한다. 이걸 '선언' 이라고 한다.

ww

w.fi

rstb

ot.c

o.kr

Page 90: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

90 | 페 이 지

value 라는 변수를 쓰겠다고 알리는 것이 사용하는 것보다 먼저 있어야 한다.

value 라는 상자에 13 이라는 값이 담겨있다.

변수의 종류는 byte, char, int, long, float 외에도 몇 가지가 더 있다. char 은 문자를 다룰 때,

int 는 정수형 숫자를 다룰 때, long 은 정수형 숫자로 큰 수를 다룰 때, byte 는 작은 숫자로

양수만 다룰 때, float 은 실수형 숫자를 다룰 때 사용한다.

6-1. 지역변수 와 전역변수

위에서 선언된 변수는 어디에 있느냐에 따라 전역변수 또는 지역변수로 다시 분류된다.

함수 안에서 만들어졌으며 지역변수라고 불리고 그 함수 안에서만 사용이 된다.

지역변수는 함수 안에서만 사용되므로 같은 이름이 다른 함수 안에서 새롭게 만들어지고,

사용될 수 있다. 전역변수는 사용에 주의해야 한다. 전역변수와 지역변수가 사용되는 곳을

알아본다.

ww

w.fi

rstb

ot.c

o.kr

Page 91: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

91 | 페 이 지

전역변수의 arealvalue 는 어디서나 사용할 수 있다. 지역변수인 a 는 for 문 안에서만 사용할

수 있다. 또다른 지역변수인 b 는 loop() 안에서만 사용할 수 있다.

6-2. 변수의 종류

6-2.1. byte

0 부터 255 까지의 정수 숫자를 저장할 수 있다.

byte sample = 125;

6-2.2. char

키보드에 나와있는 문자나 숫자 하나를 저장할 수 있다. 단 한글을 저장할 수는 없다.

문자나 숫자를 저장할 때 '' 를 사용한다.

char sample = 'A'; char sample = '2';

6-2.3. int

-32,768 부터 32765 까지의 정수 숫자를 저장할 수 있다.

int sample = 10000;

6-2.4. long

-2,147,483,648 부터 2,147,483,647 까지의 정수 숫자를 저장할 수 있다.

int sample = 214748364; int sample = 21474 * 9876;

6-2.5. float

-3.4028235E+38 부터 3.4028235E+38 까지의 실수 숫자를 저장할 수 있다.

단, 아두이노에서 실수 연산은 속도가 많이 느려지게 된다. 그리고 실수연산은 정확도가 많이

떨어진다. 가능하면 float 같은 실수 변수를 사용하지 않는 것이 좋다.

float sample = 3.1415;

6-2.6. String

엄밀하게는 변수는 아니지만 아두이노에서 String 은 마치 문자열을 저장하고 읽는 일을 하는

변수처럼 사용된다.

String sample = "Remember0416";

ww

w.fi

rstb

ot.c

o.kr

Page 92: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

92 | 페 이 지

7) 연산

7-1. “=” 의 의미

수학에서 "="은 보통 좌변과 우변이 같다는 것을 의미한다. 하지만 프로그램에서 "=" 는

오른쪽에 있는 값을 왼쪽으로 넣으라는 명령이다.

x = x + 10;

x 에 10 을 더한 다음 그 값을 x 에 저장한다. 이것을 더 쉽게 이렇게 쓸 수 있다.

x += 10;

자주 사용하는 1 을 더하는 것과 1 을 빼는 것은 ++, -- 를 사용한다.

x = x + 1; x++; x = x-1; x--;

위의 x = x+1; 과 x++; 는 같은 내용, x = x-1; 과 x--; 는 같은 내용 이다..

7-2. 기본 수학 연산

+, -, *, /, % 이렇게 다섯 가지 기본 수학연산이 가능하다.

+ : 더하기

- : 빼기

* : 곱하기

/ : 나누기

% : 나머지

7-3. 비교

크거나 작거나 같거나를 가지고 참과 거짓을 판별한다.

x == y // x 가 y 와 같다.

만약 x 와 y 가 같은 값이라면 이 결과는 "진실"이 되고, x 와 y 가 다른 값이라면 이

결과는 "거짓"이 된다. 이 외에 다음과 같은 비교가 가능하다.

x > y // x 가 y 보다 크다.

x >= y // x 가 y 보다 크거나 같다.

x < y // x 가 y 보다 작다.

x <= y // x 가 y 보다 작거나 같다.

x != y // x 와 y 가 다르다.

7-4. 논리

비교와 함께 자주 사용된다.

if ( (x > 0) && (x < 10) ) // x 가 0 보다 크다 그리고 x 가 10 보다 작다

ww

w.fi

rstb

ot.c

o.kr

Page 93: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

93 | 페 이 지

&& : 논리곱, 오른쪽과 왼쪽이 모두 참일 때 결과는 참이 된다.

|| : 논리합, 오른쪽 또는 왼쪽, 둘중 하나라도 참이면 결과는 참이다.

! : 부정, 참이면 거짓이, 거짓이면 참이 된다.

( x>0 && x<5 ) // x 가 0 와 5 사이일 때 참

( x>10 || x <5 ) // x 가 10보다 크거나 5보다 작을 때 참

( !x ) // x 가 참이면 거짓이, 거짓이면 참

8) 상수

변수와 달리 상수는 항상 그대로 있는 수를 말한다. 보통 변해서는 안되는 수를 미리 지정

해두는 식으로 사용된다. ( 상수는 지정해두면 변하지 않는다 )

#define SIZE 1024

프로그램의 가장 앞부분에서 이렇게 사용할 수 있다. 또는

const int SIZE 1024;

이렇게 const 를 붙여서 만들 수도 있다. 보통 상수는 변수와 다르다는 것을 나타내기 위해

전체를 대문자로 쓴다.

9) 참과거짓

(a == 12) 는 a 의 값을 읽어와서 그것이 12 인지를 비교해 본다.

12라면 참을 12가 아니라면 거짓을 보낸다. 참은 1 이되고, 거짓은 0 이 된다.

if ( a == 12 ) 할일 ;

a 가 12 일때 (a==12) 는 참(1)이 되고, 그래서 "할일"을 하게 된다.

10) HIGH / LOW

아두이노에서 HIGH 는 1 을 의미하고 이는 ON 또는 5V 나 3.3V 의 전원이 들어가는 것을

의미한다. 반대로 LOW 는 0 을 의미하고, OFF 나 0V 즉, GND 에 연결되었다는 것을 뜻한다.

digitalWrite(13, HIGH); // 13번 핀에서 5V(또는 3.3V) 를 내보낸다.

digitalWrite(13, LOW); // 13번 핀이 GND(0V) 에 연결된다.

11) if 조건문

11-1. if 문

if 조건문은 조건이 참일때만 실행된다.

if (a==13) // 조건부분

// 조건이 참이면 안의 내용을 실행한다.

ww

w.fi

rstb

ot.c

o.kr

Page 94: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

94 | 페 이 지

11-2. if, else 문

if 문과 함께 조건이 거짓일 때만 실행되는 else 도 있다.

if (조건)

// 조건이 참일때 실행

else

// 조건이 거짓일때 실행

(예제)

if (inputvalue <=200) // 입력으로 들어온 값이 200 이하일때

digitalWrite(13,HIGHT); // 13번 PIN 에 LED 켜짐

else // 200 이하가 아닐때는

digitalWrite(13,LOW); // LED 꺼짐

if 와 else if 를 사용해서 [만약 ~ 이면] ... [그렇지 않고 만약 ~ 이면]... 의 구문을 만들

수 있다.

if (inputvalue <=200)

// 첫번째 조건을 만족할 때 할일들

else if (inputvalue > 500)

// 두번째 조건을 만족할 때 할일들

else

// 첫번째, 두번째 조건을 모두 만족시키지 못할 때 할일들

ww

w.fi

rstb

ot.c

o.kr

Page 95: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

95 | 페 이 지

12) For 반복문

다음과 같은 구문으로 일정 횟수만큼 명령을 반복한다.

for ( 초기화; 조건; 증감표현)

반복할 일들

초기화는 변수를 만들어서 초기화 시킬 수도 있고, 외부에서 만들어진 변수를 사용할 수도 있다.

조건은 변수를 사용해서 조건에 맞을 때만 아래 안에 있는 내용을 실행한다.

증감표현은 안의 내용을 끝까지 실행시킨 다음 실행된다.

(예제)

for (int i=0; i<20; i++)

digitalWrite(13, HIGHT);

delay(500);

digitalWrite(13. LOW);

delay(500);

13) While 반복문

while 반복문은 조건이 만족되는 한 무한히 반복된다.

while ( i>3 )

명령문1

명령문2

명령문3

변수 i 가 3 보다 크면 내부의 명령문 1,2,3 이 반복적으로 실행된다.

명령문3 이 실행된 다음 ( i > 3 ) 의 조건을 만족하는지 판단 한 후 만족하면 다시 명령문1 부터

실행된다. ( i > 3 ) 이 거짓이라면 while 문 블럭을 벗어난다.

14) do, While 반복문

while 문은 조건이 거짓이면 블록 내부의 명령문을 한번도 실행하지 않는다.

명령문을 최소한 한번 실행 시키기 위해서는 조건을 뒤로 보내는 do, while 이 있다.

ww

w.fi

rstb

ot.c

o.kr

Page 96: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

96 | 페 이 지

do

명령문

while (조건)

(예제) 아날로그 센서의 값을 읽은 뒤 x 가 100 보다 작으면 계속해서 센서를 읽게 한다.

do

x=readSensors(); // 센서값을 읽어서 x 에 저장

delay(50); // 50ms 동안 대기

while( x<100 ); // x 가 100 보다 작으면 반복

15) 아두이노 내부 함수들

15-1. pinMode(pin, mode)

void setup() 안에서 특정 핀의 입력과 출력을 지정하기 위해 사용된다.

pinMode(13, OUTPUT); // 13번 핀을 출력으로 지정한다

pinMode(12, INPUT); // 12번 핀을 입력으로 지정한다

pinMode(11, INPUT PULLUP); // 11번 핀을 입력으로 지정한다. 풀업된다.

여기서 풀업, INPUT_PULLUP 의 의미는 내부적으로 20kΩ 저항이 핀과 VCC (5V) 사이에

들어간다는 것을 의미한다. OUTPUT 으로 지정해서 출력으로 만들었을 때 핀은 최대 40mA

까지 전류를 흘려보낼 수 있다. 이 전류는 LED 를 밝게하기에는 충분하지만 릴레이나 모터

등을 작동시키기에는 부족하다.

외부 장치와 출력핀이 바로 연결된 때 과도한 전류가 흐르게 되면 아두이노의 ATMEGA MCU

가 손상될 수 있다. OUTPUT 으로 지정된 핀에는 일반적으로 360 Ω 에서 1 kΩ 정도의 저항을

직렬로 연결해 주는 것이 좋다.

15-2. digitalRead(핀)

아두이노 입력으로 설정된 핀의 디지털값을 읽는다. 일반적으로 핀에 걸린 전압이 VCC

이면 1 을, GND 이면 0 을 반환한다.

value = digitalRead(12); // 12 번 핀을 읽어서 value 변수에 저장

ww

w.fi

rstb

ot.c

o.kr

Page 97: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

97 | 페 이 지

15-3. digitalWrite(핀,값)

아두이노 출력핀에 정해진 값을 출력한다. 값은 0 과 1 둘 중의 하나이다.

digitalWrite(11,1); // 11번 핀에 1 (+5V) 을 출력한다.

digitalWrite(11, HIGH); // HIGH 는 1 과 같고 LOW 는 0 과 같다

두줄은 같은 내용이다.

15-4. analogRead(핀)

아두이노에서 아날로그 값을 읽는 것은 0V 에서 5V 사이의 어떤 전압값을 읽는 것이다.

아두이노는 10 개의 비트로 값을 분해한다. 10개의 비트는 2 의 10 승을 의미하고 이는

총 1024 가 된다. 즉, 최소값은 0 이고 최대값은 1023 이 된다. 아두이노 아날로그 입력을

받을 때 주의할 것은 아날로그 입력핀에 들어오는 전압이 0V에서 5V 사이가 되어야 한다.

이 값을 벗어난 전압이 들어올 경우 아두이노 내부 회로가 망가질 수 있다.

value=analogRead(A0); // 핀 A0 에 연결된 값을 읽어온다.

// value 값에 저장되는 값은 최소 0 에서 최대 1023 사이 정수이다.

15-5. analogWrite(핀,값)

핀에 아날로그 값을 쓴다. 이때 핀은 pwm 출력이 가능한 핀만 가능하다.

pwm 은 보드에서 번호 옆에 ~ 표시가 있는 핀만 사용할 수 있다.

UNO 의 경우 3,5,6,9,10,11 핀이 pwm 이 가능하고, analogWrite() 로 값을 쓸 수 있다.

analogWrite(3,127); // 아날로그 출력핀 3 번에 127 의 값인 2.5V를 출력

쓸 수 있는 값은 0 부터 255 까지로 분해능이 8 비트이다. 최대 256 단계까지 가능하다.

pwm 은 2ms 의 시간 안에서 256 단계로 나누어 일부는 1 을, 나머지는 0 을 출력하는

방식이다. 이것을 2ms 의 주기로 반복한다.

pwm 이란 (puls width modulation) 의 약자로 펄스의 폭을 조절 하는 것이다.

아두이노에서는 2ms 즉, 0.002 초 안에서 ON 과 OFF 를 나눠서 나가는 출력을 조절한다.

그래서 엄밀하게는 Digital Analog Converter 가 아니지만 모터를 제어하거나 온도를 제어

하거나 LED 빛의 세기를 제어 할 때는 pwm 을 ADC(ANALOG TO DIGITAL CONVERTER) 로

사용 할 수 있다.

아두이노 보드에 있는 핀 번호 옆에 물결 (~) 표시가 있는 핀이 pwm 출력이 가능한 핀이다.

15-6. delay

delay 는 주어진 시간만큼 아무것도 하지 않고 기다린다.

시간의 단위는 ms 이고, 1000ms 는 1초가 된다.

delay(1000); // 1000ms 즉, 1초 동안 기다림

ww

w.fi

rstb

ot.c

o.kr

Page 98: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

98 | 페 이 지

delay() 함수를 쓸 경우 주의할 점은 함수 실행 중인 시간동안 다른 작업을 하지

못한다는 것이다. 만약 스위치입력을 받아야 한다면 delay() 함수의 사용을 잘 고려해서

써야 한다. delay() 되는 시간에 스위치 작동을 시키면 아두이노에서는 스위치 입력을

인식하지 못할 수도 있다.

15-7. millis()

현재 시간을 반환한다. 현재 시간은 아두이노에 전원이 들어온 뒤로 흐른 시간을 의미한다.

시간의 단위는 ms이다. milis() 함수를 사용해서 시간을 저장할 때는 unsigned long 타입의

변수를 사용한다.

unsigned long value;

value = milis();

milis() 함수를 사용해서 아두이노가 중간에 정지하지 않는 delay()을 만들 수 있다.

15-8. 디버깅

Serial.begin(rate) : setup() 함수의 내부에 시리얼통신 속도를 설정한다.

Serial.read() : 시리얼 데이터를 읽어 들인다.

Serial.available() : 시리얼 포트로부터 시리얼 데이터의 바이트 크기를 읽어 반환한다.

Serial.flush() : 시리얼 포트안에 존재하는 데이터를 비운다.

Serial.print(data) : 데이터를 시리얼포트로 전송한다. 일반적으로 아두이노 보드에 있는

어떤 값(문자열)을 PC 쪽으로 보낼때 사용한다.

Serial.println() 은 Serial.print() 를 보낸 후 마지막에 줄바꿈 신호를 덧불인다.

즉, Serial.println() 을 쓰면 문자를 시리얼통신 창에 쓴 다음 줄을 바꾸고 새줄의 첫번째

칸으로 커서가 이동한다.

void setup()

Serial.begin(9600); // 속도는 9600

void loop()

// analogValue 에 있는 값을 시리얼 통신 전송 // 줄바꿈 없는 출력

Serial.print(analogValue);

// 문자열을 시리얼 통신으로 전송 // 줄바꿈 있는 출력

Serial.println(“전송문자”);

ww

w.fi

rstb

ot.c

o.kr

Page 99: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

99 | 페 이 지

3장. 아두이노 라이브러리(Library) 추가 / 사용 하기

아두이노를 사용하다보면 새로운 센서나 모듈등을 사용할 때 가장 많이 찾게 되는것이

라이브러리 이다. 아두이노에서는 기본 함수들과 클래스정도는 직접 헤더파일을 추가해주지

않아도 컴파일 과정에서 자동으로 라이브러리가 추가되기 때문에 별다른 작업없이 사용할 수 있다.

기본적인 LED제어나 간단한 센서 정도는 라이브러리 없이 간단하게 아날로그 값이나 디지털 값의

입출력을 통해 값을 읽어오고 전송할 수 있으나, 좀 더 나아가 여러 기능을 가진 센서,모듈들을

사용하기 위해서는 제조사나 인터넷 각종 사이트에서 제공하는 라이브러리가 있어야지만

제어가 가능하다. 라이브러리가 없다고 완전히 제어가 불가능한 것은 아니지만 그만큼 사용자가

여러 기능을 직접 만들어서 구현해야 하기 때문에 코딩이 상당히 번거로운 작업으로 변하게 된다.

아두이노가 설치된 프로그램 경로에 libraries 란 폴더가 존재한다.

폴더안에는 그 라이브러리의 함수들을 정리해 놓은 헤더파일(.h)과 소스파일(.cpp)이 존재한다.

또한 그 라이브러리를 사용한 간단한 예제소스또한 같이 존재한다.

기본 이외의 기능이 필요해 라이브러리를 사용 할 경우에는 소스 제일 처음부분에

#include <라이브러리 헤더파일>을 입력한다.

#include <라이브러리 헤더파일>

만약 소스가 문법상의 오류 없이 완벽하게 구현이 됐더라도 라이브러리 헤더파일을 상단에

선언해주지 않게 되면 컴파일 도중에 오류가 뜨게 된다.

컴파일 도중에 에러가 뜬다면 헤더파일을 제대로 선언해 주었는지 확인해보는 일도 필요하다.

아두이노가 기본적으로 제공해주는 라이브러리 이외에 인터넷에서 개인 또는 아두이노 페이지에서

공급하는 라이브러리는 외부라이브러리 또는 확장라이브러리라고 하는데 이런 확장라이브러리는

직접 찾아서 따로 내려받아서 설치해주어야 한다.

모두 다 설치할 필요는 없고 자신이 필요하다 싶을 때 그때그때 가서 지금 필요한 라이브러리만

받아주면 된다.

(아두이노 페이지에서 많은 외부 라이브러리를 지원해준다)

-> http://playground.arduino.cc/Main/GeneralCodeLibrary

(아두이노 관련 많은 라이브러리를 찾을 수 있는 사이트)

-> https://github.com/

ww

w.fi

rstb

ot.c

o.kr

Page 100: Starter Kit for Arduino-V1.0firstbot.ipdisk.co.kr/.../Link/Manual/StarterKitArduino.pdf · 2016-12-22 · Starter Kit for Arduino ( V1.0 ) 2 | 페이지 Arduino Starter Kit 는 Arduino

Starter Kit for Arduino ( V1.0 )

100 | 페 이 지

설치하는 방법은 기본라이브러리가 존재하는 방법과 같이 아두이노폴더에 존재하는 libraries

폴더에 받은 라이브러리를 저장하여 libraries폴더 안에 설치한 외부라이브러리폴더 안에 올바른

헤더파일과 소스파일이 존재할 경우 설치가 끝난다.

라이브러리를 받아 libraries에 저장하였으면 스케치창을 모두 종료하고 다시 재시작한다.

(모두 종료하기 전에는 라이브러리가 보이지 않는다.)

재시작을 한뒤 기본 라이브러리 아래에 따로 설치한 라이브러리가 보인다.

외부의 공개소스로 부터 받은 경우, 초기의 개발도구(버전 1.0.x)에서는 압축이 풀린 상태의 폴더를

기준으로 등록이 가능 했으나, 현재의 버전(버전 1.6.x 등)은 ZIP 파일 자체로 등록이 가능하다.

공개 소스의 예제가 있는 경우, 메뉴 '예제' 역시 동시에 사용할 수 있다.

ww

w.fi

rstb

ot.c

o.kr