61
코딩클럽 신송섭 ([email protected]) 1 2015.1.31 코딩클럽 신송섭 왕초보!! 아두이노 따라잡기

코딩클럽 왕초보 아두이노따라잡기 1탄

Embed Size (px)

Citation preview

Page 1: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])1

2015.1.31코딩클럽신송섭

왕초보!!아두이노따라잡기

Page 2: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])2

강사소개

• 이 름 : 신송섭• EMail : [email protected]• FB : www.facebook.com/songsup.shin

Page 3: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])3

목차

• 오픈소스/아두이노• 개발환경에대하여

• 프로그래밍기초

• LED Blink– 실습 #1 - LED On/Off– 실습 #2 - LED 부드럽게 On/Off– 실습 #3 - RGB LED Control

• 외부입력으로 LED 제어하기– 실습 #4 –버튼으로 LED On/Off– 실습 #5 -기울기스위치(Tilt switch)로 On/Off– 실습 #6 –가변저항으로 LED On/Off 제어– 실습 #7 –가변저항으로 LED 밝기제어

• 센서로 LED 제어하기– 실습 #8 –빛센서– 실습 #9 -온도센서

Page 4: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])4

Open Source • Open Source

= Open Source H/W + Open Source S/W

– Open Source SW : Linux, Inkscape, Ecllips, ………– Open Source HW :

• 정의 : 오픈소스문화에서비롯되어생성된소스를공개• 공개범위 : 회로도, PCB 거버화일, BOM, 기구도면, HDL, IC Circuit Layout data, 하드웨어를구동하기위한소프트웨어

• 오픈소스하드웨어프로젝트리스트(http://en.wikipedia.org/wiki/List_of_open-source_hardware_projects)

• Arduino, 3D Printer, Quadcopter, Robot 등등• Raspberry Pi는오픈소스일까?

– 오픈소스라이선스https://wiki.kldp.org/wiki.php/OpenSourceLicenseGuide

http://www.oshwa.org/http://opensource.org/

Page 5: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])5

Open Source왜?

오픈소스하드웨어(OSHW) 플랫폼동향및전망 –유재필, KISA

시장

소비자

생산자

Page 6: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])6

아두이노 - History • 아두이노시작

– Ivrea, Northern Italy– Interaction Design Institute Ivrea (IDII), Masimo Banzi– Hernando Barragan(학생) : Wiring( http://www.wiring.org.co )– Processing : MIT Media Lab– 2005년 IDII 학생들의위해서 Release

Wiring Processing

Arduino H/W

ArdionoIDE

Arduino Platform

Page 7: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])7

아두이노 – Core team

The Arduino core team [from left]—David Cuartielles, Gianluca Martino, Tom Igoe, David Mellis, and Massimo Banzi

http://spectrum.ieee.org/geek-life/hands-on/the-making-of-arduino

Page 8: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])8

아두이노 -장단점

Arduino

저렴

오픈소스

확장성

다양한

라이브러

쉽다(?)

쉬운 통

합환경

Page 9: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])9

Arduino H/W

Page 10: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])10

Open Source H/W

Page 11: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])11

Arduino UNO R3 Board

디지털입출력/PWM 핀

아날로그입출력핀전원입출력

MicroController

USB 커넥터

외부전원입력

리셋버튼I2C, AREF

ICSPUSB to Serial

리셋버튼

전원 LED

Page 12: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])12

Arduino UNO - Shield

Page 13: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])13

Arduino IDE(Intergrated Development Environment)

코딩

(텍스트 편

집기)

컴파일

(컴파일러)

링크

(링커)

디버깅

(디버거)

다운로딩

(임베디드시

스템)

실행

이클립스

AVR Studio

Visual Studio

Page 14: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])14

Arduino -연결

Page 15: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])15

Arduino IDE - Sketch• Sketch다운로드

http://arduino.cc/en/Main/Software

• 설치하기

Page 16: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])16

Arduino - IDE

도구모음메뉴바

알림영역

보드설정/시리얼포트

탭메뉴

시리얼모니터

상태표시줄

화일명

입력영역

IDE 버전

라인번호

Page 17: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])17

Arduino IDE -메뉴바기능알아보기

확인 : 코드에에러가없는지확인하고컴파일

업로딩 : 에러확인,컴파일, 업로드를실행

새화일 : 새스케치를만든다.

열기 : 저장된스케치열기

저장 : 현재작업중인스케치저장

시리얼모니터창열기

Page 18: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])18

Arduino -보드설정

보드 설정

