You are on page 1of 72

아두이노코딩

스타터키트
사용자 설명서 - 스케치
#코딩공부 #아두이노 #블록코딩 #브레드보드맵 #완전쉬움 #도매키트
사용하기 전 !

1. 사용하기 전 설명서를 꼭 읽어보세요!

2. 스타터키트에는 다양한 부품이 있습니다. 사용하기 전 구성품을 잘 확인해주세요.

3. 부품들이나 점퍼선은 끝이 뾰족해요! 사용하실 때 조심조심!!

4. 전기를 사용하니까 선을 연결할 때 잘 확인해주세요 ^^

5. 모두 다 함께 지금부터 아두이노 코딩의 세계로~~!!!

2
목 차
1. 스타트 키트가 뭐야? · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · (4페이지)
2. 스타터키트에는 뭐가 들어있지? · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · (5페이지)
3. 아두이노 우노를 살펴보자! · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · (6페이지)
4. 컴퓨터에 스케치 코딩을 준비해볼까?· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · (9페이지)
5. 아두이노 학습판을 사용해보자! · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · (15페이지)
6. 브레드보드 맵을 사용해보자! · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · (21페이지)
7. 시작하기에 앞서... · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · (27페이지)
8. 스케치 코딩을 해보자! – 1편 : < 시리얼 모니터 켜기 > · · · · · · · · · · · · · · · · · · · · · · · (29페이지)
9. 스케치 코딩을 해보자! – 2편 : < LED 켜기 > · · · · · · · · · · · · · · · · · · · · · · · · · · · · · (32페이지)
10. 스케치 코딩을 해보자! – 3편 : < 스위치로 수동부저 켜기 > · · · · · · · · · · · · · · · · · · · · (39페이지)
11. 스케치 코딩을 해보자! – 4편 : < 가변저항으로 RGB LED 켜기 > · · · · · · · · · · · · · · · · (47페이지)
12. 스케치 코딩을 해보자! – 5편 : < 다양한 센서 응용하기 > · · · · · · · · · · · · · · · · · · · · · (56페이지)
13. 한번 도전해볼까?! · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · (69페이지)
14. 자주 하는 질문! · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · (71페이지)
3
스타터키트가 뭐야?
- 스타터키트는 아두이노 코딩공부를 시작하는 사람을 위해 만들어진 교육용 키트입니다.

- 아두이노 코딩을 공부하면 아두이노 보드를 통하여 불을 키거나 끄고 무언가를 움직일 수 있습니다.

- 스타터키트로 공부하면 이러한 아두이노 보드의 기본적인 기능을 모두 공부할 수 있습니다!

(디지털 입력 / 디지털 출력 / 아날로그 입력 / 아날로그 출력 (PWM))

- 다양한 블록코딩(스크래치, 엠블럭, 엔트리)을 할 수 있고 일반적인 코딩(스케치)도 할 수 있어요!

- 쉽고 빠르게 공부할 수 있도록 다양한 컨테츠도 제공하고 있습니다 ^^

4
스타터키트에는 뭐가 들어있지?
1 2 3 4 5

아두이노 우노 USB 케이블 1.5M 2단 부품박스 브레드보드 브레드보드 맵

6 7 8 9 10 11 12 13 14 15

RGB LED LED 가변저항 가변저항 캡 택트스위치 스위치 캡 조도센서 수동부저 막대저항 다색 점퍼선 64개
(공통음극)

5
아두이노 우노를 살펴보자!
< 아두이노 우노 핀 맵 > < 왜 아두이노 우노를 쓸까? >
- 아두이노 보드는 여러 종류가 있지만 처음 시작할 때는
아두이노 우노를 주로 사용합니다
- 기본적인 아두이노의 기능을 다 사용할 수 있으면서
다른 보드에 비해 초보자들이 사용하기에 편리합니다.

< 아두이노 우노의 주요 기능 >


- 디지털 입력 / 디지털 출력
- 아날로그 입력
- PWM 출력
- 통신기능 (시리얼 통신 / I2C 통신 / SPI 통신)

6
< 아두이노의 입출력에 대한 기능 설명 - 1 >

- 디지털 : 입력되는 전압을 0 과 1로 구분해서 읽거나, 0V과 5V의 전압 출력을 0과 1로 조절하는 것을 말합니다.
아두이노 우노는 1번 핀부터 13번 핀까지 디지털로 입력 받거나 출력할 수 있습니다.
예) 스위치가 눌러진 상태를 읽기 / LED를 켯다 끄기 등

- 아날로그 : 입력되는 전압을 0 과 1로 읽는 것이 아니라 0V부터 5V 범위의 전압 값을 읽을 수 있는 방법입니다.


일반적으로 아두이노에서 읽을 수 있는 아날로그 입력 값은 0부터 1023까지 입니다.
아두이노 우노는 A0 핀부터 A5 핀까지 아날로그로 입력 받을 수 있습니다.
예) 조도센서를 통해 주변의 밝기를 전압으로 바꿔서 읽기 / 가변저항으로 조절된 전압 값을 읽기 등

- PWM : 0V와 5V를 선택하여 출력하는 일반적인 디지털이 아니라 임의의 출력 값을 조절할 수 있는 방법입니다.
아두이노에서 조절할 수 있는 PWM 또는 아날로그 출력 값은 0부터 255까지 입니다.
아두이노 우노는 3번 / 5번 / 6번 / 9번 / 10번 / 11번 핀을 PWM 출력으로 사용할 수 있습니다.
예) 조도센서를 통해 주변의 밝기를 전압으로 바꿔서 읽기 / 가변저항으로 조절된 전압 값을 읽기 등

