SlideShare une entreprise Scribd logo
1  sur  61
코딩클럽 신송섭 (ssshin22@naver.com)1
2015.1.31
코딩클럽 신송섭
왕초보!! 아두이노 따라잡기
코딩클럽 신송섭 (ssshin22@naver.com)2
강사 소개
• 이 름 : 신 송 섭
• EMail : ssshin22@naver.com
• FB : www.facebook.com/songsup.shin
코딩클럽 신송섭 (ssshin22@naver.com)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 - 온도센서
코딩클럽 신송섭 (ssshin22@naver.com)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/
코딩클럽 신송섭 (ssshin22@naver.com)5
Open Source 왜?
오픈소스 하드웨어(OSHW) 플랫폼 동향 및
전망 – 유재필, KISA
시장
소비자
생산자
코딩클럽 신송섭 (ssshin22@naver.com)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
Ardiono
IDE
Arduino Platform
코딩클럽 신송섭 (ssshin22@naver.com)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
코딩클럽 신송섭 (ssshin22@naver.com)8
아두이노 - 장단점
Arduino
저렴
오픈소스
확장성
다양한
라이브러
리
쉽다(?)
쉬운 통
합환경
코딩클럽 신송섭 (ssshin22@naver.com)9
Arduino H/W
코딩클럽 신송섭 (ssshin22@naver.com)10
Open Source H/W
코딩클럽 신송섭 (ssshin22@naver.com)11
Arduino UNO R3 Board
디지털 입출력/PWM 핀
아날로그 입출력 핀전원입출력
MicroController
USB 커넥터
외부전원입력
리셋버튼
I2C, AREF
ICSP
USB to Serial
리셋버튼
전원 LED
코딩클럽 신송섭 (ssshin22@naver.com)12
Arduino UNO - Shield
코딩클럽 신송섭 (ssshin22@naver.com)13
Arduino IDE
(Intergrated Development Environment)
코딩
(텍스트 편
집기)
컴파일
(컴파일러)
링크
(링커)
디버깅
(디버거)
다운로딩
(임베디드시
스템)
실행
이클립스
AVR Studio
Visual Studio
코딩클럽 신송섭 (ssshin22@naver.com)14
Arduino - 연결
코딩클럽 신송섭 (ssshin22@naver.com)15
Arduino IDE - Sketch
• Sketch 다운로드
http://arduino.cc/en/Main/Software
• 설치하기
코딩클럽 신송섭 (ssshin22@naver.com)16
Arduino - IDE
도구모음
메뉴바
알림영
역
보드설정/시리얼 포트
탭메뉴
시리얼 모니터
상태표시줄
화일명
입력영
역
IDE 버전
라인번호
코딩클럽 신송섭 (ssshin22@naver.com)17
Arduino IDE - 메뉴바 기능알아보기
확인 : 코드에 에러가 없는지 확인하고 컴파일
업로딩 : 에러확인, 컴파일, 업로드를 실행
새화일 : 새 스케치를 만든다.
열기 : 저장된 스케치 열기
저장 : 현재 작업중인 스케치 저장
시리얼 모니터창 열기
코딩클럽 신송섭 (ssshin22@naver.com)18
Arduino - 보드설정
보드 설정
시리얼포트 설정
코딩클럽 신송섭 (ssshin22@naver.com)19
Arduino – 드라이버 재설치 방법
코딩클럽 신송섭 (ssshin22@naver.com)20
전기회로
코딩클럽 신송섭 (ssshin22@naver.com)21
부품 - 브레드 보드
• 브레드보드는 1971년 처음만듬
• 시제품을 만들고 회로를 검증하기 위한 도구
코딩클럽 신송섭 (ssshin22@naver.com)22
부품 - 저항
• 종류 : 고정저항, 가변저항, 시멘트 저항, 칩저항, 등등등
• 기호 :
• 단위 : ohm(Ω, 오옴)
• 고정저항 • 가변저항
왜 사용하는 걸까?
코딩클럽 신송섭 (ssshin22@naver.com)23
부품 – 저항값 읽기
주황색
첫번째수
주황색
두번째수
빨간색
승수
금색
오차율
33x100=3300ohm±5%
=3.3kohm±5%
3 3 102
=100
±5%
코딩클럽 신송섭 (ssshin22@naver.com)24
부품 – LED
• LED : 전기에너지를 빛에너지로 변환하는 부품
• 기호 :
• LED는 두종류의 물질을 가지고 만드는 반도체
• 갈륨비소(GaAs), 갈륨인(GaP), 갈륨비소인(GaAsP), 갈륨질소(GaN)등
• LED를 사용하는 이유
– 에너지 효율 Up, 전력소모는 Down
– 백열등에 비해 1/5 수준의 전력만 소비
– 백열등에 비해 15배 이상의 긴 수명
– 지구를 살리는 친환경 기술
– 다양한 색깔을 표현할 수 있음
– 빛의 색상, 밝기등을 손쉽게 제어할 수 있음
코딩클럽 신송섭 (ssshin22@naver.com)25
부품 - 점퍼선
• 점퍼선은 부품을 연결하는 Wire를 말함
코딩클럽 신송섭 (ssshin22@naver.com)26
부품 - 버튼
• 스위치란 전류의 흐름을 막거나 계속 흐르게 하는 용도
• 종류 :
• 연결
코딩클럽 신송섭 (ssshin22@naver.com)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,…
– ..Arduinolibraries
– http://arduino.cc/en/Reference/Libraries
코딩클럽 신송섭 (ssshin22@naver.com)28
C 프로그래밍 기초 - 기본
• 주석
– /* 주석 */ : 여러줄 주석
– // 주석 : 한줄 주석
• 세미콜론( ; ) : 문장의 끝
– 문자의 끝을 의미
• { } : 함수, 반복문, 조건문 등에서 블럭을 정의할때 사용함
시작/끝을 나타내며 항상 쌍으로 이루어져야 함
– void setup(){ }
– void loop(){ }
– for( ){ ~ }
– If( ){ ~ } else { ~ }
if( ){
if( ){
if( ){
}
}
}
else{
}
코딩클럽 신송섭 (ssshin22@naver.com)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, …
코딩클럽 신송섭 (ssshin22@naver.com)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
• 합성연산자
코딩클럽 신송섭 (ssshin22@naver.com)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 프로그래밍 기초 - 연산자
코딩클럽 신송섭 (ssshin22@naver.com)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);
}
코딩클럽 신송섭 (ssshin22@naver.com)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);
코딩클럽 신송섭 (ssshin22@naver.com)34
• 프로그램에서 함수란?
특정한 기능을 하는 제어문, 조건문, 함수들의 집합
• 함수구조
“반환값” “함수이름” (“전달인자1”, “전달인자2”,---)
Ex)
digitalWrite(pin, HIGH);
pinMode(pin, OUTPUT);
delay(1000);
randomNumber=random(min,max);
=
• 함수란?
“반환값”
“전달인자1”, “전달인자2”,
함수 f( )
C 프로그래밍 기초 - 함수
코딩클럽 신송섭 (ssshin22@naver.com)35
Arduino - 프로그램 구조
1. // 프로그램 설명부 : 프로그램 동작설명, 제작자, 라이선스, 생성연월일/버전, 등 정보부분
2. /* Blink
3. 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. }
코딩클럽 신송섭 (ssshin22@naver.com)36
Arduino – 기본 프로그램 예제
1. /* <- 주석시작
2. Blink
3. 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. }
코딩클럽 신송섭 (ssshin22@naver.com)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
코딩클럽 신송섭 (ssshin22@naver.com)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
코딩클럽 신송섭 (ssshin22@naver.com)39
실습 #2 - LED PWM On/Off
1. 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 off
255 : always on
- PWM(Pulse Width Modulation)
코딩클럽 신송섭 (ssshin22@naver.com)40
실습 #3 – RGB LED On/Off
1. 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
코딩클럽 신송섭 (ssshin22@naver.com)41
실습 #4 - 버튼입력
digitalRead();
- 기능 : 디지털 핀에 PWM 신호 출력
- Syntax
digitalRead(pin);
- Parameter
pin : 핀번호
- 리턴값 : 0(LOW) or 1(HIGH)
10kohm
코딩클럽 신송섭 (ssshin22@naver.com)42
실습 #4 – 버튼입력으로 LED On/Off
1. 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. }
코딩클럽 신송섭 (ssshin22@naver.com)43
실습 #5 – 기울기(Tilt) 스위치로 LED On/Off
100kohm
코딩클럽 신송섭 (ssshin22@naver.com)44
시리얼 포트 모니터링
1. http://arduino.cc/en/reference/serial
2. 프로그래밍 방법
- setup() 함수내에 Serial.begin(“baud rate”);
- Baud rate : 300, 600, 1200,2400, 4800, 9600,…
- loop() 함수에서 출력이 필요한 변수의 값을 출력함
- Serial.print();
- Serial.println(); (with CR/NL)
코딩클럽 신송섭 (ssshin22@naver.com)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);
– Parameter
val : 출력값 – 숫자, 문자, 문자열, 특수기호(n,t,r, …)
format : BIN, OCT, DEC, HEX, 소수점 자릿수,
- Example
Serial.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);
코딩클럽 신송섭 (ssshin22@naver.com)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. }
코딩클럽 신송섭 (ssshin22@naver.com)47
실습 #6 – 가변저항으로 LED On/Off 시간제어
analogRead();
- 기능 : 디지털 핀에 PWM 신호 출력
- Syntax
returnValue = analogRead(pin);
- Parameter
pin : 핀번호
- 리턴값 : 0 ~ 1023
1번핀
2번핀
3번핀
1번핀
2번핀
3번핀
코딩클럽 신송섭 (ssshin22@naver.com)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 On
14. delay(sensorValue); // 가변저항으로부터 입력되는 값만큼 지연(milliseconds)
15.
16. digitalWrite(ledPin, LOW); // LED Off
delay(sensorValue); // 가변저항으로부터 입력되는 값만큼 지연(milliseconds)
17.
18. }
코딩클럽 신송섭 (ssshin22@naver.com)49
실습 #7 – 가변저항으로 LED 밝기제어
1. int sensorPin = A0; // select the input pin for the potentiometer
2. 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. }
코딩클럽 신송섭 (ssshin22@naver.com)50
실습 #8 - 밝기에 따라 LED On/Off
Photocell, CdS cell, photoresistors, LDR(Light dependent resistor), 광도전 센서
10kohm
코딩클럽 신송섭 (ssshin22@naver.com)51
실습 #9 - 온도센서
• 접촉식 온도센서
– 써미스터(Thermister)
• NTC(Negative Temperature Coefficient Thermister)
• PTC(Positive Temperature Coefficient Thermister)
• CTR(Critical Temperature Resister Thermister)
– 써모커플(Thermocouple, 열전대)
– RTD(Resistance temperature detector, 측온저항계)
– 반도체 온도센서
• 비접촉식 온도센서
– 적외선 복사온도계
코딩클럽 신송섭 (ssshin22@naver.com)52
실습 #9 - 온도센서 - Thermister
• 서미스터
코딩클럽 신송섭 (ssshin22@naver.com)53
실습 #9 – 써미스터 온도 테이블
코딩클럽 신송섭 (ssshin22@naver.com)54
실습 #9 - 온도센서 - 반도체
• 반도체 온도센서
– 아날로그타입 : LM35, TMP36, …
– 디지털 타입 : 18B20, DHTX1, SHTX1, …
코딩클럽 신송섭 (ssshin22@naver.com)55
실습 #9 - 온도에 따라 LED On/Off
10kohm
코딩클럽 신송섭 (ssshin22@naver.com)56
실습 #9 – 온도에 따라 LED On/Off
1. int sensorPin = A4; // select the input pin for the potentiometer
2. 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 on
13. } else {
14. digitalWrite(ledPin, LOW); // turn the ledPin off:
}
15. }
코딩클럽 신송섭 (ssshin22@naver.com)57
실습 #9 – 함수를 이용해서 온도표시하기
• 라이브러리 다운받기
– https://code.google.com/p/thermistor10k/downloads/list
• 압축풀기
– ../Thermister/
– ../Thermister/example, Thermister.cpp, Thermister.h
• 아두이노 스케치북 위치로 카피하기
– 스케치북 위치 : 스케치>파일>환경설정
– 스케치북 위치 : ..user-nameDocumentArduino
– 스케치북 폴더로 ..librariesThermister 폴더를 카피
– “스케치 > 파일 > 예제”에 copy한 폴더의 example 이 보임
– “라이브러리 이름”/example 폴더내에 있는 파일이 보임
– 예제 파일을 연구해서 라이브러리를 어떻게 사용하는지 연구
코딩클럽 신송섭 (ssshin22@naver.com)58
Arduino 개발방법
아디디어 구상
자료수집
부품구매
하드웨어
코딩
디버깅
• 회로도를 찾아보자
• 부품에 해당되는 라이브러리가 있을까?
• 없으면 라이브러리가 있는 부품을 구하자
• 온라인
• Devicemart.co.kr
• Eleparts.co.kr
• Icbanq.co.kr
• 오픈마켓(G마켓, 11번가, 옥션, …)
• 알리바바, 알리익스프레스, 아마존,..
• 오프라인
• 구로유통상가
• 청계천
• 안양유통상가
• 브래드보드에 회로를 구성한다.
• PCB에 회로를 구성한다. <- 고수
• 라이브러리를 설치한다
• 응용프로그램을 코딩한다.
• 현상보고 문제 예측하기
• 소프트웨어 구성대로 하드웨어가 동작하는지?
• 소프트웨어는 정확히 구성되어 있는가..?
• 소프트웨어 검증방법은?
• 소프트웨어에서 설정한대로 하드웨어가 연결되었는가?
• 하드웨어 문제인가?
• 왜?
• 하드웨어 검증방법은?
• 미궁에 빠지다
• 열정과 노력이 필요함
코딩클럽 신송섭 (ssshin22@naver.com)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 )
Firmata
for PC
ArduinoFirmata for
arduino
• Scratch
• Processing
• MAX/MSP
• Flash
• Other Program
코딩클럽 신송섭 (ssshin22@naver.com)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
– ……
코딩클럽 신송섭 (ssshin22@naver.com)61
감사합니다.

Contenu connexe

En vedette

아두이노 배워보기 - 1강
아두이노 배워보기 - 1강아두이노 배워보기 - 1강
아두이노 배워보기 - 1강Junseong Kim
 
아두이노기초 오픈강의1
아두이노기초 오픈강의1아두이노기초 오픈강의1
아두이노기초 오픈강의1성국 임
 
브레드보드사용법
브레드보드사용법브레드보드사용법
브레드보드사용법Changhwan Yoon
 
#아두이노 초급연수
#아두이노 초급연수#아두이노 초급연수
#아두이노 초급연수gongdigi24
 
[아두이노 워크샵 1차] 아두이노 소개 / LED / 피에조 부저 / 버튼
[아두이노 워크샵 1차] 아두이노 소개 / LED / 피에조 부저 / 버튼[아두이노 워크샵 1차] 아두이노 소개 / LED / 피에조 부저 / 버튼
[아두이노 워크샵 1차] 아두이노 소개 / LED / 피에조 부저 / 버튼Codingclub
 
아두이노로 배우는 피지컬 컴퓨팅(중급)
아두이노로 배우는 피지컬 컴퓨팅(중급)아두이노로 배우는 피지컬 컴퓨팅(중급)
아두이노로 배우는 피지컬 컴퓨팅(중급)gongdigi24
 
Aperture : 8. 스위치를 이용한 led 제어하기
Aperture : 8. 스위치를 이용한 led 제어하기Aperture : 8. 스위치를 이용한 led 제어하기
Aperture : 8. 스위치를 이용한 led 제어하기Hyemin Song
 
1강. 아두이노 기초 - 메이커스쿨
1강. 아두이노 기초 - 메이커스쿨1강. 아두이노 기초 - 메이커스쿨
1강. 아두이노 기초 - 메이커스쿨Josh Park
 
강의자료 코딩클럽 아두이노 워크샵-2015.4.11
강의자료 코딩클럽 아두이노 워크샵-2015.4.11강의자료 코딩클럽 아두이노 워크샵-2015.4.11
강의자료 코딩클럽 아두이노 워크샵-2015.4.11SongSup Shin
 
Aperture : 5. 초음파센서를 이용한 거리 측정하기
Aperture : 5. 초음파센서를 이용한 거리 측정하기Aperture : 5. 초음파센서를 이용한 거리 측정하기
Aperture : 5. 초음파센서를 이용한 거리 측정하기Hyemin Song
 
Aperture : 2. 브레드보드를 이용해서 led 켜보기
Aperture : 2. 브레드보드를 이용해서 led 켜보기Aperture : 2. 브레드보드를 이용해서 led 켜보기
Aperture : 2. 브레드보드를 이용해서 led 켜보기Hyemin Song
 
아두이노 1강 maker_school
아두이노 1강 maker_school아두이노 1강 maker_school
아두이노 1강 maker_schoolJosh Park
 
Aperture : 1. 아두이노에 대해 알아보기
Aperture : 1. 아두이노에 대해 알아보기Aperture : 1. 아두이노에 대해 알아보기
Aperture : 1. 아두이노에 대해 알아보기Hyemin Song
 
이호민 - 우분투 환경에서의 임베디드 개발환경 구축 및 어플리케이션 개발 (2010Y06M24D)
이호민 - 우분투 환경에서의 임베디드 개발환경 구축 및 어플리케이션 개발 (2010Y06M24D)이호민 - 우분투 환경에서의 임베디드 개발환경 구축 및 어플리케이션 개발 (2010Y06M24D)
이호민 - 우분투 환경에서의 임베디드 개발환경 구축 및 어플리케이션 개발 (2010Y06M24D)Ubuntu Korea Community
 
창조경제 IoT 해커톤 교육 4일차
창조경제 IoT 해커톤 교육 4일차창조경제 IoT 해커톤 교육 4일차
창조경제 IoT 해커톤 교육 4일차유명환 FunFun Yoo
 
손으로 만드는 아두이노
손으로 만드는 아두이노손으로 만드는 아두이노
손으로 만드는 아두이노Kisoon Eom
 
코딩교육 설명을 해줄께
코딩교육 설명을 해줄께코딩교육 설명을 해줄께
코딩교육 설명을 해줄께성국 임
 
Sk컴즈 독립출판FT: 5주과정
 Sk컴즈 독립출판FT: 5주과정 Sk컴즈 독립출판FT: 5주과정
Sk컴즈 독립출판FT: 5주과정Jinho Jung
 
Aperture : 7. 7세그먼트를 이용해 숫자 출력하기
Aperture : 7. 7세그먼트를 이용해 숫자 출력하기Aperture : 7. 7세그먼트를 이용해 숫자 출력하기
Aperture : 7. 7세그먼트를 이용해 숫자 출력하기Hyemin Song
 

En vedette (20)

아두이노 배워보기 - 1강
아두이노 배워보기 - 1강아두이노 배워보기 - 1강
아두이노 배워보기 - 1강
 
아두이노기초 오픈강의1
아두이노기초 오픈강의1아두이노기초 오픈강의1
아두이노기초 오픈강의1
 
브레드보드사용법
브레드보드사용법브레드보드사용법
브레드보드사용법
 
#아두이노 초급연수
#아두이노 초급연수#아두이노 초급연수
#아두이노 초급연수
 
[아두이노 워크샵 1차] 아두이노 소개 / LED / 피에조 부저 / 버튼
[아두이노 워크샵 1차] 아두이노 소개 / LED / 피에조 부저 / 버튼[아두이노 워크샵 1차] 아두이노 소개 / LED / 피에조 부저 / 버튼
[아두이노 워크샵 1차] 아두이노 소개 / LED / 피에조 부저 / 버튼
 
아두이노로 배우는 피지컬 컴퓨팅(중급)
아두이노로 배우는 피지컬 컴퓨팅(중급)아두이노로 배우는 피지컬 컴퓨팅(중급)
아두이노로 배우는 피지컬 컴퓨팅(중급)
 
Aperture : 8. 스위치를 이용한 led 제어하기
Aperture : 8. 스위치를 이용한 led 제어하기Aperture : 8. 스위치를 이용한 led 제어하기
Aperture : 8. 스위치를 이용한 led 제어하기
 
1강. 아두이노 기초 - 메이커스쿨
1강. 아두이노 기초 - 메이커스쿨1강. 아두이노 기초 - 메이커스쿨
1강. 아두이노 기초 - 메이커스쿨
 
강의자료 코딩클럽 아두이노 워크샵-2015.4.11
강의자료 코딩클럽 아두이노 워크샵-2015.4.11강의자료 코딩클럽 아두이노 워크샵-2015.4.11
강의자료 코딩클럽 아두이노 워크샵-2015.4.11
 
Aperture : 5. 초음파센서를 이용한 거리 측정하기
Aperture : 5. 초음파센서를 이용한 거리 측정하기Aperture : 5. 초음파센서를 이용한 거리 측정하기
Aperture : 5. 초음파센서를 이용한 거리 측정하기
 
Aperture : 2. 브레드보드를 이용해서 led 켜보기
Aperture : 2. 브레드보드를 이용해서 led 켜보기Aperture : 2. 브레드보드를 이용해서 led 켜보기
Aperture : 2. 브레드보드를 이용해서 led 켜보기
 
아두이노 1강 maker_school
아두이노 1강 maker_school아두이노 1강 maker_school
아두이노 1강 maker_school
 
Aperture : 1. 아두이노에 대해 알아보기
Aperture : 1. 아두이노에 대해 알아보기Aperture : 1. 아두이노에 대해 알아보기
Aperture : 1. 아두이노에 대해 알아보기
 
이호민 - 우분투 환경에서의 임베디드 개발환경 구축 및 어플리케이션 개발 (2010Y06M24D)
이호민 - 우분투 환경에서의 임베디드 개발환경 구축 및 어플리케이션 개발 (2010Y06M24D)이호민 - 우분투 환경에서의 임베디드 개발환경 구축 및 어플리케이션 개발 (2010Y06M24D)
이호민 - 우분투 환경에서의 임베디드 개발환경 구축 및 어플리케이션 개발 (2010Y06M24D)
 
창조경제 IoT 해커톤 교육 4일차
창조경제 IoT 해커톤 교육 4일차창조경제 IoT 해커톤 교육 4일차
창조경제 IoT 해커톤 교육 4일차
 
손으로 만드는 아두이노
손으로 만드는 아두이노손으로 만드는 아두이노
손으로 만드는 아두이노
 
코딩교육 설명을 해줄께
코딩교육 설명을 해줄께코딩교육 설명을 해줄께
코딩교육 설명을 해줄께
 
Sk컴즈 독립출판FT: 5주과정
 Sk컴즈 독립출판FT: 5주과정 Sk컴즈 독립출판FT: 5주과정
Sk컴즈 독립출판FT: 5주과정
 
OSHW Activities
OSHW ActivitiesOSHW Activities
OSHW Activities
 
Aperture : 7. 7세그먼트를 이용해 숫자 출력하기
Aperture : 7. 7세그먼트를 이용해 숫자 출력하기Aperture : 7. 7세그먼트를 이용해 숫자 출력하기
Aperture : 7. 7세그먼트를 이용해 숫자 출력하기
 

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

3D 모델러 ADDIN 개발과정 요약
3D 모델러 ADDIN 개발과정 요약3D 모델러 ADDIN 개발과정 요약
3D 모델러 ADDIN 개발과정 요약Tae wook kang
 
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)khuhacker
 
[Osxdev]4.swift
[Osxdev]4.swift[Osxdev]4.swift
[Osxdev]4.swiftNAVER D2
 
라즈베리파이와 자바스크립트로 IoT 시작하기
라즈베리파이와 자바스크립트로 IoT 시작하기라즈베리파이와 자바스크립트로 IoT 시작하기
라즈베리파이와 자바스크립트로 IoT 시작하기Circulus
 
OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)Jinwook On
 
Naver Campus Hackday Winter 2017 참가 후기
Naver Campus Hackday Winter 2017 참가 후기Naver Campus Hackday Winter 2017 참가 후기
Naver Campus Hackday Winter 2017 참가 후기Youngbin Han
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기Jaeseung Ha
 
kics2013-winter-biomp-slide-20130127-1340
kics2013-winter-biomp-slide-20130127-1340kics2013-winter-biomp-slide-20130127-1340
kics2013-winter-biomp-slide-20130127-1340Samsung Electronics
 
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
(2013 DEVIEW) 멀티쓰레드 프로그래밍이  왜이리 힘드나요? (2013 DEVIEW) 멀티쓰레드 프로그래밍이  왜이리 힘드나요?
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요? 내훈 정
 
한글시계웍샵_SW
한글시계웍샵_SW한글시계웍샵_SW
한글시계웍샵_SW영광 송
 
242 naver-2
242 naver-2242 naver-2
242 naver-2NAVER D2
 
한글시계웍샵_ SW
한글시계웍샵_ SW한글시계웍샵_ SW
한글시계웍샵_ SW영광 송
 
Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기hanbeom Park
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안Jeongsang Baek
 
생체 광학 데이터 분석 AI 경진대회 3위 수상작
생체 광학 데이터 분석 AI 경진대회 3위 수상작생체 광학 데이터 분석 AI 경진대회 3위 수상작
생체 광학 데이터 분석 AI 경진대회 3위 수상작DACON AI 데이콘
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기Jaeseung Ha
 
산학 제출 PPT
산학 제출 PPT산학 제출 PPT
산학 제출 PPT21HG020
 

Similaire à 코딩클럽 왕초보 아두이노따라잡기 1탄 (20)

3D 모델러 ADDIN 개발과정 요약
3D 모델러 ADDIN 개발과정 요약3D 모델러 ADDIN 개발과정 요약
3D 모델러 ADDIN 개발과정 요약
 
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
 
[Osxdev]4.swift
[Osxdev]4.swift[Osxdev]4.swift
[Osxdev]4.swift
 
라즈베리파이와 자바스크립트로 IoT 시작하기
라즈베리파이와 자바스크립트로 IoT 시작하기라즈베리파이와 자바스크립트로 IoT 시작하기
라즈베리파이와 자바스크립트로 IoT 시작하기
 
OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)
 
Naver Campus Hackday Winter 2017 참가 후기
Naver Campus Hackday Winter 2017 참가 후기Naver Campus Hackday Winter 2017 참가 후기
Naver Campus Hackday Winter 2017 참가 후기
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
 
kics2013-winter-biomp-slide-20130127-1340
kics2013-winter-biomp-slide-20130127-1340kics2013-winter-biomp-slide-20130127-1340
kics2013-winter-biomp-slide-20130127-1340
 
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
(2013 DEVIEW) 멀티쓰레드 프로그래밍이  왜이리 힘드나요? (2013 DEVIEW) 멀티쓰레드 프로그래밍이  왜이리 힘드나요?
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
 
Electron forge
Electron forgeElectron forge
Electron forge
 
한글시계웍샵_SW
한글시계웍샵_SW한글시계웍샵_SW
한글시계웍샵_SW
 
242 naver-2
242 naver-2242 naver-2
242 naver-2
 
Open Jig Ware
Open Jig WareOpen Jig Ware
Open Jig Ware
 
한글시계웍샵_ SW
한글시계웍샵_ SW한글시계웍샵_ SW
한글시계웍샵_ SW
 
Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
 
Meteor IoT
Meteor IoTMeteor IoT
Meteor IoT
 
생체 광학 데이터 분석 AI 경진대회 3위 수상작
생체 광학 데이터 분석 AI 경진대회 3위 수상작생체 광학 데이터 분석 AI 경진대회 3위 수상작
생체 광학 데이터 분석 AI 경진대회 3위 수상작
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
 
산학 제출 PPT
산학 제출 PPT산학 제출 PPT
산학 제출 PPT
 

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

  • 1. 코딩클럽 신송섭 (ssshin22@naver.com)1 2015.1.31 코딩클럽 신송섭 왕초보!! 아두이노 따라잡기
  • 2. 코딩클럽 신송섭 (ssshin22@naver.com)2 강사 소개 • 이 름 : 신 송 섭 • EMail : ssshin22@naver.com • FB : www.facebook.com/songsup.shin
  • 3. 코딩클럽 신송섭 (ssshin22@naver.com)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 - 온도센서
  • 4. 코딩클럽 신송섭 (ssshin22@naver.com)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/
  • 5. 코딩클럽 신송섭 (ssshin22@naver.com)5 Open Source 왜? 오픈소스 하드웨어(OSHW) 플랫폼 동향 및 전망 – 유재필, KISA 시장 소비자 생산자
  • 6. 코딩클럽 신송섭 (ssshin22@naver.com)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 Ardiono IDE Arduino Platform
  • 7. 코딩클럽 신송섭 (ssshin22@naver.com)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
  • 8. 코딩클럽 신송섭 (ssshin22@naver.com)8 아두이노 - 장단점 Arduino 저렴 오픈소스 확장성 다양한 라이브러 리 쉽다(?) 쉬운 통 합환경
  • 11. 코딩클럽 신송섭 (ssshin22@naver.com)11 Arduino UNO R3 Board 디지털 입출력/PWM 핀 아날로그 입출력 핀전원입출력 MicroController USB 커넥터 외부전원입력 리셋버튼 I2C, AREF ICSP USB to Serial 리셋버튼 전원 LED
  • 13. 코딩클럽 신송섭 (ssshin22@naver.com)13 Arduino IDE (Intergrated Development Environment) 코딩 (텍스트 편 집기) 컴파일 (컴파일러) 링크 (링커) 디버깅 (디버거) 다운로딩 (임베디드시 스템) 실행 이클립스 AVR Studio Visual Studio
  • 15. 코딩클럽 신송섭 (ssshin22@naver.com)15 Arduino IDE - Sketch • Sketch 다운로드 http://arduino.cc/en/Main/Software • 설치하기
  • 16. 코딩클럽 신송섭 (ssshin22@naver.com)16 Arduino - IDE 도구모음 메뉴바 알림영 역 보드설정/시리얼 포트 탭메뉴 시리얼 모니터 상태표시줄 화일명 입력영 역 IDE 버전 라인번호
  • 17. 코딩클럽 신송섭 (ssshin22@naver.com)17 Arduino IDE - 메뉴바 기능알아보기 확인 : 코드에 에러가 없는지 확인하고 컴파일 업로딩 : 에러확인, 컴파일, 업로드를 실행 새화일 : 새 스케치를 만든다. 열기 : 저장된 스케치 열기 저장 : 현재 작업중인 스케치 저장 시리얼 모니터창 열기
  • 18. 코딩클럽 신송섭 (ssshin22@naver.com)18 Arduino - 보드설정 보드 설정 시리얼포트 설정
  • 19. 코딩클럽 신송섭 (ssshin22@naver.com)19 Arduino – 드라이버 재설치 방법
  • 21. 코딩클럽 신송섭 (ssshin22@naver.com)21 부품 - 브레드 보드 • 브레드보드는 1971년 처음만듬 • 시제품을 만들고 회로를 검증하기 위한 도구
  • 22. 코딩클럽 신송섭 (ssshin22@naver.com)22 부품 - 저항 • 종류 : 고정저항, 가변저항, 시멘트 저항, 칩저항, 등등등 • 기호 : • 단위 : ohm(Ω, 오옴) • 고정저항 • 가변저항 왜 사용하는 걸까?
  • 23. 코딩클럽 신송섭 (ssshin22@naver.com)23 부품 – 저항값 읽기 주황색 첫번째수 주황색 두번째수 빨간색 승수 금색 오차율 33x100=3300ohm±5% =3.3kohm±5% 3 3 102 =100 ±5%
  • 24. 코딩클럽 신송섭 (ssshin22@naver.com)24 부품 – LED • LED : 전기에너지를 빛에너지로 변환하는 부품 • 기호 : • LED는 두종류의 물질을 가지고 만드는 반도체 • 갈륨비소(GaAs), 갈륨인(GaP), 갈륨비소인(GaAsP), 갈륨질소(GaN)등 • LED를 사용하는 이유 – 에너지 효율 Up, 전력소모는 Down – 백열등에 비해 1/5 수준의 전력만 소비 – 백열등에 비해 15배 이상의 긴 수명 – 지구를 살리는 친환경 기술 – 다양한 색깔을 표현할 수 있음 – 빛의 색상, 밝기등을 손쉽게 제어할 수 있음
  • 25. 코딩클럽 신송섭 (ssshin22@naver.com)25 부품 - 점퍼선 • 점퍼선은 부품을 연결하는 Wire를 말함
  • 26. 코딩클럽 신송섭 (ssshin22@naver.com)26 부품 - 버튼 • 스위치란 전류의 흐름을 막거나 계속 흐르게 하는 용도 • 종류 : • 연결
  • 27. 코딩클럽 신송섭 (ssshin22@naver.com)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,… – ..Arduinolibraries – http://arduino.cc/en/Reference/Libraries
  • 28. 코딩클럽 신송섭 (ssshin22@naver.com)28 C 프로그래밍 기초 - 기본 • 주석 – /* 주석 */ : 여러줄 주석 – // 주석 : 한줄 주석 • 세미콜론( ; ) : 문장의 끝 – 문자의 끝을 의미 • { } : 함수, 반복문, 조건문 등에서 블럭을 정의할때 사용함 시작/끝을 나타내며 항상 쌍으로 이루어져야 함 – void setup(){ } – void loop(){ } – for( ){ ~ } – If( ){ ~ } else { ~ } if( ){ if( ){ if( ){ } } } else{ }
  • 29. 코딩클럽 신송섭 (ssshin22@naver.com)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, …
  • 30. 코딩클럽 신송섭 (ssshin22@naver.com)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 • 합성연산자
  • 31. 코딩클럽 신송섭 (ssshin22@naver.com)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 프로그래밍 기초 - 연산자
  • 32. 코딩클럽 신송섭 (ssshin22@naver.com)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); }
  • 33. 코딩클럽 신송섭 (ssshin22@naver.com)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);
  • 34. 코딩클럽 신송섭 (ssshin22@naver.com)34 • 프로그램에서 함수란? 특정한 기능을 하는 제어문, 조건문, 함수들의 집합 • 함수구조 “반환값” “함수이름” (“전달인자1”, “전달인자2”,---) Ex) digitalWrite(pin, HIGH); pinMode(pin, OUTPUT); delay(1000); randomNumber=random(min,max); = • 함수란? “반환값” “전달인자1”, “전달인자2”, 함수 f( ) C 프로그래밍 기초 - 함수
  • 35. 코딩클럽 신송섭 (ssshin22@naver.com)35 Arduino - 프로그램 구조 1. // 프로그램 설명부 : 프로그램 동작설명, 제작자, 라이선스, 생성연월일/버전, 등 정보부분 2. /* Blink 3. 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. }
  • 36. 코딩클럽 신송섭 (ssshin22@naver.com)36 Arduino – 기본 프로그램 예제 1. /* <- 주석시작 2. Blink 3. 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. }
  • 37. 코딩클럽 신송섭 (ssshin22@naver.com)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
  • 38. 코딩클럽 신송섭 (ssshin22@naver.com)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
  • 39. 코딩클럽 신송섭 (ssshin22@naver.com)39 실습 #2 - LED PWM On/Off 1. 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 off 255 : always on - PWM(Pulse Width Modulation)
  • 40. 코딩클럽 신송섭 (ssshin22@naver.com)40 실습 #3 – RGB LED On/Off 1. 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
  • 41. 코딩클럽 신송섭 (ssshin22@naver.com)41 실습 #4 - 버튼입력 digitalRead(); - 기능 : 디지털 핀에 PWM 신호 출력 - Syntax digitalRead(pin); - Parameter pin : 핀번호 - 리턴값 : 0(LOW) or 1(HIGH) 10kohm
  • 42. 코딩클럽 신송섭 (ssshin22@naver.com)42 실습 #4 – 버튼입력으로 LED On/Off 1. 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. }
  • 43. 코딩클럽 신송섭 (ssshin22@naver.com)43 실습 #5 – 기울기(Tilt) 스위치로 LED On/Off 100kohm
  • 44. 코딩클럽 신송섭 (ssshin22@naver.com)44 시리얼 포트 모니터링 1. http://arduino.cc/en/reference/serial 2. 프로그래밍 방법 - setup() 함수내에 Serial.begin(“baud rate”); - Baud rate : 300, 600, 1200,2400, 4800, 9600,… - loop() 함수에서 출력이 필요한 변수의 값을 출력함 - Serial.print(); - Serial.println(); (with CR/NL)
  • 45. 코딩클럽 신송섭 (ssshin22@naver.com)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); – Parameter val : 출력값 – 숫자, 문자, 문자열, 특수기호(n,t,r, …) format : BIN, OCT, DEC, HEX, 소수점 자릿수, - Example Serial.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);
  • 46. 코딩클럽 신송섭 (ssshin22@naver.com)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. }
  • 47. 코딩클럽 신송섭 (ssshin22@naver.com)47 실습 #6 – 가변저항으로 LED On/Off 시간제어 analogRead(); - 기능 : 디지털 핀에 PWM 신호 출력 - Syntax returnValue = analogRead(pin); - Parameter pin : 핀번호 - 리턴값 : 0 ~ 1023 1번핀 2번핀 3번핀 1번핀 2번핀 3번핀
  • 48. 코딩클럽 신송섭 (ssshin22@naver.com)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 On 14. delay(sensorValue); // 가변저항으로부터 입력되는 값만큼 지연(milliseconds) 15. 16. digitalWrite(ledPin, LOW); // LED Off delay(sensorValue); // 가변저항으로부터 입력되는 값만큼 지연(milliseconds) 17. 18. }
  • 49. 코딩클럽 신송섭 (ssshin22@naver.com)49 실습 #7 – 가변저항으로 LED 밝기제어 1. int sensorPin = A0; // select the input pin for the potentiometer 2. 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. }
  • 50. 코딩클럽 신송섭 (ssshin22@naver.com)50 실습 #8 - 밝기에 따라 LED On/Off Photocell, CdS cell, photoresistors, LDR(Light dependent resistor), 광도전 센서 10kohm
  • 51. 코딩클럽 신송섭 (ssshin22@naver.com)51 실습 #9 - 온도센서 • 접촉식 온도센서 – 써미스터(Thermister) • NTC(Negative Temperature Coefficient Thermister) • PTC(Positive Temperature Coefficient Thermister) • CTR(Critical Temperature Resister Thermister) – 써모커플(Thermocouple, 열전대) – RTD(Resistance temperature detector, 측온저항계) – 반도체 온도센서 • 비접촉식 온도센서 – 적외선 복사온도계
  • 52. 코딩클럽 신송섭 (ssshin22@naver.com)52 실습 #9 - 온도센서 - Thermister • 서미스터
  • 53. 코딩클럽 신송섭 (ssshin22@naver.com)53 실습 #9 – 써미스터 온도 테이블
  • 54. 코딩클럽 신송섭 (ssshin22@naver.com)54 실습 #9 - 온도센서 - 반도체 • 반도체 온도센서 – 아날로그타입 : LM35, TMP36, … – 디지털 타입 : 18B20, DHTX1, SHTX1, …
  • 55. 코딩클럽 신송섭 (ssshin22@naver.com)55 실습 #9 - 온도에 따라 LED On/Off 10kohm
  • 56. 코딩클럽 신송섭 (ssshin22@naver.com)56 실습 #9 – 온도에 따라 LED On/Off 1. int sensorPin = A4; // select the input pin for the potentiometer 2. 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 on 13. } else { 14. digitalWrite(ledPin, LOW); // turn the ledPin off: } 15. }
  • 57. 코딩클럽 신송섭 (ssshin22@naver.com)57 실습 #9 – 함수를 이용해서 온도표시하기 • 라이브러리 다운받기 – https://code.google.com/p/thermistor10k/downloads/list • 압축풀기 – ../Thermister/ – ../Thermister/example, Thermister.cpp, Thermister.h • 아두이노 스케치북 위치로 카피하기 – 스케치북 위치 : 스케치>파일>환경설정 – 스케치북 위치 : ..user-nameDocumentArduino – 스케치북 폴더로 ..librariesThermister 폴더를 카피 – “스케치 > 파일 > 예제”에 copy한 폴더의 example 이 보임 – “라이브러리 이름”/example 폴더내에 있는 파일이 보임 – 예제 파일을 연구해서 라이브러리를 어떻게 사용하는지 연구
  • 58. 코딩클럽 신송섭 (ssshin22@naver.com)58 Arduino 개발방법 아디디어 구상 자료수집 부품구매 하드웨어 코딩 디버깅 • 회로도를 찾아보자 • 부품에 해당되는 라이브러리가 있을까? • 없으면 라이브러리가 있는 부품을 구하자 • 온라인 • Devicemart.co.kr • Eleparts.co.kr • Icbanq.co.kr • 오픈마켓(G마켓, 11번가, 옥션, …) • 알리바바, 알리익스프레스, 아마존,.. • 오프라인 • 구로유통상가 • 청계천 • 안양유통상가 • 브래드보드에 회로를 구성한다. • PCB에 회로를 구성한다. <- 고수 • 라이브러리를 설치한다 • 응용프로그램을 코딩한다. • 현상보고 문제 예측하기 • 소프트웨어 구성대로 하드웨어가 동작하는지? • 소프트웨어는 정확히 구성되어 있는가..? • 소프트웨어 검증방법은? • 소프트웨어에서 설정한대로 하드웨어가 연결되었는가? • 하드웨어 문제인가? • 왜? • 하드웨어 검증방법은? • 미궁에 빠지다 • 열정과 노력이 필요함
  • 59. 코딩클럽 신송섭 (ssshin22@naver.com)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 ) Firmata for PC ArduinoFirmata for arduino • Scratch • Processing • MAX/MSP • Flash • Other Program
  • 60. 코딩클럽 신송섭 (ssshin22@naver.com)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 – ……