시리얼포트 설정

Page 19: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])19

Arduino –드라이버재설치방법

Page 20: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])20

전기회로

Page 21: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])21

부품 -브레드보드

• 브레드보드는 1971년처음만듬• 시제품을만들고회로를검증하기위한도구

Page 22: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])22

부품 -저항

• 종류 : 고정저항, 가변저항, 시멘트저항, 칩저항, 등등등• 기호 : • 단위 : ohm(Ω, 오옴)

• 고정저항 • 가변저항

왜 사용하는 걸까?

Page 23: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])23

부품 –저항값읽기

주황색

첫번째수

주황색

두번째수

빨간색

승수

금색

오차율

33x100=3300ohm±5%

=3.3kohm±5%

3 3 102

=100

±5%

Page 24: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])24

부품 – LED• LED :전기에너지를빛에너지로변환하는부품• 기호 : • LED는두종류의물질을가지고만드는반도체• 갈륨비소(GaAs), 갈륨인(GaP), 갈륨비소인(GaAsP), 갈륨질소(GaN)등• LED를사용하는이유

– 에너지효율 Up, 전력소모는 Down

– 백열등에비해 1/5 수준의전력만소비– 백열등에비해 15배이상의긴수명– 지구를살리는친환경기술– 다양한색깔을표현할수있음– 빛의색상, 밝기등을손쉽게제어할수있음

Page 25: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])25

부품 -점퍼선

• 점퍼선은부품을연결하는Wire를말함

Page 26: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])26

부품 -버튼• 스위치란전류의흐름을막거나계속흐르게하는용도

• 종류 :

• 연결

Page 27: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])27

Arduino –프로그래밍기초• http://arduino.cc/en/Reference/HomePage• 구조

– 기본구조문 : setup(), loop(),– 제어구문 : if, if … else…, for, switch, while, do while, break, continue, return, goto– 기타구문 : ;, {}, //, /* */, #define, #include– 수연산자 : =, +, -, *, /, %– 비교연산자 : ==, ~=, <, >, <=,>=– 논리연산자 : &&, ||, ! – 포인트연산자 : *, &– 비트연산자 : &, |, ^, ~, <<, >>– 합성연산자 : ++, --, +=, -=, *=, /=, &=, |=

• 변수 : 상수, 변수, 데이터타입, 형변환, …• 함수

– 기본제공함수 : 디지털입출력함수, 아날로그입출력함수, 시간함수, 수학함수, …– 사용자함수

• 라이브러리– 함수들의집합– 기본함수 : EEPROM, Ethernet, Firmata, GSM, LCD, SD, Servo, SPI,… – ..\Arduino\libraries– http://arduino.cc/en/Reference/Libraries

Page 28: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])28

C 프로그래밍기초 -기본• 주석

– /* 주석 */ : 여러줄주석– // 주석 : 한줄주석

• 세미콜론( ; ) : 문장의끝– 문자의끝을의미

• { } : 함수, 반복문, 조건문등에서블럭을정의할때사용함시작/끝을나타내며항상쌍으로이루어져야함

– void setup(){ }– void loop(){ }– for( ){ ~ }– If( ){ ~ } else { ~ }

if( ){if( ){

if( ){}

}}else{}

Page 29: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])29

C 프로그래밍기초 –상수/변수• 상수와변수?

– 상수란 : 항상일정한값.– 변수란 : 변하는데이터, 데이터를저장할수있는공간,

• 선언과초기화

– 선언 : ‘데이터형’’변수이름’ = ‘초기값’;const int led=13; <-상수선언

int led=13; <-변수선언– 초기화

• 상수는선언하면서값을주어짐

• 변수는선언하면서초기화해도되고프로그램중간에넣어도된다.• 상수/변수이름짓기

– 영문대소문자, 숫자, ‘_’만사용함, 대소문자구분됨ex) a, A, Show_Me_The_Money, showmethemoney, showMEtheMoney …

– 특수문자안됨 ex) A#212, B@4%6, …– 띄어쓰기가있으면안됨 ex)add num, show me the money, …– 숫자가맨앞에오는것은안됨 ex) 1aA– 실제변수의기능에따라이름을작명 ex) VResistorVal, RLedPort, BLedPort, …

Page 30: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])30

C 프로그래밍기초 -연산자

연산자 연산의 예 의미

< a<b a가 b보다 작으면

> a>b a가 b보다 크면

== a==b a와 b가 같으면

!= a!=b a와 b가 같지 않으면

<= a<=b a가 b보다 작거나 같으면