7
< 아두이노의 입출력에 대한 기능 설명 - 2 >

- 시리얼 통신 : 가장 기본적인 통신입니다. 데이터를 보내는 선과 데이터를 받는 선이 분리되어 있습니다.


시리얼 통신을 USB 통신으로 바꿔주는 모듈을 통하여 컴퓨터와 데이터를 주고받을 수 있습니다.
아두이노 우노는 0번 / 1번 핀에 연결되어 있으며 시리얼 통신을 USB 통신으로 바꿔주는 내장된 칩이
연결되어 있어서 0번 / 1번 핀은 임의의 용도로 사용이 불가능합니다.

- I2C 통신 : SDA / SCL 두가지 선을 통해서 데이터를 주고 받을 수 있도록 만들어진 통신입니다.


각각 주소 값이 있어서 여러 대를 한번에 연결해서 통신을 주고 받을 수 있습니다.
통신으로 센서 값을 주고 받는 대부분의 아두이노 센서 모듈들은 I2C 통신으로 데이터를 주고 받습니다.
아두이노 우노는 A4 / A5 핀으로 I2C 통신을 하며,
사용자 편의성을 위해 A4 / A5와 연결된 SDA / SCL 핀을 별도로 제공합니다.

- SPI 통신 : 고속으로 많은 데이터를 주고 받을 때 필요한 통신입니다. 아두이노에서는 거의 사용하지 않습니다.

8
컴퓨터에 스케치 코딩을 준비해볼까?
< 스케치 설치 - 1 >
1. https://arduino.cc접속
및 SOFTWARE > DOWNLOADS 클릭!

2. 다운로드에서 운영체제에 맞는
다운로드를 클릭!

9
< 스케치 설치 - 2 >

3. 다운로드를 누르면, 후원 페이지가 나오는데,


JUST DOWNLOAD를 누르면 다운로드가 진행됩니다.

4. 다운로드된 파일의 압축을 푸시면,


아이콘이 나오며, 실행하면 아두이노가 실행됩니다.

10
< 아두이노 컴파일>

1. 컴파일 버튼을 눌러 작성한 코드를 컴퓨터가 이해할 수 2. 컴파일 완료될 경우 하단에 컴파일 완료 메시지가 나옵니다.
있는 정보로 변경합니다. 컴파일 실패시 작성한 코드가 잘못된 것이므로 수정하여 다시
시도합니다.

클릭

<컴파일 성공 이미지> <컴파일 실패 이미지>

11
< 아두이노 연결 및 업로드>

1. 컴퓨터에 USB 케이블을 연결하고 2. 툴 > 보드 > Arduino/Genuino uno 선택


아두이노 우노에 USB 케이블을 연결합니다.

3. 툴 > 포트 > (아두이노가 연결된 포트, COM으로 시작) 선택

* 아두이노 우노 연결이 잘 안될 경우 “자주하는 질문”을 참조해주세요!

12
< 아두이노 연결 및 업로드>

4. 업로드 버튼을 눌러 업로드를 진행합니다. 5. “업로딩…”이라는 문구와 함께 아두이노 보드의 TX, RX LED가
깜빡이며, 아두이노에 컴파일된 데이터가 업로드됩니다.

클릭

13
< 아두이노 연결 및 업로드>
7. 업로드 실패시 아래와 같이 에러 메시지가 나옵니다.
실패이유는 아래와 같습니다.
6. 업로드 성공시 아래와 같이 “업로드 완료.” 텍스트가 출력되며,
1. 툴>보드에서 “Arduino/Genuino uno” 설정 여부 확인
아두이노에 정상적으로 코드가 업로드 된 상태입니다.
2. 툴>포트에서 아두이노 우노가 연결된 포트인지 확인

<업로드 성공 이미지> <업로드 실패 이미지>

14
아두이노 학습판을 사용해보자!
< 아두이노 학습판이란? >

- 아두이노와 브레드보드가 고정되지 않은


상태에서 브레드보드에 부품을 끼우고
점퍼선을 연결하게 되면 사용하기 불편하고
복잡해집니다.
일반적인 사용 예시
- 아두이노 학습판은 아두이노 우노와 브레드보드를 회로연결을 하기에
적절한 위치에 고정하여 회로연결과 아두이노 코딩교육을 더 쉽고 편하게
할 수 있도록 합니다! 아두이노 학습판을 활용한 사용 예시

15
< 아두이노 학습판 조립 순서 1 >
- 아두이노 학습판 구성품을 꺼내고 아크릴 판의 `갈색 보호필름` 을 벗겨놓습니다.

16
< 아두이노 학습판 조립 순서 2 >
- 아크릴 판에 그림과 같이 플라스틱 서포트를 고정하고 고무발을 뒷면 네 귀퉁이에 부착합니다

손으로 고정이 가능합니다!

17
< 아두이노 학습판 조립 순서 3 >
- 아크릴 판에 그림과 같이 플라스틱 서포트를 고정하고 고무발을 뒷면 네 귀퉁이에 부착합니다

18
< 아두이노 학습판 조립 순서 4 >
- 플라스틱 서포트 위에 아두이노 우노를 고정하세요.

19
< 아두이노 학습판 조립 순서 5>
- 브레드보드 뒷면 종이를 벗기고 아래의 그림과 같이 브레드보드를 부착합니다,
- 필요에 따라 아두이노 우노 핀맵 스티커를 부착하시면 공부하실 때 참고하실 수 있습니다^^

완성!

20
브레드보드 맵을 사용해보자!
< 브레드보드와 브레드보드 맵 >

- 브레드보드는 다양한 종류의 부품을


아두이노와 연결하기 위해 사용합니다.

- 브레드보드를 처음 사용할 때, 대부분의


사용자들이 연결 실수가 많아서 사용이 불편합니다.

- 브레드보드 맵은 브레드보드를 더 쉽고 편하게 사용할 수 있도록


부품과 점퍼선의 연결정보를 직관적이고 정확하게 제공합니다!

21
< 근데 잠깐, 브레드보드가 뭐죠? >

- 브레드보드는 기초 전자회로를 공부하기 위해 만들어졌습니다.

- 오른쪽 위의 그림과 같이 일정한 간격으로 구멍이 나있으며 다리가 있는 부품들을


여러 번 꼽았다 분리할 수 있습니다.

- 오른쪽 아래의 그림과 같이 양쪽 끝은 세로방향으로 연결되어 있어 전원선을 연결할 수 있고


안쪽은 가로방향으로 서로 이어져 있어 다른 구멍에 선을 꼽아서 연결할 수 있도록 되어있습니다.

- 브레드보드의 문제점은 전자회로가 커질수록 복잡해져서 불필요한 소모시간이 많아지고


잦은 실수가 발생하는 것으로 이는 코딩교육의 질을 떨어뜨릴 수 있는 중요한 요소입니다.

- 브레드보드 맵을 사용하면 이러한 문제점들을 개선하게 되어


불필요한 소모시간을 줄이고 실수를 방지할 수 있어
코딩교육의 질을 높일 수 있습니다!

< 내부 연결도 >

22
< 브레드보드 맵 표시 설명 1 >

전원선 연결 안내 점퍼선 연결 안내

우노 신호선 연결 안내

23
< 브레드보드 맵 표시 설명 2>

부품 핀 배열 안내

부품 핀 삽입 및 배치 안내

24
< 브레드보드 맵 장착 순서 1 >
- 사용하고자 하는 브레드보드 맵과 양면테이프 2장을 꺼내서 아래와 같이 양쪽 끝 뒷면에 붙여주세요

1 2

25
< 브레드보드 맵 장착 순서 2 >
- 양면테이프를 벗겨서 아래와 같이 +-방향을 잘 확인해서 브레드보드에 붙여주세요^^
브레드보드에 붙일 때 점선위치와 모서리위치를 꼭 확인하시고 붙여주세요!
모서리 확인!

1 2

모서리 확인! 점선 확인!


점선 확인!

완성!

26
시작하기에 앞서...
- 스케치로 프로그램을 업로드 했을 경우 전원만 입력하여도 이전에 업로드한 동작내용이 수행됩니다.
이전에 프로그램과 함께 연동되는 회로가 아닌 다른 회로를 아두이노와 연결한 채로 전원을 입력할 경우
기존에 동작되는 프로그램에 의하여 문제가 발생할 수 있습니다.
반드시 새로운 예제를 시작하기 전 동작이 없는 비어있는 프로그램을 업로드하여 기존 프로그램을 지우도록 합니다.

* 비어있는 프로그램을 업로드하는 방법은 22페이지 참조.

27
< 아두이노 프로그램 초기화 >

1. 스케치 프로그램의 “파일"을 클릭하고 “새 파일“을 클릭합니다. 2. 새로 열린 파일을 아두이노에 업로드합니다.

클릭

* 프로그램을 업로드하는 방법은 12페이지 참조.

28
스케치 코딩을 해보자! 1편 : 시리얼모니터 출력

< 학습준비 - 브레드보드에 회로 연결하기 >

- 아두이노와 PC를 USB 케이블로 연결하고 스케치로 접속합니다.

29
2. 컴파일&업로드
< 시리얼모니터로 Hello, Arduino 출력하기 >
업로드 버튼을 눌러, 아두이노에 작성한 코드를 업로드합니다.

아두이노와 컴퓨터 통신해보기

3. 실행결과
1. 소스코드 작성
스케치내 을 누르면 시리얼 모니터 창이 출력됩니다.
시리얼모니터에 스케치에 작성한 “hello, Arduino”가 출력됩니다.
소스 코드

클릭

명령어

명령어 설명
시리얼 통신 설정 및 시작 명령어, 시리얼통신을 시작하기 위해서는 반드시
Serial.begin(속도) 필요합니다.
• 속도: 시리얼모니터 속도 값(1200,2400, 4800,9600, 19200,
38400 ..)
시리얼모니터에 값을 출력합니다
Serial.print(값) 값: 시리얼모니터에 출력할 값

30
< setup과 loop란? >

void setup()

프로그램이 시작될 때 한 번만 실행되는 곳입니다.


아두이노 핀 설정 등에 주로 사용됩니다.

void loop()
void setup()이 실행된 후 실행되는 곳이며, 계속 반복 실행되는 곳입니다.

31
스케치 코딩을 해보자! 2편 : LED 켜기

< 학습준비 - 브레드보드에 회로 연결하기 >

- 아크릴 학습판에 브레드보드와 아두이노 우노를


올리고 브레드보드 맵 <LED 켜기>를 브레드보드에
장착합니다.

- 브래드보드 맵을 참고하셔서 부품을 끼워 주시고


오른쪽 그림과 같이 점퍼선을 연결합니다.

- 점퍼선을 연결한 후에 아두이노와 PC를 USB 케이블로


연결하고 스케치로 접속합니다.

* USB 연결방법은 13페이지 참조.

32
< 어떤 부품이 사용되는지 알아보자! - LED와 저항 >

1. LED 2. 저항