>= a>=b a가 b보다 크거나 같으면

연산자 연산의 예 의미 연산자 연산의 예 의미

+ a+b a 더하기 b / a/b a 나누기 b

- a-b a 빼기 b % a%b a 나누기 b 의 나머지

* a*b a 곱하기 b

• 수연산자

• 비교연산자

연산자 연산의 예 의미 연산자 연산의 예 의미

++ a++ a + 1을 의미 += a+=1 a=a+1

-- a-- a – 1을 의미 -= a-=1 a=a-1

• 합성연산자

Page 31: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])31

연산자 사용예 의미

! !a not 연산자, a 가 아니면

&& a&&b and 연산자, a 이고 b

|| a||b or 연산자, a 이거나 b

• 조건연산자

• 사용예

• !a : a가아니면

– if(!(a<3)){ A실행 }

• A && b : a 이고 b일때

– if(analogRead(swPin1) && digitalRead(swPin2)){ }

• A || b : a 이거나 b일때

– if(analogRead(swPin1) || digitalRead(swPin2)){ }

C 프로그래밍기초 -연산자

Page 32: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])32

C 프로그래밍기초 – if 조건문• 문법

• 기능

– 만약, ‘조건 ’이참(True)라면 ‘ ’을실행하고‘조건 ’이거짓(False)이면 ‘ ’을실행한다.

• 사용예(a=3이면) (a=10이면)

if(조건)

{ <- A영역시작‘A 영역’

} <- A영역끝else

{ <- B영역시작‘B 영역’

} <- B영역끝

A 영역

B 영역

if( a < 10 ){

digitalWrtite(13, HIGH);

}

else{

digitalWrite(12, HIGH);

}

if( a < 10 ){

digitalWrtite(13, HIGH);

}

else{

digitalWrite(12, HIGH);

}

Page 33: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])33

C 프로그램기초 – for() 제어문• 문법

• 기능 : 조건식이만족하면영역을실행한다.– 초기값 : 조건식에사용할변수의초기값– 조건식 : 조건문– 증감식 : 변수의증감값

• 사용예

for(초기값;조건식;증감식)

{

실행영역;

}

for(i=0;i<5;i++)

{

digitlaWrite(i, HIGH);

}

delay(1000);

i=

digitalWrite( , HIGH)0

i=i+1

실행

i<5 이면 실행

012345

1234

delay(1000);

Page 34: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])34

• 프로그램에서함수란? 특정한기능을하는제어문, 조건문, 함수들의집합

• 함수구조

“반환값” “함수이름” (“전달인자1”, “전달인자2”,---)

Ex)

digitalWrite(pin, HIGH);

pinMode(pin, OUTPUT);

delay(1000);

randomNumber=random(min,max);

=

• 함수란?

“반환값”

“전달인자1”, “전달인자2”,

함수 f( )

C 프로그래밍기초 -함수

Page 35: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])35

Arduino -프로그램구조1. // 프로그램설명부 : 프로그램동작설명, 제작자, 라이선스, 생성연월일/버전, 등정보부분2. /* Blink3. Turns on an LED on for one second, then off for one second, repeatedly.4.5. This example code is in the public domain.6. */ <-주석끝

7. // 변수및함수정의부8. int led = 13; <-변수정의및초기값설정

9. void setup( ) { <-프로그램시작할때한번만실행됨10. // 입출력핀의초기값11. // 시리얼포트설정12. // 변수초기값13. // 등프로그램시작시한번만실행되거나주변회로에대한초기값을설정하는부분14. }

15. void loop( ) { <-메인실행함수, 반복실행됨

16. // 주실행프로그램부분17. // 무한반복됨

18. }

19. void User_Lib() <-사용자정의함수20. {

21. // 사용자정의함수부분

22. }

Page 36: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])36

Arduino –기본프로그램예제1. /* <-주석시작2. Blink3. Turns on an LED on for one second, then off for one second, repeatedly.4.5. This example code is in the public domain.6. */ <-주석끝7.8. // Pin 13 has an LED connected on most Arduino boards. <-한줄주석9. // give it a name: <-한줄주석

10. int led = 13; <-변수정의및초기값설정

11. // the setup routine runs once when you press reset: <-한줄주석12. void setup( ) { <-프로그램시작할때한번만실행됨13. // initialize the digital pin as an output.14. pinMode(led, OUTPUT); <-핀의사용모드정의함수15. }