- LED란 “Light Emitting Diode” 의 약자로 - 저항이란 “전기가 흐르는 것을 방해” 하는 가장 기본적인 전자부품으로
“빛을 발산하는 다이오드” 라는 뜻을 가지고 있습니다. 자신이 원하는 만큼 전기가 흐르도록 할 때 사용합니다.

- 극성이 있어서 한 방향으로만 전기가 흐르도록 되어있으며 - 저항은 용도에 따라서 아주 작은 사이즈부터 매우 큰 사이즈까지 있으며,
“전류 : 전기가 흐르는 량” 에 의해서 밝기가 조절됩니다. 우리가 함께 사용할 저항은 다리가 달려있는 막대저항을 사용합니다!

- 막대저항은 아래와 같이 색 띠를 통해서 저항 값을 읽습니다.

33
해설
< LED 켜기 >
digitalWrite 명령어로 아두이노 핀에 출력하여 LED를 켭니다.
2번핀에 연결된 초록색 LED의 불을 켜봅시다.
2. 컴파일&업로드
업로드 버튼을 눌러, 아두이노에 작성한 코드를 업로드합니다.

1. 소스코드 작성

소스 코드 3. 실행결과
초록색 LED에 빛이 나오는 것을 확인해보세요

명령어
<업로드 전> <업로드 후>
명령어 설명
디지털 핀의 입출력을 설정하는 명령어
pinMode(핀번호, 모드) • 핀번호: 아두이노 디지털 핀 번호
• 모드: INPUT 또는 OUTPUT
디지털 신호를 출력하기 위한 명령어
digitalWrite(핀번호, 신호) * 핀번호: 아두이노 디지털 핀 번호
* 신호: HIGH 또는LOW

34
해설
< LED 밝기 조절하기 >
analogWrite 명령어로 아두이노 핀에 PWM 출력을 하여, 전압을 낮춰
LED의 밝기를 조절했습니다.
노란색 LED 밝기를 조절해봅시다. analogWrite (3, 150);에서 150부분을 0~255 값 중 다른 값으로
변경해보세요. 밝기가 변하는 것을 보실 수 있습니다.
*2번이나, 4번 핀에 연결된 LED들은 PWM을 지원하지 않아 밝기 조절을 할 수
없습니다.
1. 소스코드 작성 2. 컴파일&업로드
업로드 버튼을 눌러, 아두이노에 작성한 코드를 업로드합니다.
소스 코드

3. 실행결과
digitalWrite명령을 통해 출력한 것 보다 밝기가 줄어듭니다.

명령어
명령어 설명
출력값을 조절할 수 있는 아날로그 출력 명령어
analogWrite(핀번호, 값) • 핀번호: 아두이노 PWM 핀번호
• 값: 8비트(0~255) 범위 <업로드 전> <업로드 후>

35
2. 컴파일&업로드
< 여러 개의 LED 켜보기 >
업로드 버튼을 눌러, 아두이노에 작성한 코드를 업로드합니다.

초,노,빨 LED를 모두 켭니다.

3. 실행결과
1. 소스코드 작성
아두이노 핀 2,3,4에 연결된 LED들이 모두 켜집니다.

소스 코드

<업로드 전>

해설
여러 개의 LED를 제어하기 위해서 pinMode와 digitalWrite를 여러 개
사용합니다.
<업로드 후>

36
명령어
< 여러 개의 LED 깜빡이기 1 > 명령어 설명
코드를 멈추는 명령어
초,노,빨 LED를 깜빡이기 delay(시간) • 시간: 밀리초(1/1000초), 1초 = 1000 밀리초

1. 소스코드 작성

소스 코드

해설
LED를 계속 깜빡이기 위해서 loop()에 LED 켜짐/꺼짐 코드를 넣었으며, 1초
간격으로 깜빡이기 위해 LED가 켜지고 1초 대기(delay(1000)), LED가
꺼지고 1초 대기(delay(1000)) 합니다.

2. 컴파일&업로드
업로드 버튼을 눌러, 아두이노에 작성한 코드를 업로드합니다.

37
< 여러 개의 LED 깜빡이기 2 >

3. 실행결과
아두이노 핀 2,3,4에 연결된 LED들이 1초마다 꺼졌다, 켜졌다를 반복합니다.

<업로드 전>

<업로드 후>

38
스케치 코딩을 해보자! 3편 : 스위치로 수동부저 켜기

< 학습준비 - 브레드보드에 회로 연결하기 >

- 아크릴 학습판에 브레드보드와 아두이노 우노를


올리고 브레드보드 맵 <스위치로 수동부저 켜기>를
브레드보드에 장착합니다.

- 브래드보드 맵을 참고하셔서 부품을 끼워 주시고 스위치에


캡을 씌운 후 오른쪽 그림과 같이 점퍼선을 연결합니다.

- 점퍼선을 연결한 후에 아두이노와 PC를 USB 케이블로


연결하고 스케치로 접속합니다.

* USB 연결방법은 13페이지 참조.

39
< 어떤 부품이 사용되는지 알아보자! - 스위치와 수동부저 >

1. 스위치 2. 수동부저

- 스위치는 “전기가 흐르거나 흐르지 않도록 조작” 하기 위해 - 수동부저는 “특정 음을 출력하는 작은 스피커” 로서
사용되는 기본적인 부품으로 용도에 따라서 다양한 종류의 프로그램을 통해서 원하는 음을 출력할 수 있습니다.
스위치가 있습니다.
- 일반적인 디지털 출력으로는 소리가 나지 않으며,
- 우리가 함께 사용할 스위치는 눌렸을 때 전기가 흐르고 각각의 음에 맞는 주파수를 PWM해야 소리가 출력됩니다.
떼었을 때 전기가 흐르지 않는 “택트 스위치” 를 사용합니다!
- 부저에 극성이 있어서 사용하기 전 꼭 확인해야 합니다!
일반적으로 + 표시 또는 기호나 홈이 파여 있는 곳이 양극입니다.

40
풀업저항(pull-up resistance)이란?
< 스위치에 저항을 왜 사용하나요? >
플로팅 현상을 해결하기 위해 저항을 +쪽에 추가한 회로

스위치에 저항을 사용하는 이유는 “플로팅”을 방지하기 위해 “풀업 저항” 5V


회로를 사용하기 때문입니다.

? 저항

스위치
스위치

플로팅(floating)이란? < 풀업저항 미사용 > < 풀업저항 사용 >

회로상 +, – 어느 쪽으로도 지정되지 않은 애매모호한 상태


만약 위 회로에서 +에 저항을 연결하지 않는다면, 아두이노 입장에서는 +인지 –인지를
모르게 됩니다. 스위치를 누르지 않은 상태에서 누름 저항을 통해 5V에 연결됩니다.
여부를 알 수 없습니다. 스위치를 누르지 않은 상태에서는
HIGH, 누른 상태에서는 LOW입니다.

41
< 변수란 > 변수 이름

- 변수에 사용할 이름
변수란 이름 그대로 변할 수 있는 숫자, 문자 등 값을 담아두는 공간
변수 값
변수의 구조
- 변수에 담을 값
- 변수에 담을 수 있는 값은 변수 값의 범위를 초과할 수 없습니다.
(부여한 자료형의 범위를 초과할 경우 문제가 생깁니다.)
변수 타입 변수 이름 변수 값
변수의 범위
- 지역변수: 함수 안에 선언된 변수. 함수 안에서만 사용되고, 함수가 종료되면
변수타입
사라짐
음의 값이 아닌 양의 값만 사용하고 싶을 경우, 자료형 앞에 unsigned를 붙여줍니다.
- 전역변수: 함수 밖에 선언된 변수. 모든 곳에서 접근가능한 변수, 프로그램이
예시) unsigned int의 범위: 0~65,535
실행되는 동안 존재
자료형 크기 범위

문자형 char 1바이트 아스키코드


논리형 boolean 1비트 true 또는 false

byte 1바이트 -128 ~ 127


2바이
정수형 int -32,768 ~ 32767

4바이
long -2,147,483,648~2,147,483,647

4바이
float -3.4028235E+38~ 3.4028235E+38

실수형
4바이
double -3.4028235E+38~ 3.4028235E+38

42
해설
< 스위치 상태를 출력 해보기 1 >
스위치를 사용하기 위해서는 아두이노 핀을 입력으로 설정 해야 하므로,
pinMode(7, INPUT)을 사용했습니다.
택트스위치의 누름 여부를 시리얼 모니터에 출력되게 만들기 스위치 상태를 계속 출력하기 위해 loop() 안에 스위치 상태를
시리얼모니터에 출력하는 코드를 넣었습니다.
* 왜 누르지 않았을 때 1이고, 눌렀을 때 0인 이유는 풀업 저항 회로를 사용했기
때문입니다.

1. 소스코드 작성
2. 컴파일&업로드
소스 코드
업로드 버튼을 눌러, 아두이노에 작성한 코드를 업로드합니다.

명령어
명령어 설명
디지털 핀의 값을 읽는 명령어
digitalRead(핀번호) * 핀번호: 아두이노 디지털 핀 번호

시리얼모니터에 값을 출력합니다. Serial.print 와의 차이점은 출


Serial.println(값) 력값 끝에 개행 문자가 추가되어, 다음 라인에 출력되는 점입니다.
• 값: 시리얼모니터에 출력할 값

43
< 스위치 상태를 출력 해보기 2 >

3. 실행결과
시리얼모니터에 스위치의 누름 상태가 출력됩니다.
떼기 상태일 때 “1“, 누른 상태일 때 “0”

떼기

누르기

44
해설
< 수동부저로 소리 내보기 > tone 를 통해 부저 소리를 출력하고, 1초 뒤 noTone를 통해 부저 소리를
끄고, 1초 뒤 다시 부저 소리 출력을 계속 반복합니다.
수동부저로 소리를 출력해봅니다
2. 컴파일&업로드
업로드 버튼을 눌러, 아두이노에 작성한 코드를 업로드합니다.

1. 소스코드 작성

소스 코드 3. 실행결과
1초 간격으로 부저가 소리 출력, 소리 정지를 계속 반복합니다.

조용~

명령어
명령어 설명
부저 소리를 주파수 값대로 출력해주는 명령어
tone(핀번호, 주파수) • 핀번호: 아두이노 핀 번호
• 주파수: 부저에 출력할 주파수 값
부저 소리를 멈추는 명령어
noTone(핀번호) • 핀번호: 아두이노 핀 번호

45
해설
< 스위치를 누르면 소리나는 부저 >
스위치를 누르면, tone를 통해 부저 소리를 출력하고, 1초 뒤 noTone를
통해 부저 소리를 끕니다.
스위치가 눌리면 부저가 울리게 해봅니다
2. 컴파일&업로드
업로드 버튼을 눌러, 아두이노에 작성한 코드를 업로드합니다.
1. 소스코드 작성

소스 코드 3. 실행결과
스위치를 누르면, 부저가 1초 출력되고, 멈춥니다.

누르기 떼기
조용~

명령어
명령어 설명
조건식의 내용이 참이라면, 해당 블록의 내용을 실행
if(조건식) • 조건식: 참인지, 거짓인지에 대한 조건