16. // the loop routine runs over and over again forever: <-한줄주석17. void loop( ) { <-메인실행함수, 반복실행됨18. digitalWrite(led, HIGH); // LED 켜기19. delay(1000); // 1초동안시간지연20. digitalWrite(led, LOW); // LED 끄기21. delay(1000); // 1초동안시간지연22. }

Page 37: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])37

실습 #1 -사용함수• pinMode();

– 기능 : 디지털입출력핀을입력또는출력으로설정– Syntax

pinMode(pin, mode);– Parameter

pin : 디지털핀번호mode : INPUT or OUTPUT

• digitalWrite();– 기능 : 디지털핀에 HIGH or LOW를쓴다.– Syntax

digitalWrite(pin,mode);– Parameter

pin : 디지털핀번호mode : HIGH or LOW

• dely();– 기능 : 지연– Syntax

delay(time);– Parameter

time : 지연시간(ms), 1000ms = 1sec

Page 38: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])38

실습 #1 - LED On/Off

1. int led5 = 5; 2. int led6 = 6;

3. void setup( ) {4. pinMode(2, OUTPUT); 5. pinMode(3, OUTPUT); 6. pinMode(4, OUTPUT); 7. pinMode(led5, OUTPUT); 8. pinMode(led6, OUTPUT);9. }

10. void loop( ) { 11. digitalWrite(2, HIGH); // LED 켜기12. digitalWrite(3, HIGH); // LED 켜기13. digitalWrite(4, HIGH); // LED 켜기14. digitalWrite(5, HIGH); // LED 켜기15. digitalWrite(6, HIGH); // LED 켜기16. delay(1000); // 1초동안시간지연

17. digitalWrite(2, LOW); // LED 끄기18. digitalWrite(3, LOW); // LED 끄기19. digitalWrite(4, LOW); // LED 끄기20. digitalWrite(led5, LOW); // LED 끄기21. digitalWrite(led6, LOW); // LED 끄기22. delay(1000); // 1초동안시간지연23. }

330ohm

Page 39: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])39

실습 #2 - LED PWM On/Off1. void setup( ) {2. pinMode(2, OUTPUT); 3. pinMode(3, OUTPUT); 4. pinMode(4, OUTPUT); 5. pinMode(5, OUTPUT); 6. pinMode(6, OUTPUT);7. }

8. void loop( ) { 9. int i=0;

10. for(i=0;i<255;i+=10){11. analogWrite(2, i); 12. analogWrite(3, i); 13. analogWrite(4, i); 14. analogWrite(5, i); 15. analogWrite(6, i); 16. delay(250);17. }

18. for(i=255;i<0;i-=10){19. analogWrite(2, i); 20. analogWrite(3, i); 21. analogWrite(4, i); 22. analogWrite(5, i); 23. analogWrite(6, ); 24. delay(250);25. }26. }

analogWrite();- 기능 : 디지털핀에 PWM 신호출력- Syntax

analogWrite(pin, value);- Parameter

pin : 핀번호value : duty cycle( 0 ~255)

0 : always off255 : always on

- PWM(Pulse Width Modulation)

Page 40: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])40

실습 #3 – RGB LED On/Off1. void setup()2. {3. pinMode(9, OUTPUT); 4. pinMode(10, OUTPUT); 5. pinMode(11, OUTPUT); 6. }

7. void loop()8. {9. for(int i=0; i<255;i+=10){10. for(int j=0; j<255; j+=10){ 11. for(int k=0; k<255; k+=10){ 12. analogWrite(9, i);13. analogWrite(10, j);14. analogWrite(11, k);15. delay(5);16. }17. }18. }19. }

330ohm

Page 41: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])41

실습 #4 -버튼입력digitalRead();- 기능 : 디지털핀에 PWM 신호출력- Syntax

digitalRead(pin);- Parameter

pin : 핀번호- 리턴값 : 0(LOW) or 1(HIGH)

10kohm

Page 42: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])42

실습 #4 –버튼입력으로 LED On/Off1. const int buttonPin = 2; // 버튼입력핀설정2. const int ledPin = 13; // LED 핀설정

3. Int buttonState = 0; // 버튼상태값을읽을변수및초기값정의

4. void setup() {5. pinMode(ledPin, OUTPUT); 6. pinMode(buttonPin, INPUT); 7. }

8. void loop(){9. buttonState = digitalRead(buttonPin);

10. if (buttonState == HIGH) { 11. digitalWrite(ledPin, HIGH); // turn LED on: 12. } 13. else {14. digitalWrite(ledPin, LOW); // turn LED off:15. }16. }

Page 43: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])43

실습 #5 –기울기(Tilt) 스위치로 LED On/Off

100kohm

Page 44: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])44

시리얼포트모니터링

1. http://arduino.cc/en/reference/serial2. 프로그래밍방법

- setup() 함수내에 Serial.begin(“baud rate”);- Baud rate : 300, 600, 1200,2400, 4800, 9600,…

- loop() 함수에서출력이필요한변수의값을출력함- Serial.print();- Serial.println(); (with CR/NL)

Page 45: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])45

시리얼함수

• Serial.begin();– 기능 : 시리얼포트의보드레이트를설정– Syntax

Serial.begin(baud_rate);– Parameter

baud_rate : 300, 600, 1200, 2400, 4800, 9600, 14440, 19200, 28800, 57600, 115200값으로셋팅

• Serial.print(); and Serial.println();– 기능 : 시리얼포트로변수값을출력– Sytax

Serial.print(val);Serial.print(val, format);

– Parameterval : 출력값 –숫자, 문자, 문자열, 특수기호(\n,\t,\r, …)format : BIN, OCT, DEC, HEX, 소수점자릿수,

- ExampleSerial.print(78);Serial.print(1.23456);Serial.print(‘N’);Serial.print(“Hello world”);Serial.print(“\n \r”);Serial.print(78, BIN);Serial.print(1.23456,3);

Page 46: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])46

실습 -시리얼통신1. int thisByte = 33;

2. void setup() { 3. Serial.begin(9600); 4. Serial.println("ASCII Table ~ Character Map"); 5. }

6. void loop() { 7. Serial.write(thisByte); 8. Serial.print(", dec: "); 9. Serial.print(thisByte); 10. Serial.print(", hex: "); 11. Serial.print(thisByte, HEX); 12. Serial.print(", oct: "); 13. Serial.print(thisByte, OCT); 14. Serial.print(", bin: "); 15. Serial.println(thisByte, BIN);

16. if(thisByte == 126) {17. while(true) { 18. continue; 19. } 20. } 21. thisByte++; 22. }

Page 47: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])47

실습 #6 –가변저항으로 LED On/Off 시간제어

analogRead();- 기능 : 디지털핀에 PWM 신호출력- Syntax

returnValue = analogRead(pin);- Parameter

pin : 핀번호- 리턴값 : 0 ~ 1023

1번핀

2번핀

3번핀

1번핀

2번핀

3번핀

Page 48: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])48

실습 #6 –가변저항으로 LED On/Off 시간제어1. int sensorPin = A0; // 가변저항입력핀설정2. int ledPin = 13; // LED 핀설정3. int sensorValue = 0; // 가변저항으로부터입력되는값을자장하기위한변수

4. void setup() { 5. pinMode(ledPin, OUTPUT); // LED 핀을출력으로설정6. Serial.begin(9600); // 시리얼포트설정7. }

8. void loop() {9.10. sensorValue = analogRead(sensorPin); // 가변저항으로부터값을읽어들임

11. Serial.print(sensorValue); // 가변저항으로읽어들인값을 PC로전송12.13. digitalWrite(ledPin, HIGH); // LED On14. delay(sensorValue); // 가변저항으로부터입력되는값만큼지연(milliseconds)15.16. digitalWrite(ledPin, LOW); // LED Off

delay(sensorValue); // 가변저항으로부터입력되는값만큼지연(milliseconds)17.18. }

Page 49: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])49

실습 #7 –가변저항으로 LED 밝기제어1. int sensorPin = A0; // select the input pin for the potentiometer2. int red_led = 9 ;3. int blue_led = 10;4. int green_led = 11;5. int sensorValue = 0; // variable to store the value coming from the sensor

6. void setup() { 7. pinMode(red_led, OUTPUT);8. pinMode(blue_led, OUTPUT);9. pinMode(green_led, OUTPUT);10. Serial.begin(9600);11. }

12. void loop() {13. sensorValue = analogRead(sensorPin); // read the value from the sensor:14. Serial.println(sensorValue);15. map_sensorValue=map(sensorValue, 0,1023, 0,255);16.17. analogWrite(red_led, sensorValue/4 ); 18. analogWrite(blue_led, map_sensorValue );19. analogWrite(green_led, sensorValue/4 );

20. }

Page 50: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])50

실습 #8 -밝기에따라 LED On/Off

Photocell, CdS cell, photoresistors, LDR(Light dependent resistor), 광도전 센서

10kohm

Page 51: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])51

실습 #9 -온도센서• 접촉식온도센서