A==B 일때, A 와 B 동일 여부
== 예시) 1==1 이라면 true, 1==2 라면 false

46
스케치 코딩을 해보자! 4편 : 가변저항으로
RGB LED 켜기

< 학습준비 - 브레드보드에 회로 연결하기 >

- 아크릴 학습판에 브레드보드와 아두이노 우노를


올리고 브레드보드 맵 <가변저항으로 RGB LED 켜기>
를 브레드보드에 장착합니다.

- 가변저항에 캡을 끼운 후 브래드보드 맵을 참고하셔서


부품을 끼워 주시고 오른쪽 그림과 같이 점퍼선을 연결합니다.

- 점퍼선을 연결한 후에 아두이노와 PC를 USB 케이블로


연결하고 스케치로 접속합니다.

* USB 연결방법은 13페이지 참조.

47
< 어떤 부품이 사용되는지 알아보자! - RGB LED와 가변저항 >

1. RGB LED 2. 가변저항

- RGB LED는 “빛의 3원색을 표현하는 LED“ 로 - 가변저항은 “특정 범위 안에서 저항 값을 조절할 수 있는 부품” 으로
빨강 / 초록 / 파랑 3가지 색상을 조합할 수 있습니다. 크게 슬라이드 타입과 회전 타입이 있습니다.

- 공유하고 있는 핀에 따라서 VCC를 공유하는 공통양극 과 - 모터나 밝기 등 출력 값을 조절해야 할 때 가장 많이 사용되며


GND를 공유하는 공통음극 으로 구분합니다. 용도에 따라 다양한 전자회로 연결방법이 있습니다.

- 우리가 함께 사용할 RGB LED는 공통음극 타입입니다! - 우리가 함께 사용할 가변저항은 회전타입 가변저항이며
0부터 5V 범위로 전압 값을 조절하는 용도로 사용합니다!

+ -
공통양극 공통음극
48
2. 컴파일&업로드
< 가변저항 상태를 출력 해보기1 >
업로드 버튼을 눌러, 아두이노에 작성한 코드를 업로드합니다.

가변저항의 값을 시리얼모니터로 출력합니다.

3. 실행결과
1. 소스코드 작성 가변저항을 돌리면, 시리얼모니터에 가변저항 값이 변경되어 출력됩니다.

소스 코드

오른쪽으로 왼쪽으로
돌리기 돌리기

해설
analogRead를 통해 읽은 값을 시리얼에 출력하기를 1초 간격으로 계속
반복합니다.

49
해설
< RGB LED 켜보기 > RGB LED은 6번이 파랑, 9번이 초록, 10번이 빨강입니다.
이에 맞춰 digitalWrite를 통해 원하는 색을 출력합니다.
RGB LED로 여러가지 색 켜보기 본 예제에서는 각 색깔을 1개씩만 출력했으나, 빨강과 파랑을 동시에 켜서 보라색을
출력하거나, 빨강,파랑,초록을 모두 켜서 흰색을 출력하는 등 색깔을 섞는 것도
가능합니다.

2. 컴파일&업로드
1. 소스코드 작성
업로드 버튼을 눌러, 아두이노에 작성한 코드를 업로드합니다.

소스 코드

3. 실행결과
RGB LED의 색깔이 1초마다 빨강 > 초록 > 파랑 > 꺼짐 순으로 계속
반복됩니다.

50
< 시리얼 모니터로 RGB LED 켜보기 1 >

RGB LED 색깔을 시리얼모니터로 변경해보자

1. 소스코드 작성

소스 코드

명령어
명령어 설명
시리얼통신으로 수신된 데이터가 있는지 확인합니다.
Serial.available(); - 반환 값: 0 또는 1 (수신된 데이터가 있으면1, 아니면 0)

시리얼통신으로 수신된 데이터를 읽습니다.


Serial.read(); - 반환 값: 수신된 데이터

해설
Serial.available()을 통해 시리얼모니터에 데이터가 입력되었다면,
Serial.read()으로 시리얼모니터에 입력된 데이터를 읽어서 각 값에 따라 RGB LED
색깔을 변경합니다.

51
< 시리얼 모니터로 RGB LED 켜보기 2 >
시리얼 모니터에 ‘o’ 전송
2. 컴파일&업로드
업로드 버튼을 눌러, 아두이노에 작성한 코드를 업로드합니다.

시리얼 모니터에
3. 실행결과 ‘r’,’g’,’b’,’o’ 외 전송

RGB LED의 색깔이 시리얼모니터에 입력된 값에 따라 변경됩니다.

시리얼 모니터에 ‘r’ 전송

시리얼 모니터에 ‘g’ 전송

시리얼 모니터에 ‘b’ 전송

52
< 시리얼 모니터 전송 방법 >

전송 버튼을 눌러서 1. ‘r’ 을 아두이노로 2. 전송버튼을 누르면


이곳에 전송할 아두이노로 전송
입력된 텍스트를 전송하고 싶다면, ‘r’을 입력
텍스트를 입력합니다.
아두이노에 전송합니다.

53
< 가변저항으로 RGB LED 밝기 조절하기 >
RGB LED 색깔을 시리얼모니터로 변경되게 하고,
밝기도 가변저항으로 변경되게 해보자

1. 소스코드 작성 명령어
명령어 설명
소스 코드 값의 범위를 다른 범위로 변경합니다. 아두이노에서는 10비트
(0~1023)의 analogRead값을 8비트(0~255)의 analogWrite값
으로 변환할 경우 등에 사용됩니다.
map(값, 원본 최소값, 원본 - 값: 변환할 숫자
최대값, 목표 최소값, 목표 - 원본 최소값: 현재 범위 값의 하한
최대값); - 원본 최대값: 현재 범위 값의 상한
- 목표 최소값: 목표 범위 값의 하한
- 목표 최대값: 목표 범위 값의 상한

해설
가변저항 위치에 따라 RGB LED의 밝기를 변경해야 합니다. 이때 가변저항 값은
analogRead로 읽으며, RGB LED는 analogWrite를 사용하여 출력합니다.
analogRead의 범위는 0~1023이며, analogWrite의 범위는 0~255입니다.
이 범위 차이를 맞추기 위해 map 명령어를 활용하는 것이며, map(analogRead(A0),
0, 1023, 0, 255)처럼 작성합니다.

54
< 시리얼 모니터로 RGB LED 켜보기 2 >
시리얼 모니터에 ‘o’ 전송

2. 컴파일&업로드
업로드 버튼을 눌러, 아두이노에 작성한 코드를 업로드합니다.

시리얼 모니터에
‘r’,’g’,’b’,’o’ 외 전송
3. 실행결과

RGB LED의 색깔이 시리얼모니터에 입력된 값에 따라 변경됩니다. 또,


가변저항을 돌리면 RGB LED의 밝기가 변경됩니다.

가변저항을 왼쪽으로
최대한 돌리면 LED 밝기는
0이 됩니다.
시리얼 모니터에 ‘r’ 전송

가변저항을 오른쪽으로
돌릴수록 밝기가
시리얼 모니터에 ‘g’ 전송 높아집니다.

가변저항을 오른쪽으로
시리얼 모니터에 ‘b’ 전송 최대한 돌리면 LED 밝기는
최대가 됩니다.

55
스케치 코딩을 해보자! 5편 : 다양한 센서 응용하기

< 학습준비 - 브레드보드에 회로 연결하기 >

- 아크릴 학습판에 브레드보드와 아두이노 우노를


올리고 브레드보드 맵 <다양한 센서 응용하기>를
브레드보드에 장착합니다.

- 브래드보드 맵을 참고하셔서 부품을 끼워 주시고


오른쪽 그림과 같이 점퍼선을 연결합니다.

- 점퍼선을 연결한 후에 아두이노와 PC를 USB 케이블로


연결하고 스케치로 접속합니다.

* USB 연결방법은 13페이지 참조.

56
< 어떤 부품이 사용되는지 알아보자! - 조도센서 > < 4편을 시작하기에 앞서! >

1. 조도센서 - 4편은 1편부터 3편까지의 내용을 하나로 합치고 조도센서를 추가하여


응용동작을 구성하였습니다.
- 조도센서는 “밝기에 따라 저항 값이 변하는 부품” 으로
밝을 수록 저항 값이 올라가고 어두울 수록 저항 값이 내려갑니다. - 다양한 센서들을 한번에 동작시키는 프로그램이므로
내용이 많아 블록코딩 설명을 그룹 단위로 진행합니다.
- 전자회로 에서 저항과 특성이 같아서 풀-업 또는 풀-다운 이라는
저항 구조를 활용하여 전압 값을 읽어 밝기를 판단합니다. - 내용이 많아져서 어렵게 느껴질 수 있지만 그룹단위로
차근차근 설명을 따라오면 어느새 완성되어 있을 꺼에요~!
- 우리가 사용할 조도센서는 풀-업 저항 구조를 활용합니다!

57
< 스위치로 LED 옮겨 보기 1 >

버튼을 누르면 LED가 이동되게 만들기

1. 소스코드 작성

소스 코드

58
loop() 에서 전역변수 color를 if문으로 비교하여 LED 색깔을 변경합니다.
< 스위치로 LED 옮겨 보기 2 > 스위치를 누른 부분 마지막에 delay(300)이 있는 이유는 “채터링 현상”을 방지하기
위해서 입니다. 만약 delay(300)을 없애고 실행하면, 원하는 결과와 다르게 버튼이
여러 번 누른 것과 같은 현상이 나와 오동작 합니다.
본 예제에서 함수를 활용했는데, 이곳에서 목적은 재사용성 때문입니다. 만약 함수가
없다면, red()함수 내용을 여러 군데 복사 붙여넣기 해야 할 것 입니다.

2. 컴파일&업로드
업로드 버튼을 눌러, 아두이노에 작성한 코드를 업로드합니다.

3. 실행결과

이동 이동

오른쪽 버튼을 누르면, LED가 빨>노>초 순서로 이동됩니다.

해설

전역변수로 선언된 color는 현재 출력된 LED 색깔을 저장하기 위함 이며, 이동 이동


yellow(), green(), red() 각 함수 호출 시 전역변수 color에 현재의 LED 색깔을
저장합니다.

왼쪽 버튼을 누르면, LED가 초>노>빨 순서로 이동됩니다.

59
< 채터링(chattering) 이란 >

해결방법

회로에 커패시터를 추가하는 방법, 소프트웨어로 떨림 시간 만큼


딜레이를 추가하는 방법 등이 있습니다.

스위치를 누르면, 사람이 인식하기에는 문제가 없어 보이지만,


기계적인 진동에 의해 눌림과 떨어짐이 매우 빠르게 발생합니다.
이 현상 때문에 아두이노에서는 여러 번 눌렸다고 인식하게 됩니다.

60
< 함수란? > 함수의 호출

함수의 구조

반환 타입 함수 이름 매개변수

2. 매개변수전달

3. 결과값 반환
함수 몸체

1. 함수호출

반환타입: 함수의 출력 타입, 함수에서 반환(return)되는 값의 자료형