– 써미스터(Thermister)• NTC(Negative Temperature Coefficient Thermister)• PTC(Positive Temperature Coefficient Thermister)• CTR(Critical Temperature Resister Thermister)

– 써모커플(Thermocouple, 열전대)– RTD(Resistance temperature detector, 측온저항계)– 반도체온도센서

• 비접촉식온도센서– 적외선복사온도계

Page 52: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])52

실습 #9 -온도센서 - Thermister• 서미스터

Page 53: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])53

실습 #9 –써미스터온도테이블

Page 54: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])54

실습 #9 -온도센서 -반도체• 반도체온도센서

– 아날로그타입 : LM35, TMP36, …– 디지털타입 : 18B20, DHTX1, SHTX1, …

Page 55: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])55

실습 #9 -온도에따라 LED On/Off

10kohm

Page 56: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])56

실습 #9 –온도에따라 LED On/Off1. int sensorPin = A4; // select the input pin for the potentiometer2. int sensorValue = 0; // variable to store the value coming from the sensor

3. void setup() { // declare the ledPin as an OUTPUT:4. Serial.begin(9600);5. }

6. void loop() {7.8. sensorValue = analogRead(sensorPin); // read the value from the sensor:9. Serial.print(sensorValue);10.11. if(sensorValue < 250){12. digitalWrite(ledPin, HIGH); // turn the ledPin on13. } else {14. digitalWrite(ledPin, LOW); // turn the ledPin off:

}15. }

Page 57: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])57

실습 #9 –함수를이용해서온도표시하기• 라이브러리다운받기

– https://code.google.com/p/thermistor10k/downloads/list• 압축풀기

– ../Thermister/– ../Thermister/example, Thermister.cpp, Thermister.h

• 아두이노스케치북위치로카피하기– 스케치북위치 : 스케치>파일>환경설정– 스케치북위치 : ..\\user-name\Document\Arduino\– 스케치북폴더로 ..\\libraries\Thermister폴더를카피– “스케치 > 파일 > 예제”에 copy한폴더의 example 이보임– “라이브러리이름”/example 폴더내에있는파일이보임– 예제파일을연구해서라이브러리를어떻게사용하는지연구

Page 58: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])58

Arduino 개발방법

아디디어 구상

자료수집

부품구매

하드웨어

코딩

디버깅

• 회로도를 찾아보자• 부품에 해당되는 라이브러리가 있을까?• 없으면 라이브러리가 있는 부품을 구하자

• 온라인• Devicemart.co.kr• Eleparts.co.kr• Icbanq.co.kr• 오픈마켓(G마켓, 11번가, 옥션, …)• 알리바바, 알리익스프레스, 아마존,..

• 오프라인• 구로유통상가• 청계천• 안양유통상가

• 브래드보드에 회로를 구성한다.• PCB에 회로를 구성한다. <- 고수

• 라이브러리를 설치한다• 응용프로그램을 코딩한다.

• 현상보고 문제 예측하기• 소프트웨어 구성대로 하드웨어가 동작하는지?• 소프트웨어는 정확히 구성되어 있는가..?• 소프트웨어 검증방법은?• 소프트웨어에서 설정한대로 하드웨어가 연결되었는가?• 하드웨어 문제인가?• 왜?• 하드웨어 검증방법은? • 미궁에 빠지다• 열정과 노력이 필요함

Page 59: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])59

아두이노와스크래치

• Firmata방식 –마이컴과호스트컴퓨터간의통신프로토콜– S4A(http://s4a.cat)– S2A(https://github.com/MrYsLab/S2A_fm )– BYOB(Build Your Own Block)/SNAP(http://snap.berkeley.edu)

• 다운로드방식

– Ardublock(http://blog.ardublock.com )– Minibloq(http://blog.minibloq.org )– Modekit(http://www.modkit.com )– Amici (http://dimeb.informatik.uni-bremen.de/eduwear/?cat=16 )

Firmatafor PC

ArduinoFirmata for arduino

• Scratch• Processing• MAX/MSP• Flash• Other Program

Page 60: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])60

Arduino = Maker• 정보를얻을수있는곳

– http://www.adafruit.com– http://www.instructables.com– http://makezine.com– http://hackaday.com– ……

• 크라우드펀딩– http://www.kickstarter.com– https://www.indiegogo.com– https://www.quirky.com– ……

Page 61: 코딩클럽 왕초보 아두이노따라잡기 1탄

코딩클럽신송섭 ([email protected])61

감사합니다.