함수의 장점
함수이름: 함수의 이름, 중복 불가
1. 재사용성: 같은 코드가 여러 번 필요하게 될 때 그것을 하나의 함수로 만들고, 그 함수
매개변수: 함수의 입력 값 를 필요한 곳에서 호출해주기만 하면 됩니다.

함수몸체: 함수가 수행해야할 기능 구현 2. 가독성:각 함수별로 변수가 관리되어 코드가 읽기 쉬워집니다.

61
< 가변저항으로 RGB LED 색 변경해보기 1 >

가변저항을 돌리면, RGB LED 색을 변경해보기

1. 소스코드 작성

소스 코드

62
3. 실행결과
< 가변저항으로 RGB LED 색 변경해보기 2 >
해설
가변저항의 위치를 3등분하기 위해서 map 함수를 사용했습니다. 가변저항을 왼쪽으로
analogRead의 값의 범위는 0~1023이고, RGB LED 색깔은 빨,초,파 이므로 값의 돌리면, 빨간색으로
범위는 1~3입니다. 이를 map 명령어로 표현하면, map(analogRead(A1), 0, 변경됩니다.
1023, 1, 3)입니다.

2. 컴파일&업로드
업로드 버튼을 눌러, 아두이노에 작성한 코드를 업로드합니다.

가변저항을 중앙으로
돌리면, 초록색으로
변경됩니다.

가변저항을 오른쪽으로
돌리면, 파란색으로
변경됩니다.

63
< 밝기에 따른 LED 밝기 변경해보기 1 >

RGB LED의 밝기를 조도센서에 따라 변경해보기

1. 소스코드 작성

소스 코드

64
3. 실행결과
< 밝기에 따른 LED 밝기 변경해보기 2 >
조도센서에 손바닥 등으로 빛을 차단하면, 차단 정도에 따라 LED의 밝기가
해설 변합니다.
조도센서의 밝기에 따라 LED의 밝기를 변경해야합니다.
이때, 조도센서 값은 analogRead로 읽으며, LED는 analogWrite를 사용하여
출력합니다. 조도센서에 가림 판을
analogRead의 범위는 0~1023이며, analogWrite의 범위는 0~255입니다. 붙일수록 밝기가
이 범위 차이를 맞춰 주기 위해 map함수를 활용해서 map(analogRead(A0), 0, 줄어듭니다.
1023, 0, 255)처럼 작성합니다.

2. 컴파일&업로드
업로드 버튼을 눌러, 아두이노에 작성한 코드를 업로드합니다.

조도센서에 가림 판을
떨어뜨릴수록 밝기가
높아집니다.

조도센서를 가리지 않으면,


LED밝기는 더욱
높아집니다.

65
< 코드 합쳐보기 1 >

5편에서 사용된 코드들을 모두 합쳐서 하나의 스케치로 만들어 보기

1. 소스코드 작성

소스 코드

66
< 코드 합쳐보기 2>

67
3. 실행결과
< 코드 합쳐보기 3>
5편에서 실습했던 내용들이 하나의 스케치에서 구동됩니다.

1. A버튼을 누르면, LED가 빨>노>초로 이동하며, B버튼을 누르면 LED가


초>노>빨 순서로 이동됩니다.
2. 가변저항을 돌리면, 범위별로 RGB LED의 색이 빨강, 초록,파랑으로
변경됩니다.
3. RGB LED의 밝기가 조도센서에 따라 변경됩니다.

해설
5편에서 활용된 코드들을 하나의 스케치에 붙여넣기 하여 동시에 실행되는 코드를
작성합니다.

2. 컴파일&업로드
업로드 버튼을 눌러, 아두이노에 작성한 코드를 업로드합니다.

68
한번 도전해볼까?!
< 아두이노 학습키트 >

- 아두이노 코딩키트 시리즈


스타터 / 초보자 / 마스터

- 아두이노 기초학습키트
RFID 스타터키트 / 37종 센서키트
엔트리 기본세트 / 코딩박스

69
< 아두이노 응용키트 >

- 아두이노 쉬움 단계 응용키트
선풍기 / 신호등
가위바위보 / 피아노

- 아두이노 블루RC카 시리즈


기본 / 라인트레이서 / 초음파

- 아두이노 어려움 단계 응용키트


숫자야구로봇 / 뮤직전등
식물키우기 / RGB 3D 액자

* 도매키트 사이트에 오시면 다양한 키트상품들이 준비되어 있습니다!


사이트 주소 : https://smartstore.naver.com/domekit 70
자주 하는 질문!
질문 1. 아두이노 우노를 PC에 연결했는데 인식이 안돼요!
- 점퍼선 연결이나 부품연결이 잘못되었을 경우 전기가 불안정해져서 우노가 잘 인식이 안될 수 있습니다.
- 점퍼선 연결과정에서도 비슷한 증상이 일어날 수 있습니다.
- 점퍼선을 연결하기 전, 아두이노 우노에서 USB를 분리하고 점퍼선과 부품연결을 모두 확인한 후에 USB를 연결해주세요.

질문 2. 스케치와과 연결이 되있는데 동작이 안돼요!


- 시리얼포트가 연결된 상태에서 아두이노 우노를 분리하면 통신은 끊기지만 분리된 상태를 인식하지 못합니다.
- “시작버튼”을 눌러야만 동작됩니다.
- 아두이노 우노를 분리하고 하드웨어 연결에서 다시 연결을 시도하시면 대부분 해결됩니다.
기타 문의사항이 있을 시 연락주시면 자세히 안내해드리겠습니다!

이메일 : bnc@bnc-tech.co.kr
전 화 : 031-413-5600
71
다음에 또 만나요~!

안녕!!

72

You might also like