SlideShare a Scribd company logo
1 of 37
Download to read offline
1
2016년 3학년 1학기 마이크로프로세서 3B
아두이노 리포트2
- 블루투스 통신과 스마트폰의 어플을 중심으로-
2012335048 윤현구
2012335054 이정훈
< 목 차 >
들어가기. 블루투스 세탕하기
① 개요
② 회로도
③ 스케치
④ 결과화면
Case1. smartphone application으로 부터 숫자(R,G,B)를 입력시켜서
RGB LED을 이용하여 색상을 디자인하기
① 개요
② 동작원리
③ 스케치
④ 결과화면
⑤ 결론
Case2. R:0-49, G:50-99, B:100-149을 만족하도록 App Inventor을 이
용하여 3개의 slide을 만들어서 색상을 디자인하기
① 개요
② App 디자인과 동작원리
③ 스케치
④ 결과화면
⑤ 결론
Case3. R:0-255, G:0-255, B:0-255을 만족하도록 App Inventor을 이용
하여 3개의 slide을 만들어서 색상을 디자인하기
① 개요
② App 디자인과 동작원리
③ 스케치
④ 결과화면
⑤ 결론
2
0-1. Introduction(개요)
3
①. Background(배경)
Bluetooth를 사용하기 전에 Bluetooth모듈에 대한 Setting
이 반드시 필요하다.
Setting은 통신상에서 어디로 통신할 것인지를 판별 할 수
있는 ‘이름’을 식별할 수 있어야 하고, 그 ‘이름’이 같은 Bit-
rate로 호환되어야 하며, Pin번호를 설정하여 다른 통신으
로 인해 간섭 받지 못하게끔 해야 된다.
이 방법은 Arduino에서 소스적으로 해결이 가능한 방법이
므로, 간략하게 소개를 하고 넘어가도록 하겠다.
1. 우선 SoftwareSerial.h라는 헤더파일을 추가하고, 그에
해당하는 Bluetooth용 객체를 생성한다.
2. 객체를 선언할 때, TX, RX의 핀 번호를 설정한다.
3. Serial과 bluetooth를 보드레이트 9600속도로 맞춘다.
4. 시리얼 포트의 수신 버퍼에 값이 들어왔을 경우, 그것을
그대로 Bluetooth에 쓴다. Serial Port에서 AT+(*설정할
것)(설정한다.)을 입력한다.
(*설정할 것 : NAME(이름), PIN(비밀번호), BAUD(통신속도))
5. 블루투스 포트의 수신 버퍼에 값이 들어왔을 경우, 시리
얼모니터에 값을 반환한다. (Oksetname, OKsetPIN,
OK9600)
4
0-2. Configuration(회로도)
220Ω
220Ω
220Ω
Red LED
Green LED
Blue LED
RX
TX
+5V
Bluetooth
0-3. Sketch
/* 블루투스 Setting */
#include <SoftwareSerial.h> //시리얼통신 라이브러리 호출
SoftwareSerial BT(12, 13); //블루투스모듈에 연결하고 Tx를 12번 pin, Rx를 13번 pin으로 설정한다
void setup()
{
Serial.begin(9600); //시리얼 통신을 9600속도로 시작
BT.begin(9600); //블루투스 통신을 9600속도로 시작
}
void loop()
{
if (BT.available()) //블루투스 포트의 수신 버퍼에 저장된 데이터 개수를 반환
{
Serial.write(BT.read()); //블루투스에서 전송된 문자를 읽어 시리얼모니터 출력
}
if (Serial.available()) //시리얼 포트의 수신 버퍼에 저장된 데이터 개수를 반환
{
BT.write(Serial.read()); //시리얼모니터에서 전송된 문자를 읽어 블루투스에 출력
}
}
5
①. Sketch edit(작성, optimized code)
0-4. Output (결과)
Output file from serial monitor:
1-1. Introduction(개요)
Arduino에서 Digital I/O와 Analog Input 을 이용하여
RGB LED를 컨트롤했다면, 이번에는 원격으로 Bluetooth와
스마트 폰의 application을 이용하여 컨트롤하려고 한다.
스마트 폰으로 Input을 하려면, 어떻게 해야 될까?
예를 들어, 멀리 있는 상대에게 연락을 하려면 무엇이 필
요한지 생각해보자. 연락을 하기 위해서는 서로 간에 통신
을 할 수 있는 휴대폰이 필요하고, 그 휴대폰에 맞는 전화
번호가 필요하다. 그리고 그 전화번호가 어디에 연결되는
지 확인하기 위해 연락처 이름도 필요하다. 준비가 모두 되
었다면, 한쪽이 다른 한쪽에게 전화를 걸 것이고, 전화를
받는 쪽에서 수신을 허용해야만 연락이 이루어진다. 이렇
게 해서야 연락이 완료되는 것이다.
마찬가지로, 멀리 있는 기기 사이에 통신을 하려면, 서로
간의 주소를 알아야하고, 연동되어져야 한다. 휴대폰의
Application은 인터페이스를 제공하고 통신규격으로
Bluetooth를 사용한다. Arduino의 Bluetooth모듈인 HC-06
로 스마트폰과 통신을 함으로서, RGB LED를 컨트롤할 수
있는 것이다.
6
①. Background(배경)
1-1. Introduction(개요)
1. RGB LED를 컨트롤 할 수 있는 Application을 설정한다.
2. Application을 휴대폰에 다운로드받는다.
3. 휴대폰과 Arduino를 Bluetooth로 연결한다.
4. Application에서 숫자를 입력한다.
5. 결과를 확인한다.
7
②. Purpose(목적)
1-2. Configuration(동작원리)
How to operate(동작원리)
1. Arduino에서 블루투스를 연결하고 통신을 할 수 있게 설
정한다.
2. Byte stream으로 Arduino에 0~255값을 3개 전송한다
3. Arduino는 블루투스 버퍼에 값이 전송되었을 경우, 각각
R,G,B의 값으로 인식하고 함수를 호출한다.
4. RGB LED가 값에 맞게 출력된다.
1-3. Sketch
/* Case 1. smartphone application으로 부터 숫자(R,G,B)를 입력시켜서 RGB LED을 이용하여 색상을 디자인하기 */
#include <SoftwareSerial.h> //시리얼통신 라이브러리 호출
SoftwareSerial BT(12, 13); //블루투스모듈에 연결하고 Tx를 12번 pin, Rx를 13번 pin으로 설정한다
const int led[3]={9,10,11}; //(pin) 11=RedLed, 10=GreenLed, 9=BlueLed
int value[3]={0}; //(index) 0=Red, 1=Green, 2=Blue
void setup()
{
BT.begin(9600); //블루투스 통신을 9600속도로 시작
Serial.begin(9600); //시리얼 통신을 9600속도로 시작
for(int i=0;i<3;i++)
{
pinMode(led[i],OUTPUT); //led 3개를 출력으로 지정
}
Serial.println("");
Serial.println("Case 1.");
Serial.println("<<< RGB LED: Smartphone application can make all the colors >>>");
Serial.println("Input the RGB value through bluetooth");
}
void loop()
{
if(BT.available()>0) //블루투스 포트의 수신 버퍼에 저장된 데이터 개수를 반환
{
for(int i=0;i<3;i++)
{
value[i]=BT.parseInt(); //블루투스 버퍼에 있는 데이터 중 다음에 사용할 것을 Int형으로 형변환하여 반환
value[i]=constrain(value[i], 0, 255); //value값을 0~255으로 제한
}
setColor(value[0], value[1], value[2]); //함수호출
}
}
/*
(pin) 11=RedLed, 10=GreenLed, 9=BlueLed
(index) 0=BlueLed, 1=GreenLed, 2=RedLed
setColor함수는 매개변수 값에 따라 PWM으로 RGB LED를 출력합니다.
*/
void setColor(int red, int green, int blue)
{
analogWrite(led[2],red);
Serial.print("red: ");
Serial.print(red);
analogWrite(led[1],green);
Serial.print("tgreen: ");
Serial.print(green);
analogWrite(led[0],blue);
Serial.print("tblue: ");
Serial.print(blue);
Serial.println("");
}
8
①. Sketch edit(작성, optimized code)
1-3. Sketch
9
② Using flowchart and block diagram, Sketch analysis (분석)
start
SoftwareSerial BT(12, 13)
Led[3]={9, 10, 11}
BT 수신버퍼 입력체크
BT.available()>0
수신문자 저장
value[0..2]=BT.parseInt()
함수호출
setColor(value[0], value[1],
value[2])
yes
no
1-4. Output (결과)
2016-05-30 21:17:52 Case 1.
2016-05-30 21:17:52 <<< RGB LED: Smartphone application can make all the colors >>>
2016-05-30 21:18:11 Input the RGB value through bluetooth
2016-05-30 21:18:22 red: 255 green: 0 blue: 0
2016-05-30 21:18:29 red: 255 green: 94 blue: 0
2016-05-30 21:18:36 red: 127 green: 127 blue: 0
2016-05-30 21:18:40 red: 0 green: 255 blue: 0
2016-05-30 21:18:47 red: 0 green: 0 blue: 255
2016-05-30 21:18:53 red: 127 green: 0 blue: 127
2016-05-30 21:19:00 red: 255 green: 255 blue: 255
2016-05-30 21:19:07 red: 0 green: 0 blue: 0
10
①. Output file from serial monitor:
1-4. Output (결과)
11
②. 사진 첨부(arduino board + bread board)
초기상태 R: 255, G: 0, B: 0 R: 255, G: 94, B: 0
R: 127, G: 127, B: 0 R: 0, G: 255, B: 0 R: 0, G: 0, B: 255
R: 127, G: 0, B: 127 R: 255, G: 255, B: 255 R: 0, G: 0, B: 0
1-5. Conclusion (결론)
• Bluetooth와 스마트 폰에서의 Application으로 Arduino
에 연동시키는 방법을 기본적으로 배웠습니다.
• 추가적으로는 어떻게 Application을 만들어 내는지를
배웠고, 그에 관한 동작 원리를 이해할 수 있었습니다.
• application에도 여러 가지 Tool이 있는 것을 보고 다음
에는 좀 더 다양한 도구들을 이용할 수 있었으면 좋겠
습니다.
12
①. 배운점
②. 느낀점
• 수많은 Application을 이미 휴대폰에서 사용하고 있으
나, 스스로 만들어서 사용한 Application은 매우 초보적
인 단계로 생각됩니다. 앞으로 더 심도 있게 배워서 다
양한 Application을 만들 수 있으면 좋겠습니다. 왜냐하
면, Application디자인 개발 방면은 굉장히 인기가 있고,
사람들이 필요로 하는 작업이며, 장래가 유망한 업무이
기 때문입니다.
2-1. Introduction(개요)
스마트 폰에서 숫자로 직접 Input하여 RGB LED를 컨트롤
하는 것에 성공했다면, 다음에는 Slide bar를 이용하려고
한다.
Slide bar를 이용하는 이유는, Arduino에서 가변저항기의
제어와 가장 유사한 방식이기 때문이다. 여기서 유의할 점
은, Arduino에서 가변저항기의 범위를 Mapping하고 설정
해야 되는 것처럼, Slide bar또한 범위를 Mapping해줘야
된 다는 것이다. 또한 Application에서 몇 Byte를 쓸 것인지
도 중요한 점이다.
만약 1Byte만으로 만들 것 이라면 App Inventor에서 3개
의 Slide bar는 0~255의 숫자를 각 슬라이드마다 나눠서 3
등분 해야만 된다. 그래야 값에 따라 Slide bar를 인식하고
작동하기 때문이다.
13
①. Background(배경)
2-1. Introduction(개요)
1. Application으로 3개의 Slide bar를 만든다.
2. 3개의 Slide bar는 각 색깔 (Red, Green, Blue)과 호환되
게 한다.
3. 스마트 폰으로 Application을 연동한다.
4. Bluetooth를 이용하여 Application을 Arduino에 연결,
작동하게 한다.
14
②. Purpose(목적)
15
2-2. Configuration(App디자인/동작원리)
①. App Inventor 디자인
1. app inventor에서 1Byte로 Slide Bar Block을 3개 만든다.
2. 1Byte이므로 범위는 0~255이다.
3. 3개의 슬라이드에 RGB LED를 적당하게 3등분하여 범위
를 지정한다. (R: 0~49, G: 50~99, B: 100~149)
4. 각 슬라이드를 움직여서 RGB LED가 작동하는지 확인한
다.
16
②. How to operate(동작원리)
2-2. Configuration(App디자인/동작원리)
2-3. Sketch
/* Case2. R:0-49, G:50-99, B:100-149을 만족하도록 App Inventor을 이용하여 3개의 slide을 만들어서 색상을 디자인
하기 */
#include <SoftwareSerial.h> //시리얼통신 라이브러리 호출
SoftwareSerial BT(12, 13); //블루투스모듈에 연결하고 Tx를 12번 pin, Rx를 13번 pin으로 설정한다
const int led[3]={9,10,11}; //(pin) 11=RedLed, 10=GreenLed, 9=BlueLed
int data=0; //블루투스로 입력받은 1byte 값을 저장하는 변수 선언
int value[3]={0}; //(index) 0=Red, 1=Green, 2=Blue
void setup()
{
BT.begin(9600); //블루투스 통신을 9600속도로 시작
Serial.begin(9600); //시리얼 통신을 9600속도로 시작
for(int i=0;i<3;i++)
{
pinMode(led[i],OUTPUT); //led 3개를 출력으로 지정
}
Serial.println("");
Serial.println("Case 2.");
Serial.println("<<< RGB LED: App slider can make all the colors >>>");
Serial.println("Control the RGB slider");
}
void loop()
{
if(BT.available()>0) //블루투스 포트의 수신 버퍼에 저장된 데이터 개수를 반환
{ //반환갯수가 1개이상일때만 문장실행
data=BT.read(); //블루투스로 부터 값을 입력받아 저장
if(data<50) //data에 0~49값이 들어오면 Red Slider로 인식
{
value[0]=map(data, 0, 49, 0, 255); //0~49를 0~255로 맵핑
}
else if(data<100) //data에 0~99값이 들어오면 Red Slider로 인식
{
value[1]=map(data, 50, 99, 0, 255); //50~99를 0~255로 맵핑
}
else //data에 100~149값이 들어오면 Red Slider로 인식
{
value[2]=map(data, 100, 149, 0, 255); //100~149를 0~255로 맵핑
}
setColor(value[0], value[1], value[2]); //함수호출
}
}
/*
(pin) 11=RedLed, 10=GreenLed, 9=BlueLed
(index) 0=BlueLed, 1=GreenLed, 2=RedLed
setColor함수는 매개변수 값에 따라 PWM으로 RGB LED를 출력합니다.
*/
void setColor(int red, int green, int blue) //9=blue, 10=green, 11=red
{
analogWrite(led[2],red);
Serial.print("red: ");
Serial.print(red);
analogWrite(led[1],green);
Serial.print("tgreen: ");
Serial.print(green);
analogWrite(led[0],blue);
Serial.print("tblue: ");
Serial.print(blue);
Serial.println("");
}
17
①. Sketch edit(작성, optimized code)
2-3. Sketch
18
② Using flowchart and block diagram, Sketch analysis (분석)
start
SoftwareSerial BT(12, 13)
Led[3]={9, 10, 11}
BT 수신버퍼 입력체크
BT.available()>0
수신문자 저장
data=BT.read()
함수호출
setColor(value[0], value[1],
value[2])
yes
no
data<50 data<100 data<150
no no
yes yes yes
Red 값에 맵핑
value[0]=map(data,
0, 49, 0, 255)
Green 값에 맵핑
value[1]=map(data,
50, 99, 0, 255)
Blue 값에 맵핑
value[2]=map(data,
100, 149, 0, 255)
2-4. Output (결과)
2016-06-02 15:35:59 Case 2.
2016-06-02 15:35:59 <<< RGB LED: App slider can make all the colors >>>
2016-06-02 15:36:03 Control the RGB slider
2016-06-02 15:36:06 red: 114 green: 0 blue: 0
2016-06-02 15:36:06 red: 239 green: 0 blue: 0
2016-06-02 15:36:06 red: 244 green: 0 blue: 0
2016-06-02 15:36:09 red: 249 green: 0 blue: 0
2016-06-02 15:36:10 red: 234 green: 0 blue: 0
2016-06-02 15:36:10 red: 228 green: 0 blue: 0
2016-06-02 15:36:10 red: 223 green: 0 blue: 0
2016-06-02 15:36:10 red: 218 green: 0 blue: 0
2016-06-02 15:36:10 red: 213 green: 0 blue: 0
2016-06-02 15:36:10 red: 202 green: 0 blue: 0
2016-06-02 15:36:10 red: 197 green: 0 blue: 0
2016-06-02 15:36:10 red: 192 green: 0 blue: 0
2016-06-02 15:36:10 red: 187 green: 0 blue: 0
2016-06-02 15:36:10 red: 182 green: 0 blue: 0
2016-06-02 15:36:10 red: 176 green: 0 blue: 0
2016-06-02 15:36:10 red: 171 green: 0 blue: 0
2016-06-02 15:36:10 red: 161 green: 0 blue: 0
2016-06-02 15:36:10 red: 156 green: 0 blue: 0
2016-06-02 15:36:10 red: 145 green: 0 blue: 0
2016-06-02 15:36:10 red: 140 green: 0 blue: 0
2016-06-02 15:36:10 red: 130 green: 0 blue: 0
2016-06-02 15:36:10 red: 124 green: 0 blue: 0
2016-06-02 15:36:10 red: 119 green: 0 blue: 0
2016-06-02 15:36:10 red: 109 green: 0 blue: 0
2016-06-02 15:36:10 red: 104 green: 0 blue: 0
2016-06-02 15:36:10 red: 93 green: 0 blue: 0
2016-06-02 15:36:10 red: 88 green: 0 blue: 0
2016-06-02 15:36:10 red: 78 green: 0 blue: 0
2016-06-02 15:36:10 red: 72 green: 0 blue: 0
2016-06-02 15:36:10 red: 67 green: 0 blue: 0
2016-06-02 15:36:10 red: 57 green: 0 blue: 0
2016-06-02 15:36:10 red: 52 green: 0 blue: 0
2016-06-02 15:36:10 red: 46 green: 0 blue: 0
2016-06-02 15:36:10 red: 36 green: 0 blue: 0
2016-06-02 15:36:10 red: 31 green: 0 blue: 0
2016-06-02 15:36:10 red: 26 green: 0 blue: 0
2016-06-02 15:36:11 red: 15 green: 0 blue: 0
2016-06-02 15:36:11 red: 10 green: 0 blue: 0
2016-06-02 15:36:11 red: 0 green: 0 blue: 0
19
①. Output file from serial monitor:
2016-06-02 15:36:18 red: 0 green: 0 blue: 0
2016-06-02 15:36:19 red: 0 green: 119 blue: 0
2016-06-02 15:36:21 red: 0 green: 244 blue: 0
2016-06-02 15:36:22 red: 0 green: 187 blue: 0
2016-06-02 15:36:22 red: 0 green: 156 blue: 0
2016-06-02 15:36:22 red: 0 green: 156 blue: 0
2016-06-02 15:36:22 red: 0 green: 150 blue: 0
2016-06-02 15:36:22 red: 0 green: 145 blue: 0
2016-06-02 15:36:22 red: 0 green: 135 blue: 0
2016-06-02 15:36:22 red: 0 green: 124 blue: 0
2016-06-02 15:36:22 red: 0 green: 119 blue: 0
2016-06-02 15:36:22 red: 0 green: 109 blue: 0
2016-06-02 15:36:22 red: 0 green: 98 blue: 0
2016-06-02 15:36:22 red: 0 green: 88 blue: 0
2016-06-02 15:36:22 red: 0 green: 78 blue: 0
2016-06-02 15:36:22 red: 0 green: 72 blue: 0
2016-06-02 15:36:22 red: 0 green: 57 blue: 0
2016-06-02 15:36:22 red: 0 green: 46 blue: 0
2016-06-02 15:36:22 red: 0 green: 36 blue: 0
2016-06-02 15:36:22 red: 0 green: 26 blue: 0
2016-06-02 15:36:23 red: 0 green: 5 blue: 0
2016-06-02 15:36:26 red: 0 green: 0 blue: 0
2016-06-02 15:36:26 red: 0 green: 0 blue: 20
2016-06-02 15:36:26 red: 0 green: 0 blue: 26
2016-06-02 15:36:26 red: 0 green: 0 blue: 31
2016-06-02 15:36:26 red: 0 green: 0 blue: 36
2016-06-02 15:36:26 red: 0 green: 0 blue: 41
2016-06-02 15:36:26 red: 0 green: 0 blue: 52
2016-06-02 15:36:26 red: 0 green: 0 blue: 57
2016-06-02 15:36:26 red: 0 green: 0 blue: 67
2016-06-02 15:36:26 red: 0 green: 0 blue: 72
2016-06-02 15:36:27 red: 0 green: 0 blue: 83
2016-06-02 15:36:27 red: 0 green: 0 blue: 93
2016-06-02 15:36:27 red: 0 green: 0 blue: 104
2016-06-02 15:36:27 red: 0 green: 0 blue: 109
2016-06-02 15:36:27 red: 0 green: 0 blue: 119
2016-06-02 15:36:27 red: 0 green: 0 blue: 124
2016-06-02 15:36:27 red: 0 green: 0 blue: 130
2016-06-02 15:36:27 red: 0 green: 0 blue: 140
2016-06-02 15:36:27 red: 0 green: 0 blue: 145
2016-06-02 15:36:27 red: 0 green: 0 blue: 161
2016-06-02 15:36:27 red: 0 green: 0 blue: 166
2016-06-02 15:36:27 red: 0 green: 0 blue: 171
2016-06-02 15:36:27 red: 0 green: 0 blue: 176
2016-06-02 15:36:27 red: 0 green: 0 blue: 182
2016-06-02 15:36:27 red: 0 green: 0 blue: 187
2016-06-02 15:36:27 red: 0 green: 0 blue: 197
2016-06-02 15:36:27 red: 0 green: 0 blue: 202
2016-06-02 15:36:27 red: 0 green: 0 blue: 208
2016-06-02 15:36:27 red: 0 green: 0 blue: 213
2016-06-02 15:36:27 red: 0 green: 0 blue: 218
2016-06-02 15:36:27 red: 0 green: 0 blue: 223
2016-06-02 15:36:27 red: 0 green: 0 blue: 228
2016-06-02 15:36:27 red: 0 green: 0 blue: 234
2016-06-02 15:36:27 red: 0 green: 0 blue: 239
2016-06-02 15:36:28 red: 0 green: 0 blue: 244
2016-06-02 15:36:28 red: 0 green: 0 blue: 249
20
①. Output file from serial monitor - 이어서
2016-06-02 15:36:28 red: 0 green: 0 blue: 249
2016-06-02 15:36:28 red: 0 green: 0 blue: 228
2016-06-02 15:36:28 red: 0 green: 0 blue: 228
2016-06-02 15:36:28 red: 0 green: 0 blue: 223
2016-06-02 15:36:28 red: 0 green: 0 blue: 218
2016-06-02 15:36:28 red: 0 green: 0 blue: 208
2016-06-02 15:36:28 red: 0 green: 0 blue: 197
2016-06-02 15:36:28 red: 0 green: 0 blue: 187
2016-06-02 15:36:28 red: 0 green: 0 blue: 176
2016-06-02 15:36:28 red: 0 green: 0 blue: 161
2016-06-02 15:36:28 red: 0 green: 0 blue: 145
2016-06-02 15:36:28 red: 0 green: 0 blue: 130
2016-06-02 15:36:28 red: 0 green: 0 blue: 119
2016-06-02 15:36:28 red: 0 green: 0 blue: 104
2016-06-02 15:36:28 red: 0 green: 0 blue: 88
2016-06-02 15:36:28 red: 0 green: 0 blue: 78
2016-06-02 15:36:28 red: 0 green: 0 blue: 62
2016-06-02 15:36:28 red: 0 green: 0 blue: 46
2016-06-02 15:36:28 red: 0 green: 0 blue: 36
2016-06-02 15:36:28 red: 0 green: 0 blue: 26
2016-06-02 15:36:28 red: 0 green: 0 blue: 10
2016-06-02 15:36:40 red: 0 green: 0 blue: 5
2016-06-02 15:36:40 red: 0 green: 0 blue: 0
2016-06-02 15:36:40 red: 244 green: 0 blue: 0
2016-06-02 15:36:40 red: 249 green: 0 blue: 0
2016-06-02 15:36:41 red: 249 green: 0 blue: 0
2016-06-02 15:36:45 red: 249 green: 244 blue: 0
2016-06-02 15:36:45 red: 249 green: 244 blue: 0
2016-06-02 15:36:49 red: 249 green: 104 blue: 0
2016-06-02 15:36:49 red: 249 green: 98 blue: 0
2016-06-02 15:36:50 red: 249 green: 93 blue: 0
2016-06-02 15:36:50 red: 249 green: 78 blue: 0
2016-06-02 15:36:50 red: 249 green: 67 blue: 0
2016-06-02 15:36:50 red: 249 green: 52 blue: 0
2016-06-02 15:36:50 red: 249 green: 36 blue: 0
2016-06-02 15:36:50 red: 249 green: 20 blue: 0
2016-06-02 15:36:50 red: 249 green: 5 blue: 0
2016-06-02 15:36:51 red: 249 green: 0 blue: 0
2016-06-02 15:36:51 red: 249 green: 5 blue: 0
2016-06-02 15:36:52 red: 249 green: 0 blue: 0
2016-06-02 15:36:52 red: 249 green: 0 blue: 0
2016-06-02 15:36:52 red: 249 green: 0 blue: 239
2016-06-02 15:36:53 red: 249 green: 0 blue: 239
2016-06-02 15:36:53 red: 249 green: 0 blue: 244
2016-06-02 15:36:53 red: 249 green: 0 blue: 244
2016-06-02 15:36:53 red: 249 green: 0 blue: 249
2016-06-02 15:36:53 red: 249 green: 0 blue: 249
2016-06-02 15:36:53 red: 249 green: 0 blue: 255
2016-06-02 15:36:53 red: 249 green: 0 blue: 249
2016-06-02 15:36:53 red: 249 green: 0 blue: 255
2016-06-02 15:36:53 red: 249 green: 0 blue: 249
2016-06-02 15:36:53 red: 249 green: 0 blue: 255
2016-06-02 15:36:53 red: 249 green: 0 blue: 249
2016-06-02 15:36:53 red: 249 green: 0 blue: 255
2016-06-02 15:36:53 red: 249 green: 0 blue: 249
2016-06-02 15:36:53 red: 249 green: 0 blue: 255
2016-06-02 15:36:55 red: 249 green: 0 blue: 249
2016-06-02 15:36:55 red: 249 green: 0 blue: 255
21
①. Output file from serial monitor - 이어서
2016-06-02 15:36:55 red: 249 green: 0 blue: 255
2016-06-02 15:37:09 red: 249 green: 0 blue: 0
2016-06-02 15:37:10 red: 249 green: 244 blue: 0
2016-06-02 15:37:10 red: 249 green: 244 blue: 0
2016-06-02 15:37:10 red: 249 green: 244 blue: 244
2016-06-02 15:37:18 red: 249 green: 249 blue: 244
2016-06-02 15:37:18 red: 249 green: 255 blue: 244
2016-06-02 15:37:19 red: 249 green: 255 blue: 249
2016-06-02 15:37:19 red: 249 green: 255 blue: 244
2016-06-02 15:37:19 red: 249 green: 255 blue: 244
2016-06-02 15:37:20 red: 249 green: 255 blue: 249
2016-06-02 15:37:20 red: 249 green: 255 blue: 249
2016-06-02 15:37:20 red: 249 green: 255 blue: 255
2016-06-02 15:37:32 red: 255 green: 255 blue: 255
2016-06-02 15:37:32 red: 0 green: 255 blue: 255
2016-06-02 15:37:33 red: 0 green: 0 blue: 255
2016-06-02 15:37:39 red: 0 green: 0 blue: 0
22
①. Output file from serial monitor - 이어서
2-4. Output (결과)
23
②. 사진 첨부(arduino board + bread board)
초기상태 약한 빨강 강한 빨강
주황 노랑 약한 초록
강한 초록 파랑 보라
흰색 OFF
2-5. Conclusion (결론)
• RGB LED 값을 3등분 하는 이유를 깨달았는데, 각 Slide
Bar를 0~255으로 3개를 설정하면, Arduino는 각각의
Slide Bar를 인식하지 못한다. 다 같은 0~255로 인식하
기 때문이다. 따라서 3등분을 하고 값의 범위에 따라
Slide Bar를 인식하도록 하는 것이다.
• 비록 mapping을 하여서 밝기가 약하진 않지만, 이 방
법의 문제점은 0~255보다 밀도가 떨어진다는 것이다.
시리얼 모니터를보면 조금만 움직여도 값이 확확 바뀐
다.
24
①. 배운점
②. 느낀점
• 밀도를 좀더 올릴수 있는 방법이 없을까 고민하게 되었
다. Slide Bar를 조금 움직일때마다 약 10씩이동하였는
데 좀더 세밀하게 움직여서 내가 원하는 색을 출력하고
싶어졌다.
3-1. Introduction(개요)
Case2에서 우리는 3개의 Slide Bar를 이용하여 RGB LED
의 컨트롤에 성공했다. 하지만 RGB LED의 밝기가 밀도가
낮게 되는 것에 대해 불편을 느낄 수 있었을 것이다.
Case2방식을 개선하고자 하려면 어떻게 해야 되는지를 고
민해 볼 필요가 있다. 문제점은 각 Slide Bar의 App Block
에 있다. 3개의 각 Slide bar마다 0~255의 숫자를 Input하
려면 결국은 서로 다른 숫자가 Input되어야 한다. 각
0~255의 숫자들 앞에 번호표가 붙는다면 어떨까??
1번 Slide Bar : <1> 0~255
2번 Slide Bar : <2> 0~255
3번 Slide Bar : <3> 0~255
위의 각 번호가 표현하고자 하는 방법이다. 255를 넘어서
므로 위와 같이 표현하기 위해서는 1Byte가 아닌 2Byte가
필요함을 알 수있다.
25
①. Background(배경)
3-1. Introduction(개요)
1. Application으로 3개의 Slide Bar를 만든다.
2. 3개의 Slide Bar는 최소값과 최대값을 각각 0~255,
256~511, 512~767 으로 설정한다.
3. 스마트 폰으로 Application을 다운로드받아서
Bluetooth를 연결하고 RGB LED를 컨트롤한다.
26
②. Purpose(목적)
27
3-2. Configuration(App디자인/동작원리)
①. App Inventor 디자인
3-2. Configuration(App디자인/동작원리)
1. App Inventor에서 각 Slide Bar Block를 2Byte로 설정
한다. 2Byte로 설정하면,
1번 Slide Bar는 2진수로 앞Byte가 00000000이고 뒷Byte
가 00000000~11111111까지의 범위를 갖는다.
2번 Slide Bar는 앞Byte가 00000001이고 뒷Byte가
00000000~11111111까지의 범위를 갖는다.
3번 Slide Bar에서는 앞Byte가 00000010이고 뒷Byte가
00000000~11111111까지의 범위를 갖는다.
위 2진수 값들의 범위차이는 굉장히 중요하다. 앞Byte가
Slide Bar를 인식하는 역할을 하기 때문이다.
2. 각 Slide Bar를 RGB LED에 호환되게끔 한다.
3. Application을 QR코드로 업로드 한다.
4. 업로드 된 QR코드를 스마트 폰으로 다운로드받는다.
5. Application을 실행하여 잘 작동하는지 확인한다.
28
②. How to operate(동작원리)
3-3. Sketch
/* Case 3. R:0-255, G:0-255, B:0-255을 만족하도록 App Inventor을 이용하여 3개의 slide을 만들어서 색상을 디자인하기 */
#include <SoftwareSerial.h> //시리얼통신 라이브러리 호출
SoftwareSerial BT(12, 13); //블루투스모듈에 연결하고 Tx를 12번 pin, Rx를 13번 pin으로 설정한다
const int led[3]={9,10,11}; //(pin) 11=RedLed, 10=GreenLed, 9=BlueLed
int data[2]={0}; //블루투스로 입력받은 2byte 값을 저장하는 배열 선언
int value[3]={0}; //(index) 0=Red, 1=Green, 2=Blue
void setup()
{
BT.begin(9600); //블루투스 통신을 9600속도로 시작
Serial.begin(9600); //시리얼 통신을 9600속도로 시작
for(int i=0;i<3;i++)
{
pinMode(led[i],OUTPUT); //led 3개를 출력으로 지정
}
Serial.println("");
Serial.println("Case 3.");
Serial.println("<<< RGB LED: App slider can make all the colors >>>");
Serial.println("Control the RGB slider");
}
void loop()
{
if(BT.available()>=2) //블루투스 포트의 수신 버퍼에 저장된 데이터 개수(byte단위)가 2개이상일때만 문장실행
{
data[0]=BT.read(); //2byte중 뒤의 8비트를 수신해서 저장, 슬라이더 값을 인식함
data[1]=BT.read(); //2byte중 앞의 8비트를 수신해서 저장, 각 슬라이더(R,G,B)를 인식함
Serial.print("data[0]: ");
Serial.print(data[0]);
Serial.print("tdata[1]: ");
Serial.print(data[1]);
Serial.println("");
if(data[1]==0) //Red 슬라이더
{
value[0]=map(data[0], 0, 255, 0, 255);
value[0]=constrain(data[0], 0, 255);
}
else if(data[1]==1) //Green 슬라이더
{
value[1]=map(data[0], 0, 255, 0, 255);
value[1]=constrain(data[0], 0, 255);
}
else if(data[1]==2) //Blue 슬라이더
{
value[2]=map(data[0], 0, 255, 0, 255);
value[2]=constrain(data[0], 0, 255);
}
setColor(value[0], value[1], value[2]); //함수호출
}
}
/*
(pin) 11=RedLed, 10=GreenLed, 9=BlueLed
(index) 0=BlueLed, 1=GreenLed, 2=RedLed
setColor함수는 매개변수 값에 따라 PWM으로 RGB LED를 출력합니다.
*/
void setColor(int red, int green, int blue) //9=blue, 10=green, 11=red
{
analogWrite(led[2],red);
Serial.print("red: ");
Serial.print(red);
analogWrite(led[1],green);
Serial.print("tgreen: ");
Serial.print(green);
analogWrite(led[0],blue);
Serial.print("tblue: ");
Serial.print(blue);
Serial.println("");
} 29
①. Sketch edit(작성, optimized code)
3-3. Sketch
30
② Using flowchart and block diagram, Sketch analysis (분석)
start
SoftwareSerial BT(12, 13)
Led[3]={9, 10, 11}
BT 수신버퍼 입력체크
BT.available()>=2
수신문자 저장
data[0]=BT.read()
data[1]=BT.read()
함수호출
setColor(value[0], value[1],
value[2])
yes
no
data[1]==0 data[1]==1 data[1]==2
no no
yes yes yes
Red 값에 맵핑
value[0]=map(data[
0], 0, 255, 0, 255)
Green 값에 맵핑
value[1]=map(data[
0], 0, 255, 0, 255)
Blue 값에 맵핑
value[2]=map(data[
0], 0, 255, 0, 255)
3-4. Output (결과)
2016-06-02 16:32:57 Case 3.
2016-06-02 16:32:57 <<< RGB LED: App slider can make all the colors >>>
2016-06-02 16:32:59 Control the RGB slider
2016-06-02 16:32:59 data[0]: 51 data[1]: 0
2016-06-02 16:33:00 red: 51 green: 0 blue: 0
2016-06-02 16:33:00 data[0]: 97 data[1]: 0
2016-06-02 16:33:01 red: 97 green: 0 blue: 0
2016-06-02 16:33:01 data[0]: 148 data[1]: 0
2016-06-02 16:33:03 red: 148 green: 0 blue: 0
2016-06-02 16:33:03 data[0]: 209 data[1]: 0
2016-06-02 16:33:04 red: 209 green: 0 blue: 0
2016-06-02 16:33:04 data[0]: 255 data[1]: 0
2016-06-02 16:33:07 red: 255 green: 0 blue: 0
2016-06-02 16:33:07 data[0]: 242 data[1]: 0
2016-06-02 16:33:07 red: 242 green: 0 blue: 0
2016-06-02 16:33:12 data[0]: 41 data[1]: 0
2016-06-02 16:33:12 red: 41 green: 0 blue: 0
2016-06-02 16:33:12 data[0]: 3 data[1]: 0
2016-06-02 16:33:13 red: 3 green: 0 blue: 0
2016-06-02 16:33:13 data[0]: 0 data[1]: 0
2016-06-02 16:33:15 red: 0 green: 0 blue: 0
2016-06-02 16:33:15 data[0]: 20 data[1]: 1
2016-06-02 16:33:15 red: 0 green: 20 blue: 0
2016-06-02 16:33:15 data[0]: 23 data[1]: 1
2016-06-02 16:33:15 red: 0 green: 23 blue: 0
2016-06-02 16:33:15 data[0]: 26 data[1]: 1
2016-06-02 16:33:15 red: 0 green: 26 blue: 0
2016-06-02 16:33:16 data[0]: 28 data[1]: 1
2016-06-02 16:33:16 red: 0 green: 28 blue: 0
2016-06-02 16:33:16 data[0]: 31 data[1]: 1
2016-06-02 16:33:16 red: 0 green: 31 blue: 0
2016-06-02 16:33:16 data[0]: 36 data[1]: 1
2016-06-02 16:33:16 red: 0 green: 36 blue: 0
2016-06-02 16:33:16 data[0]: 41 data[1]: 1
2016-06-02 16:33:16 red: 0 green: 41 blue: 0
2016-06-02 16:33:16 data[0]: 46 data[1]: 1
2016-06-02 16:33:16 red: 0 green: 46 blue: 0
2016-06-02 16:33:16 data[0]: 51 data[1]: 1
2016-06-02 16:33:16 red: 0 green: 51 blue: 0
2016-06-02 16:33:16 data[0]: 61 data[1]: 1
2016-06-02 16:33:16 red: 0 green: 61 blue: 0
2016-06-02 16:33:16 data[0]: 66 data[1]: 1
2016-06-02 16:33:16 red: 0 green: 66 blue: 0
2016-06-02 16:33:16 data[0]: 74 data[1]: 1
2016-06-02 16:33:16 red: 0 green: 74 blue: 0
2016-06-02 16:33:16 data[0]: 79 data[1]: 1
2016-06-02 16:33:16 red: 0 green: 79 blue: 0
2016-06-02 16:33:16 data[0]: 87 data[1]: 1
2016-06-02 16:33:16 red: 0 green: 87 blue: 0
2016-06-02 16:33:16 data[0]: 94 data[1]: 1
2016-06-02 16:33:16 red: 0 green: 94 blue: 0
2016-06-02 16:33:16 data[0]: 102 data[1]: 1
2016-06-02 16:33:16 red: 0 green: 102 blue: 0
2016-06-02 16:33:16 data[0]: 107 data[1]: 1
2016-06-02 16:33:16 red: 0 green: 107 blue: 0
2016-06-02 16:33:16 data[0]: 115 data[1]: 1
2016-06-02 16:33:16 red: 0 green: 115 blue: 0
2016-06-02 16:33:16 data[0]: 130 data[1]: 1
2016-06-02 16:33:16 red: 0 green: 130 blue: 0
2016-06-02 16:33:16 data[0]: 135 data[1]: 1
2016-06-02 16:33:16 red: 0 green: 135 blue: 0
2016-06-02 16:33:16 data[0]: 143 data[1]: 1
2016-06-02 16:33:16 red: 0 green: 143 blue: 0
2016-06-02 16:33:16 data[0]: 148 data[1]: 1
2016-06-02 16:33:17 red: 0 green: 148 blue: 0
2016-06-02 16:33:17 data[0]: 156 data[1]: 1
2016-06-02 16:33:17 red: 0 green: 156 blue: 0
2016-06-02 16:33:17 data[0]: 161 data[1]: 1
2016-06-02 16:33:17 red: 0 green: 161 blue: 0 31
①. Output file from serial monitor:
2016-06-02 16:33:17 data[0]: 168 data[1]: 1
2016-06-02 16:33:17 red: 0 green: 168 blue: 0
2016-06-02 16:33:17 data[0]: 173 data[1]: 1
2016-06-02 16:33:17 red: 0 green: 173 blue: 0
2016-06-02 16:33:17 data[0]: 178 data[1]: 1
2016-06-02 16:33:17 red: 0 green: 178 blue: 0
2016-06-02 16:33:17 data[0]: 186 data[1]: 1
2016-06-02 16:33:17 red: 0 green: 186 blue: 0
2016-06-02 16:33:17 data[0]: 191 data[1]: 1
2016-06-02 16:33:17 red: 0 green: 191 blue: 0
2016-06-02 16:33:17 data[0]: 196 data[1]: 1
2016-06-02 16:33:17 red: 0 green: 196 blue: 0
2016-06-02 16:33:17 data[0]: 201 data[1]: 1
2016-06-02 16:33:17 red: 0 green: 201 blue: 0
2016-06-02 16:33:17 data[0]: 207 data[1]: 1
2016-06-02 16:33:17 red: 0 green: 207 blue: 0
2016-06-02 16:33:17 data[0]: 214 data[1]: 1
2016-06-02 16:33:17 red: 0 green: 214 blue: 0
2016-06-02 16:33:17 data[0]: 219 data[1]: 1
2016-06-02 16:33:17 red: 0 green: 219 blue: 0
2016-06-02 16:33:17 data[0]: 235 data[1]: 1
2016-06-02 16:33:17 red: 0 green: 235 blue: 0
2016-06-02 16:33:17 data[0]: 240 data[1]: 1
2016-06-02 16:33:17 red: 0 green: 240 blue: 0
2016-06-02 16:33:17 data[0]: 245 data[1]: 1
2016-06-02 16:33:21 red: 0 green: 245 blue: 0
2016-06-02 16:33:21 data[0]: 255 data[1]: 1
2016-06-02 16:33:21 red: 0 green: 255 blue: 0
2016-06-02 16:33:22 data[0]: 199 data[1]: 1
2016-06-02 16:33:22 red: 0 green: 199 blue: 0
2016-06-02 16:33:22 data[0]: 189 data[1]: 1
2016-06-02 16:33:22 red: 0 green: 189 blue: 0
2016-06-02 16:33:22 data[0]: 184 data[1]: 1
2016-06-02 16:33:22 red: 0 green: 184 blue: 0
2016-06-02 16:33:22 data[0]: 178 data[1]: 1
2016-06-02 16:33:22 red: 0 green: 178 blue: 0
2016-06-02 16:33:22 data[0]: 173 data[1]: 1
2016-06-02 16:33:22 red: 0 green: 173 blue: 0
2016-06-02 16:33:22 data[0]: 168 data[1]: 1
2016-06-02 16:33:22 red: 0 green: 168 blue: 0
2016-06-02 16:33:22 data[0]: 163 data[1]: 1
2016-06-02 16:33:22 red: 0 green: 163 blue: 0
2016-06-02 16:33:22 data[0]: 156 data[1]: 1
2016-06-02 16:33:22 red: 0 green: 156 blue: 0
2016-06-02 16:33:22 data[0]: 150 data[1]: 1
2016-06-02 16:33:22 red: 0 green: 150 blue: 0
2016-06-02 16:33:22 data[0]: 143 data[1]: 1
2016-06-02 16:33:22 red: 0 green: 143 blue: 0
2016-06-02 16:33:22 data[0]: 135 data[1]: 1
2016-06-02 16:33:22 red: 0 green: 135 blue: 0
2016-06-02 16:33:22 data[0]: 130 data[1]: 1
2016-06-02 16:33:22 red: 0 green: 130 blue: 0
2016-06-02 16:33:22 data[0]: 125 data[1]: 1
2016-06-02 16:33:22 red: 0 green: 125 blue: 0
2016-06-02 16:33:22 data[0]: 120 data[1]: 1
2016-06-02 16:33:22 red: 0 green: 120 blue: 0
2016-06-02 16:33:22 data[0]: 115 data[1]: 1
2016-06-02 16:33:22 red: 0 green: 115 blue: 0
2016-06-02 16:33:22 data[0]: 110 data[1]: 1
2016-06-02 16:33:22 red: 0 green: 110 blue: 0
2016-06-02 16:33:22 data[0]: 105 data[1]: 1
2016-06-02 16:33:22 red: 0 green: 105 blue: 0
2016-06-02 16:33:22 data[0]: 99 data[1]: 1
2016-06-02 16:33:22 red: 0 green: 99 blue: 0
32
①. Output file from serial monitor - 이어서
2016-06-02 16:33:23 data[0]: 94 data[1]: 1
2016-06-02 16:33:23 red: 0 green: 94 blue: 0
2016-06-02 16:33:23 data[0]: 89 data[1]: 1
2016-06-02 16:33:23 red: 0 green: 89 blue: 0
2016-06-02 16:33:23 data[0]: 82 data[1]: 1
2016-06-02 16:33:23 red: 0 green: 82 blue: 0
2016-06-02 16:33:23 data[0]: 76 data[1]: 1
2016-06-02 16:33:23 red: 0 green: 76 blue: 0
2016-06-02 16:33:23 data[0]: 71 data[1]: 1
2016-06-02 16:33:23 red: 0 green: 71 blue: 0
2016-06-02 16:33:23 data[0]: 66 data[1]: 1
2016-06-02 16:33:23 red: 0 green: 66 blue: 0
2016-06-02 16:33:23 data[0]: 61 data[1]: 1
2016-06-02 16:33:23 red: 0 green: 61 blue: 0
2016-06-02 16:33:23 data[0]: 56 data[1]: 1
2016-06-02 16:33:23 red: 0 green: 56 blue: 0
2016-06-02 16:33:23 data[0]: 51 data[1]: 1
2016-06-02 16:33:23 red: 0 green: 51 blue: 0
2016-06-02 16:33:23 data[0]: 48 data[1]: 1
2016-06-02 16:33:23 red: 0 green: 48 blue: 0
2016-06-02 16:33:23 data[0]: 43 data[1]: 1
2016-06-02 16:33:23 red: 0 green: 43 blue: 0
2016-06-02 16:33:23 data[0]: 41 data[1]: 1
2016-06-02 16:33:23 red: 0 green: 41 blue: 0
2016-06-02 16:33:23 data[0]: 38 data[1]: 1
2016-06-02 16:33:23 red: 0 green: 38 blue: 0
2016-06-02 16:33:23 data[0]: 36 data[1]: 1
2016-06-02 16:33:23 red: 0 green: 36 blue: 0
2016-06-02 16:33:23 data[0]: 28 data[1]: 1
2016-06-02 16:33:23 red: 0 green: 28 blue: 0
2016-06-02 16:33:23 data[0]: 26 data[1]: 1
2016-06-02 16:33:23 red: 0 green: 26 blue: 0
2016-06-02 16:33:23 data[0]: 23 data[1]: 1
2016-06-02 16:33:23 red: 0 green: 23 blue: 0
2016-06-02 16:33:23 data[0]: 15 data[1]: 1
2016-06-02 16:33:23 red: 0 green: 15 blue: 0
2016-06-02 16:33:23 data[0]: 13 data[1]: 1
2016-06-02 16:33:23 red: 0 green: 13 blue: 0
2016-06-02 16:33:24 data[0]: 10 data[1]: 1
2016-06-02 16:33:24 red: 0 green: 10 blue: 0
2016-06-02 16:33:24 data[0]: 8 data[1]: 1
2016-06-02 16:33:24 red: 0 green: 8 blue: 0
2016-06-02 16:33:24 data[0]: 5 data[1]: 1
2016-06-02 16:33:24 red: 0 green: 5 blue: 0
2016-06-02 16:33:24 data[0]: 3 data[1]: 1
2016-06-02 16:33:24 red: 0 green: 3 blue: 0
2016-06-02 16:33:24 data[0]: 8 data[1]: 1
2016-06-02 16:33:24 red: 0 green: 8 blue: 0
2016-06-02 16:33:24 data[0]: 5 data[1]: 1
2016-06-02 16:33:24 red: 0 green: 5 blue: 0
2016-06-02 16:33:24 data[0]: 3 data[1]: 1
2016-06-02 16:33:24 red: 0 green: 3 blue: 0
2016-06-02 16:33:24 data[0]: 0 data[1]: 1
2016-06-02 16:33:29 red: 0 green: 0 blue: 0
2016-06-02 16:33:29 data[0]: 76 data[1]: 2
2016-06-02 16:33:30 red: 0 green: 0 blue: 76
2016-06-02 16:33:30 data[0]: 143 data[1]: 2
2016-06-02 16:33:30 red: 0 green: 0 blue: 143
2016-06-02 16:33:31 data[0]: 209 data[1]: 2
2016-06-02 16:33:31 red: 0 green: 0 blue: 209
2016-06-02 16:33:31 data[0]: 242 data[1]: 2
2016-06-02 16:33:32 red: 0 green: 0 blue: 242
2016-06-02 16:33:33 data[0]: 245 data[1]: 2
2016-06-02 16:33:33 red: 0 green: 0 blue: 245
33
①. Output file from serial monitor - 이어서
2016-06-02 16:33:33 data[0]: 156 data[1]: 2
2016-06-02 16:33:33 red: 0 green: 0 blue: 156
2016-06-02 16:33:33 data[0]: 87 data[1]: 2
2016-06-02 16:33:33 red: 0 green: 0 blue: 87
2016-06-02 16:33:33 data[0]: 43 data[1]: 2
2016-06-02 16:33:33 red: 0 green: 0 blue: 43
2016-06-02 16:33:33 data[0]: 41 data[1]: 2
2016-06-02 16:33:34 red: 0 green: 0 blue: 41
2016-06-02 16:33:35 data[0]: 13 data[1]: 2
2016-06-02 16:33:35 red: 0 green: 0 blue: 13
2016-06-02 16:33:35 data[0]: 8 data[1]: 2
2016-06-02 16:33:35 red: 0 green: 0 blue: 8
2016-06-02 16:33:35 data[0]: 5 data[1]: 2
2016-06-02 16:33:35 red: 0 green: 0 blue: 5
2016-06-02 16:33:35 data[0]: 0 data[1]: 2
2016-06-02 16:33:37 red: 0 green: 0 blue: 0
2016-06-02 16:33:37 data[0]: 245 data[1]: 0
2016-06-02 16:33:38 red: 245 green: 0 blue: 0
2016-06-02 16:33:38 data[0]: 242 data[1]: 1
2016-06-02 16:33:38 red: 245 green: 242 blue: 0
2016-06-02 16:33:41 data[0]: 245 data[1]: 1
2016-06-02 16:33:41 red: 245 green: 245 blue: 0
2016-06-02 16:33:41 data[0]: 3 data[1]: 0
2016-06-02 16:33:41 red: 3 green: 245 blue: 0
2016-06-02 16:33:41 data[0]: 0 data[1]: 0
2016-06-02 16:33:42 red: 0 green: 245 blue: 0
2016-06-02 16:33:42 data[0]: 5 data[1]: 1
2016-06-02 16:33:42 red: 0 green: 5 blue: 0
2016-06-02 16:33:44 data[0]: 3 data[1]: 1
2016-06-02 16:33:44 red: 0 green: 3 blue: 0
2016-06-02 16:33:44 data[0]: 0 data[1]: 1
2016-06-02 16:33:44 red: 0 green: 0 blue: 0
2016-06-02 16:33:44 data[0]: 230 data[1]: 0
2016-06-02 16:33:44 red: 230 green: 0 blue: 0
2016-06-02 16:33:44 data[0]: 235 data[1]: 0
2016-06-02 16:33:44 red: 235 green: 0 blue: 0
2016-06-02 16:33:45 data[0]: 240 data[1]: 0
2016-06-02 16:33:45 red: 240 green: 0 blue: 0
2016-06-02 16:33:45 data[0]: 245 data[1]: 0
2016-06-02 16:33:45 red: 245 green: 0 blue: 0
2016-06-02 16:33:45 data[0]: 247 data[1]: 0
2016-06-02 16:33:45 red: 247 green: 0 blue: 0
2016-06-02 16:33:45 data[0]: 250 data[1]: 0
2016-06-02 16:33:45 red: 250 green: 0 blue: 0
2016-06-02 16:33:45 data[0]: 252 data[1]: 0
2016-06-02 16:33:45 red: 252 green: 0 blue: 0
2016-06-02 16:33:45 data[0]: 237 data[1]: 2
2016-06-02 16:33:45 red: 252 green: 0 blue: 237
2016-06-02 16:33:45 data[0]: 240 data[1]: 2
2016-06-02 16:33:45 red: 252 green: 0 blue: 240
2016-06-02 16:33:45 data[0]: 245 data[1]: 2
2016-06-02 16:33:46 red: 252 green: 0 blue: 245
2016-06-02 16:33:46 data[0]: 247 data[1]: 2
2016-06-02 16:33:46 red: 252 green: 0 blue: 247
2016-06-02 16:33:46 data[0]: 250 data[1]: 2
2016-06-02 16:33:48 red: 252 green: 0 blue: 250
2016-06-02 16:33:48 data[0]: 15 data[1]: 2
2016-06-02 16:33:48 red: 252 green: 0 blue: 15
2016-06-02 16:33:48 data[0]: 13 data[1]: 2
2016-06-02 16:33:48 red: 252 green: 0 blue: 13
2016-06-02 16:33:48 data[0]: 5 data[1]: 2
2016-06-02 16:33:48 red: 252 green: 0 blue: 5
2016-06-02 16:33:48 data[0]: 8 data[1]: 2
2016-06-02 16:33:49 red: 252 green: 0 blue: 8
2016-06-02 16:33:49 data[0]: 15 data[1]: 2
2016-06-02 16:33:49 red: 252 green: 0 blue: 15
34
①. Output file from serial monitor - 이어서
2016-06-02 16:33:49 data[0]: 13 data[1]: 2
2016-06-02 16:33:49 red: 252 green: 0 blue: 13
2016-06-02 16:33:49 data[0]: 5 data[1]: 2
2016-06-02 16:33:49 red: 252 green: 0 blue: 5
2016-06-02 16:33:49 data[0]: 0 data[1]: 2
2016-06-02 16:33:50 red: 252 green: 0 blue: 0
2016-06-02 16:33:50 data[0]: 3 data[1]: 0
2016-06-02 16:33:50 red: 3 green: 0 blue: 0
2016-06-02 16:33:50 data[0]: 0 data[1]: 0
2016-06-02 16:33:52 red: 0 green: 0 blue: 0
2016-06-02 16:33:52 data[0]: 247 data[1]: 1
2016-06-02 16:33:53 red: 0 green: 247 blue: 0
2016-06-02 16:33:53 data[0]: 250 data[1]: 1
2016-06-02 16:33:53 red: 0 green: 250 blue: 0
2016-06-02 16:33:53 data[0]: 252 data[1]: 1
2016-06-02 16:33:53 red: 0 green: 252 blue: 0
2016-06-02 16:33:53 data[0]: 245 data[1]: 2
2016-06-02 16:33:53 red: 0 green: 252 blue: 245
2016-06-02 16:33:55 data[0]: 247 data[1]: 2
2016-06-02 16:33:55 red: 0 green: 252 blue: 247
2016-06-02 16:33:55 data[0]: 8 data[1]: 1
2016-06-02 16:33:55 red: 0 green: 8 blue: 247
2016-06-02 16:33:55 data[0]: 5 data[1]: 1
2016-06-02 16:33:55 red: 0 green: 5 blue: 247
2016-06-02 16:33:55 data[0]: 3 data[1]: 1
2016-06-02 16:33:55 red: 0 green: 3 blue: 247
2016-06-02 16:33:55 data[0]: 0 data[1]: 1
2016-06-02 16:33:56 red: 0 green: 0 blue: 247
2016-06-02 16:33:56 data[0]: 5 data[1]: 2
2016-06-02 16:33:56 red: 0 green: 0 blue: 5
2016-06-02 16:33:56 data[0]: 3 data[1]: 2
2016-06-02 16:33:56 red: 0 green: 0 blue: 3
2016-06-02 16:33:56 data[0]: 0 data[1]: 2
2016-06-02 16:33:57 red: 0 green: 0 blue: 0
2016-06-02 16:33:57 data[0]: 242 data[1]: 2
2016-06-02 16:33:57 red: 0 green: 0 blue: 242
2016-06-02 16:33:57 data[0]: 245 data[1]: 2
2016-06-02 16:33:57 red: 0 green: 0 blue: 245
2016-06-02 16:33:57 data[0]: 247 data[1]: 2
2016-06-02 16:33:57 red: 0 green: 0 blue: 247
2016-06-02 16:33:57 data[0]: 250 data[1]: 2
2016-06-02 16:33:58 red: 0 green: 0 blue: 250
2016-06-02 16:33:58 data[0]: 245 data[1]: 1
2016-06-02 16:33:58 red: 0 green: 245 blue: 250
2016-06-02 16:33:58 data[0]: 247 data[1]: 1
2016-06-02 16:33:58 red: 0 green: 247 blue: 250
2016-06-02 16:33:58 data[0]: 250 data[1]: 1
2016-06-02 16:33:58 red: 0 green: 250 blue: 250
2016-06-02 16:33:58 data[0]: 245 data[1]: 0
2016-06-02 16:33:59 red: 245 green: 250 blue: 250
2016-06-02 16:33:59 data[0]: 247 data[1]: 0
2016-06-02 16:33:59 red: 247 green: 250 blue: 250
2016-06-02 16:33:59 data[0]: 250 data[1]: 0
2016-06-02 16:34:00 red: 250 green: 250 blue: 250
2016-06-02 16:34:00 data[0]: 245 data[1]: 2
2016-06-02 16:34:01 red: 250 green: 250 blue: 245
2016-06-02 16:34:01 data[0]: 247 data[1]: 2
2016-06-02 16:34:01 red: 250 green: 250 blue: 247
2016-06-02 16:34:01 data[0]: 250 data[1]: 2
2016-06-02 16:34:01 red: 250 green: 250 blue: 250
2016-06-02 16:34:01 data[0]: 247 data[1]: 1
2016-06-02 16:34:06 red: 250 green: 247 blue: 250
35
①. Output file from serial monitor - 이어서
3-4. Output (결과)
36
②. 사진 첨부(arduino board + bread board)
초기상태 약한 빨강 강한 빨강
주황 노랑 초록
하늘 파랑 보라
흰색 OFF
3-5. Conclusion (결론)
• Case3을 통하여 Byte로 지원하는 범위를 다르게 할 수
있는 방법을 배웠다. 원리를 이해함으로서 깨닫고 와닿
는 점이 굉장히 많았다. 매번 소스로만 해결하려고 하
는 방식에 있어서의 한계를 느꼈고, 이를 해결하기 위
해서는 기초적인 원리자체가 굉장히 중요하다는 것을
깨닫기도 했습니다. 결국에는 동작원리를 이해함으로서
스스로가 더 심도있게 된 것 같아서 뿌듯하다.
37
①. 배운점
②. 느낀점
• 계속 언급하듯이 기초의 중요성을 우선적으로 느꼈다.
기초를 이해하는 것뿐만 아니라 이를 활용할 줄도 알아
야 한다고 느끼게 되었다.

More Related Content

Similar to 아두이노 bluetooth

아두이노로 배우는 피지컬 컴퓨팅(중급)
아두이노로 배우는 피지컬 컴퓨팅(중급)아두이노로 배우는 피지컬 컴퓨팅(중급)
아두이노로 배우는 피지컬 컴퓨팅(중급)gongdigi24
 
오픈소스로 쉽게 따라해보는 Unreal과 IoT 연계 및 개발 방법 소개.pdf
오픈소스로 쉽게 따라해보는 Unreal과 IoT 연계 및 개발 방법 소개.pdf오픈소스로 쉽게 따라해보는 Unreal과 IoT 연계 및 개발 방법 소개.pdf
오픈소스로 쉽게 따라해보는 Unreal과 IoT 연계 및 개발 방법 소개.pdfTae wook kang
 
Test-SDIC2018-2(answer)
Test-SDIC2018-2(answer)Test-SDIC2018-2(answer)
Test-SDIC2018-2(answer)Yong Heui Cho
 
메이커 페어 서울 2018 - 측우자격루(개발자용)
메이커 페어 서울 2018 - 측우자격루(개발자용)메이커 페어 서울 2018 - 측우자격루(개발자용)
메이커 페어 서울 2018 - 측우자격루(개발자용)JongyoonWon1
 
Beacon ble.-leejunwoo@gmail.com
Beacon ble.-leejunwoo@gmail.comBeacon ble.-leejunwoo@gmail.com
Beacon ble.-leejunwoo@gmail.comJunwoo Lee
 
ICT+UD 융합작품 개발문서(스마트디바이스지능통신)
ICT+UD 융합작품 개발문서(스마트디바이스지능통신)ICT+UD 융합작품 개발문서(스마트디바이스지능통신)
ICT+UD 융합작품 개발문서(스마트디바이스지능통신)Yong Heui Cho
 
20140219 techdays mini 앱 개발 세미나(4)
20140219 techdays mini  앱 개발 세미나(4) 20140219 techdays mini  앱 개발 세미나(4)
20140219 techdays mini 앱 개발 세미나(4) 영욱 김
 
TestSDIC2017-1(answer)
TestSDIC2017-1(answer)TestSDIC2017-1(answer)
TestSDIC2017-1(answer)Yong Heui Cho
 
라즈베리파이와 자바스크립트로 IoT 시작하기
라즈베리파이와 자바스크립트로 IoT 시작하기라즈베리파이와 자바스크립트로 IoT 시작하기
라즈베리파이와 자바스크립트로 IoT 시작하기Circulus
 
TestSDIC2015-1(Answer)
TestSDIC2015-1(Answer)TestSDIC2015-1(Answer)
TestSDIC2015-1(Answer)Yong Heui Cho
 
Start io t_with_raspberrypi
Start io t_with_raspberrypiStart io t_with_raspberrypi
Start io t_with_raspberrypiYeonah Ki
 
ICT+UD 융합작품 개발문서(스마트디바이스지능통신)
ICT+UD 융합작품 개발문서(스마트디바이스지능통신)ICT+UD 융합작품 개발문서(스마트디바이스지능통신)
ICT+UD 융합작품 개발문서(스마트디바이스지능통신)Yong Heui Cho
 
한글시계웍샵_ SW
한글시계웍샵_ SW한글시계웍샵_ SW
한글시계웍샵_ SW영광 송
 
아이씨엔 매거진- May 2012. Industrial Communication Network MAGAZINE
아이씨엔 매거진- May 2012. Industrial Communication Network MAGAZINE아이씨엔 매거진- May 2012. Industrial Communication Network MAGAZINE
아이씨엔 매거진- May 2012. Industrial Communication Network MAGAZINESeungMo Oh
 
한글시계웍샵_SW
한글시계웍샵_SW한글시계웍샵_SW
한글시계웍샵_SW영광 송
 
ICT+UD Arduino 융합작품 개발문서(컴퓨터기초설계)
ICT+UD Arduino 융합작품 개발문서(컴퓨터기초설계)ICT+UD Arduino 융합작품 개발문서(컴퓨터기초설계)
ICT+UD Arduino 융합작품 개발문서(컴퓨터기초설계)Yong Heui Cho
 
Random vendigmachine
Random vendigmachineRandom vendigmachine
Random vendigmachinessuser67d471
 
TestSDIC2015-2(Answer)
TestSDIC2015-2(Answer)TestSDIC2015-2(Answer)
TestSDIC2015-2(Answer)Yong Heui Cho
 

Similar to 아두이노 bluetooth (20)

아두이노로 배우는 피지컬 컴퓨팅(중급)
아두이노로 배우는 피지컬 컴퓨팅(중급)아두이노로 배우는 피지컬 컴퓨팅(중급)
아두이노로 배우는 피지컬 컴퓨팅(중급)
 
오픈소스로 쉽게 따라해보는 Unreal과 IoT 연계 및 개발 방법 소개.pdf
오픈소스로 쉽게 따라해보는 Unreal과 IoT 연계 및 개발 방법 소개.pdf오픈소스로 쉽게 따라해보는 Unreal과 IoT 연계 및 개발 방법 소개.pdf
오픈소스로 쉽게 따라해보는 Unreal과 IoT 연계 및 개발 방법 소개.pdf
 
Test-SDIC2018-2(answer)
Test-SDIC2018-2(answer)Test-SDIC2018-2(answer)
Test-SDIC2018-2(answer)
 
메이커 페어 서울 2018 - 측우자격루(개발자용)
메이커 페어 서울 2018 - 측우자격루(개발자용)메이커 페어 서울 2018 - 측우자격루(개발자용)
메이커 페어 서울 2018 - 측우자격루(개발자용)
 
Beacon ble.-leejunwoo@gmail.com
Beacon ble.-leejunwoo@gmail.comBeacon ble.-leejunwoo@gmail.com
Beacon ble.-leejunwoo@gmail.com
 
ICT+UD 융합작품 개발문서(스마트디바이스지능통신)
ICT+UD 융합작품 개발문서(스마트디바이스지능통신)ICT+UD 융합작품 개발문서(스마트디바이스지능통신)
ICT+UD 융합작품 개발문서(스마트디바이스지능통신)
 
20140219 techdays mini 앱 개발 세미나(4)
20140219 techdays mini  앱 개발 세미나(4) 20140219 techdays mini  앱 개발 세미나(4)
20140219 techdays mini 앱 개발 세미나(4)
 
TestSDIC2017-1(answer)
TestSDIC2017-1(answer)TestSDIC2017-1(answer)
TestSDIC2017-1(answer)
 
라즈베리파이와 자바스크립트로 IoT 시작하기
라즈베리파이와 자바스크립트로 IoT 시작하기라즈베리파이와 자바스크립트로 IoT 시작하기
라즈베리파이와 자바스크립트로 IoT 시작하기
 
TestSDIC2015-1(Answer)
TestSDIC2015-1(Answer)TestSDIC2015-1(Answer)
TestSDIC2015-1(Answer)
 
Start io t_with_raspberrypi
Start io t_with_raspberrypiStart io t_with_raspberrypi
Start io t_with_raspberrypi
 
ICT+UD 융합작품 개발문서(스마트디바이스지능통신)
ICT+UD 융합작품 개발문서(스마트디바이스지능통신)ICT+UD 융합작품 개발문서(스마트디바이스지능통신)
ICT+UD 융합작품 개발문서(스마트디바이스지능통신)
 
한글시계웍샵_ SW
한글시계웍샵_ SW한글시계웍샵_ SW
한글시계웍샵_ SW
 
Arduino
ArduinoArduino
Arduino
 
아이씨엔 매거진- May 2012. Industrial Communication Network MAGAZINE
아이씨엔 매거진- May 2012. Industrial Communication Network MAGAZINE아이씨엔 매거진- May 2012. Industrial Communication Network MAGAZINE
아이씨엔 매거진- May 2012. Industrial Communication Network MAGAZINE
 
한글시계웍샵_SW
한글시계웍샵_SW한글시계웍샵_SW
한글시계웍샵_SW
 
ICT+UD Arduino 융합작품 개발문서(컴퓨터기초설계)
ICT+UD Arduino 융합작품 개발문서(컴퓨터기초설계)ICT+UD Arduino 융합작품 개발문서(컴퓨터기초설계)
ICT+UD Arduino 융합작품 개발문서(컴퓨터기초설계)
 
Random vendigmachine
Random vendigmachineRandom vendigmachine
Random vendigmachine
 
2022 Portfolio Korean
2022 Portfolio Korean2022 Portfolio Korean
2022 Portfolio Korean
 
TestSDIC2015-2(Answer)
TestSDIC2015-2(Answer)TestSDIC2015-2(Answer)
TestSDIC2015-2(Answer)
 

More from JungHoon Lee

리스펙토링 6월 세미나, AWS로 개인서버 구축하기
리스펙토링 6월 세미나, AWS로 개인서버 구축하기리스펙토링 6월 세미나, AWS로 개인서버 구축하기
리스펙토링 6월 세미나, AWS로 개인서버 구축하기JungHoon Lee
 
리스펙토링 5월 세미나, git과 github
리스펙토링 5월 세미나, git과 github리스펙토링 5월 세미나, git과 github
리스펙토링 5월 세미나, git과 githubJungHoon Lee
 
삼육대 개발동아리 리스펙토링 OT
삼육대 개발동아리 리스펙토링 OT삼육대 개발동아리 리스펙토링 OT
삼육대 개발동아리 리스펙토링 OTJungHoon Lee
 
Syu 오늘 점심은 뭐먹지? 개요
Syu 오늘 점심은 뭐먹지? 개요Syu 오늘 점심은 뭐먹지? 개요
Syu 오늘 점심은 뭐먹지? 개요JungHoon Lee
 
Syu 동행길 웹개발 개요
Syu 동행길 웹개발 개요Syu 동행길 웹개발 개요
Syu 동행길 웹개발 개요JungHoon Lee
 
와이어샤크 IP패킷의 checksum증명
와이어샤크 IP패킷의 checksum증명와이어샤크 IP패킷의 checksum증명
와이어샤크 IP패킷의 checksum증명JungHoon Lee
 

More from JungHoon Lee (7)

삼육봇 소개
삼육봇 소개삼육봇 소개
삼육봇 소개
 
리스펙토링 6월 세미나, AWS로 개인서버 구축하기
리스펙토링 6월 세미나, AWS로 개인서버 구축하기리스펙토링 6월 세미나, AWS로 개인서버 구축하기
리스펙토링 6월 세미나, AWS로 개인서버 구축하기
 
리스펙토링 5월 세미나, git과 github
리스펙토링 5월 세미나, git과 github리스펙토링 5월 세미나, git과 github
리스펙토링 5월 세미나, git과 github
 
삼육대 개발동아리 리스펙토링 OT
삼육대 개발동아리 리스펙토링 OT삼육대 개발동아리 리스펙토링 OT
삼육대 개발동아리 리스펙토링 OT
 
Syu 오늘 점심은 뭐먹지? 개요
Syu 오늘 점심은 뭐먹지? 개요Syu 오늘 점심은 뭐먹지? 개요
Syu 오늘 점심은 뭐먹지? 개요
 
Syu 동행길 웹개발 개요
Syu 동행길 웹개발 개요Syu 동행길 웹개발 개요
Syu 동행길 웹개발 개요
 
와이어샤크 IP패킷의 checksum증명
와이어샤크 IP패킷의 checksum증명와이어샤크 IP패킷의 checksum증명
와이어샤크 IP패킷의 checksum증명
 

아두이노 bluetooth

  • 1. 1 2016년 3학년 1학기 마이크로프로세서 3B 아두이노 리포트2 - 블루투스 통신과 스마트폰의 어플을 중심으로- 2012335048 윤현구 2012335054 이정훈
  • 2. < 목 차 > 들어가기. 블루투스 세탕하기 ① 개요 ② 회로도 ③ 스케치 ④ 결과화면 Case1. smartphone application으로 부터 숫자(R,G,B)를 입력시켜서 RGB LED을 이용하여 색상을 디자인하기 ① 개요 ② 동작원리 ③ 스케치 ④ 결과화면 ⑤ 결론 Case2. R:0-49, G:50-99, B:100-149을 만족하도록 App Inventor을 이 용하여 3개의 slide을 만들어서 색상을 디자인하기 ① 개요 ② App 디자인과 동작원리 ③ 스케치 ④ 결과화면 ⑤ 결론 Case3. R:0-255, G:0-255, B:0-255을 만족하도록 App Inventor을 이용 하여 3개의 slide을 만들어서 색상을 디자인하기 ① 개요 ② App 디자인과 동작원리 ③ 스케치 ④ 결과화면 ⑤ 결론 2
  • 3. 0-1. Introduction(개요) 3 ①. Background(배경) Bluetooth를 사용하기 전에 Bluetooth모듈에 대한 Setting 이 반드시 필요하다. Setting은 통신상에서 어디로 통신할 것인지를 판별 할 수 있는 ‘이름’을 식별할 수 있어야 하고, 그 ‘이름’이 같은 Bit- rate로 호환되어야 하며, Pin번호를 설정하여 다른 통신으 로 인해 간섭 받지 못하게끔 해야 된다. 이 방법은 Arduino에서 소스적으로 해결이 가능한 방법이 므로, 간략하게 소개를 하고 넘어가도록 하겠다. 1. 우선 SoftwareSerial.h라는 헤더파일을 추가하고, 그에 해당하는 Bluetooth용 객체를 생성한다. 2. 객체를 선언할 때, TX, RX의 핀 번호를 설정한다. 3. Serial과 bluetooth를 보드레이트 9600속도로 맞춘다. 4. 시리얼 포트의 수신 버퍼에 값이 들어왔을 경우, 그것을 그대로 Bluetooth에 쓴다. Serial Port에서 AT+(*설정할 것)(설정한다.)을 입력한다. (*설정할 것 : NAME(이름), PIN(비밀번호), BAUD(통신속도)) 5. 블루투스 포트의 수신 버퍼에 값이 들어왔을 경우, 시리 얼모니터에 값을 반환한다. (Oksetname, OKsetPIN, OK9600)
  • 5. 0-3. Sketch /* 블루투스 Setting */ #include <SoftwareSerial.h> //시리얼통신 라이브러리 호출 SoftwareSerial BT(12, 13); //블루투스모듈에 연결하고 Tx를 12번 pin, Rx를 13번 pin으로 설정한다 void setup() { Serial.begin(9600); //시리얼 통신을 9600속도로 시작 BT.begin(9600); //블루투스 통신을 9600속도로 시작 } void loop() { if (BT.available()) //블루투스 포트의 수신 버퍼에 저장된 데이터 개수를 반환 { Serial.write(BT.read()); //블루투스에서 전송된 문자를 읽어 시리얼모니터 출력 } if (Serial.available()) //시리얼 포트의 수신 버퍼에 저장된 데이터 개수를 반환 { BT.write(Serial.read()); //시리얼모니터에서 전송된 문자를 읽어 블루투스에 출력 } } 5 ①. Sketch edit(작성, optimized code) 0-4. Output (결과) Output file from serial monitor:
  • 6. 1-1. Introduction(개요) Arduino에서 Digital I/O와 Analog Input 을 이용하여 RGB LED를 컨트롤했다면, 이번에는 원격으로 Bluetooth와 스마트 폰의 application을 이용하여 컨트롤하려고 한다. 스마트 폰으로 Input을 하려면, 어떻게 해야 될까? 예를 들어, 멀리 있는 상대에게 연락을 하려면 무엇이 필 요한지 생각해보자. 연락을 하기 위해서는 서로 간에 통신 을 할 수 있는 휴대폰이 필요하고, 그 휴대폰에 맞는 전화 번호가 필요하다. 그리고 그 전화번호가 어디에 연결되는 지 확인하기 위해 연락처 이름도 필요하다. 준비가 모두 되 었다면, 한쪽이 다른 한쪽에게 전화를 걸 것이고, 전화를 받는 쪽에서 수신을 허용해야만 연락이 이루어진다. 이렇 게 해서야 연락이 완료되는 것이다. 마찬가지로, 멀리 있는 기기 사이에 통신을 하려면, 서로 간의 주소를 알아야하고, 연동되어져야 한다. 휴대폰의 Application은 인터페이스를 제공하고 통신규격으로 Bluetooth를 사용한다. Arduino의 Bluetooth모듈인 HC-06 로 스마트폰과 통신을 함으로서, RGB LED를 컨트롤할 수 있는 것이다. 6 ①. Background(배경)
  • 7. 1-1. Introduction(개요) 1. RGB LED를 컨트롤 할 수 있는 Application을 설정한다. 2. Application을 휴대폰에 다운로드받는다. 3. 휴대폰과 Arduino를 Bluetooth로 연결한다. 4. Application에서 숫자를 입력한다. 5. 결과를 확인한다. 7 ②. Purpose(목적) 1-2. Configuration(동작원리) How to operate(동작원리) 1. Arduino에서 블루투스를 연결하고 통신을 할 수 있게 설 정한다. 2. Byte stream으로 Arduino에 0~255값을 3개 전송한다 3. Arduino는 블루투스 버퍼에 값이 전송되었을 경우, 각각 R,G,B의 값으로 인식하고 함수를 호출한다. 4. RGB LED가 값에 맞게 출력된다.
  • 8. 1-3. Sketch /* Case 1. smartphone application으로 부터 숫자(R,G,B)를 입력시켜서 RGB LED을 이용하여 색상을 디자인하기 */ #include <SoftwareSerial.h> //시리얼통신 라이브러리 호출 SoftwareSerial BT(12, 13); //블루투스모듈에 연결하고 Tx를 12번 pin, Rx를 13번 pin으로 설정한다 const int led[3]={9,10,11}; //(pin) 11=RedLed, 10=GreenLed, 9=BlueLed int value[3]={0}; //(index) 0=Red, 1=Green, 2=Blue void setup() { BT.begin(9600); //블루투스 통신을 9600속도로 시작 Serial.begin(9600); //시리얼 통신을 9600속도로 시작 for(int i=0;i<3;i++) { pinMode(led[i],OUTPUT); //led 3개를 출력으로 지정 } Serial.println(""); Serial.println("Case 1."); Serial.println("<<< RGB LED: Smartphone application can make all the colors >>>"); Serial.println("Input the RGB value through bluetooth"); } void loop() { if(BT.available()>0) //블루투스 포트의 수신 버퍼에 저장된 데이터 개수를 반환 { for(int i=0;i<3;i++) { value[i]=BT.parseInt(); //블루투스 버퍼에 있는 데이터 중 다음에 사용할 것을 Int형으로 형변환하여 반환 value[i]=constrain(value[i], 0, 255); //value값을 0~255으로 제한 } setColor(value[0], value[1], value[2]); //함수호출 } } /* (pin) 11=RedLed, 10=GreenLed, 9=BlueLed (index) 0=BlueLed, 1=GreenLed, 2=RedLed setColor함수는 매개변수 값에 따라 PWM으로 RGB LED를 출력합니다. */ void setColor(int red, int green, int blue) { analogWrite(led[2],red); Serial.print("red: "); Serial.print(red); analogWrite(led[1],green); Serial.print("tgreen: "); Serial.print(green); analogWrite(led[0],blue); Serial.print("tblue: "); Serial.print(blue); Serial.println(""); } 8 ①. Sketch edit(작성, optimized code)
  • 9. 1-3. Sketch 9 ② Using flowchart and block diagram, Sketch analysis (분석) start SoftwareSerial BT(12, 13) Led[3]={9, 10, 11} BT 수신버퍼 입력체크 BT.available()>0 수신문자 저장 value[0..2]=BT.parseInt() 함수호출 setColor(value[0], value[1], value[2]) yes no
  • 10. 1-4. Output (결과) 2016-05-30 21:17:52 Case 1. 2016-05-30 21:17:52 <<< RGB LED: Smartphone application can make all the colors >>> 2016-05-30 21:18:11 Input the RGB value through bluetooth 2016-05-30 21:18:22 red: 255 green: 0 blue: 0 2016-05-30 21:18:29 red: 255 green: 94 blue: 0 2016-05-30 21:18:36 red: 127 green: 127 blue: 0 2016-05-30 21:18:40 red: 0 green: 255 blue: 0 2016-05-30 21:18:47 red: 0 green: 0 blue: 255 2016-05-30 21:18:53 red: 127 green: 0 blue: 127 2016-05-30 21:19:00 red: 255 green: 255 blue: 255 2016-05-30 21:19:07 red: 0 green: 0 blue: 0 10 ①. Output file from serial monitor:
  • 11. 1-4. Output (결과) 11 ②. 사진 첨부(arduino board + bread board) 초기상태 R: 255, G: 0, B: 0 R: 255, G: 94, B: 0 R: 127, G: 127, B: 0 R: 0, G: 255, B: 0 R: 0, G: 0, B: 255 R: 127, G: 0, B: 127 R: 255, G: 255, B: 255 R: 0, G: 0, B: 0
  • 12. 1-5. Conclusion (결론) • Bluetooth와 스마트 폰에서의 Application으로 Arduino 에 연동시키는 방법을 기본적으로 배웠습니다. • 추가적으로는 어떻게 Application을 만들어 내는지를 배웠고, 그에 관한 동작 원리를 이해할 수 있었습니다. • application에도 여러 가지 Tool이 있는 것을 보고 다음 에는 좀 더 다양한 도구들을 이용할 수 있었으면 좋겠 습니다. 12 ①. 배운점 ②. 느낀점 • 수많은 Application을 이미 휴대폰에서 사용하고 있으 나, 스스로 만들어서 사용한 Application은 매우 초보적 인 단계로 생각됩니다. 앞으로 더 심도 있게 배워서 다 양한 Application을 만들 수 있으면 좋겠습니다. 왜냐하 면, Application디자인 개발 방면은 굉장히 인기가 있고, 사람들이 필요로 하는 작업이며, 장래가 유망한 업무이 기 때문입니다.
  • 13. 2-1. Introduction(개요) 스마트 폰에서 숫자로 직접 Input하여 RGB LED를 컨트롤 하는 것에 성공했다면, 다음에는 Slide bar를 이용하려고 한다. Slide bar를 이용하는 이유는, Arduino에서 가변저항기의 제어와 가장 유사한 방식이기 때문이다. 여기서 유의할 점 은, Arduino에서 가변저항기의 범위를 Mapping하고 설정 해야 되는 것처럼, Slide bar또한 범위를 Mapping해줘야 된 다는 것이다. 또한 Application에서 몇 Byte를 쓸 것인지 도 중요한 점이다. 만약 1Byte만으로 만들 것 이라면 App Inventor에서 3개 의 Slide bar는 0~255의 숫자를 각 슬라이드마다 나눠서 3 등분 해야만 된다. 그래야 값에 따라 Slide bar를 인식하고 작동하기 때문이다. 13 ①. Background(배경)
  • 14. 2-1. Introduction(개요) 1. Application으로 3개의 Slide bar를 만든다. 2. 3개의 Slide bar는 각 색깔 (Red, Green, Blue)과 호환되 게 한다. 3. 스마트 폰으로 Application을 연동한다. 4. Bluetooth를 이용하여 Application을 Arduino에 연결, 작동하게 한다. 14 ②. Purpose(목적)
  • 16. 1. app inventor에서 1Byte로 Slide Bar Block을 3개 만든다. 2. 1Byte이므로 범위는 0~255이다. 3. 3개의 슬라이드에 RGB LED를 적당하게 3등분하여 범위 를 지정한다. (R: 0~49, G: 50~99, B: 100~149) 4. 각 슬라이드를 움직여서 RGB LED가 작동하는지 확인한 다. 16 ②. How to operate(동작원리) 2-2. Configuration(App디자인/동작원리)
  • 17. 2-3. Sketch /* Case2. R:0-49, G:50-99, B:100-149을 만족하도록 App Inventor을 이용하여 3개의 slide을 만들어서 색상을 디자인 하기 */ #include <SoftwareSerial.h> //시리얼통신 라이브러리 호출 SoftwareSerial BT(12, 13); //블루투스모듈에 연결하고 Tx를 12번 pin, Rx를 13번 pin으로 설정한다 const int led[3]={9,10,11}; //(pin) 11=RedLed, 10=GreenLed, 9=BlueLed int data=0; //블루투스로 입력받은 1byte 값을 저장하는 변수 선언 int value[3]={0}; //(index) 0=Red, 1=Green, 2=Blue void setup() { BT.begin(9600); //블루투스 통신을 9600속도로 시작 Serial.begin(9600); //시리얼 통신을 9600속도로 시작 for(int i=0;i<3;i++) { pinMode(led[i],OUTPUT); //led 3개를 출력으로 지정 } Serial.println(""); Serial.println("Case 2."); Serial.println("<<< RGB LED: App slider can make all the colors >>>"); Serial.println("Control the RGB slider"); } void loop() { if(BT.available()>0) //블루투스 포트의 수신 버퍼에 저장된 데이터 개수를 반환 { //반환갯수가 1개이상일때만 문장실행 data=BT.read(); //블루투스로 부터 값을 입력받아 저장 if(data<50) //data에 0~49값이 들어오면 Red Slider로 인식 { value[0]=map(data, 0, 49, 0, 255); //0~49를 0~255로 맵핑 } else if(data<100) //data에 0~99값이 들어오면 Red Slider로 인식 { value[1]=map(data, 50, 99, 0, 255); //50~99를 0~255로 맵핑 } else //data에 100~149값이 들어오면 Red Slider로 인식 { value[2]=map(data, 100, 149, 0, 255); //100~149를 0~255로 맵핑 } setColor(value[0], value[1], value[2]); //함수호출 } } /* (pin) 11=RedLed, 10=GreenLed, 9=BlueLed (index) 0=BlueLed, 1=GreenLed, 2=RedLed setColor함수는 매개변수 값에 따라 PWM으로 RGB LED를 출력합니다. */ void setColor(int red, int green, int blue) //9=blue, 10=green, 11=red { analogWrite(led[2],red); Serial.print("red: "); Serial.print(red); analogWrite(led[1],green); Serial.print("tgreen: "); Serial.print(green); analogWrite(led[0],blue); Serial.print("tblue: "); Serial.print(blue); Serial.println(""); } 17 ①. Sketch edit(작성, optimized code)
  • 18. 2-3. Sketch 18 ② Using flowchart and block diagram, Sketch analysis (분석) start SoftwareSerial BT(12, 13) Led[3]={9, 10, 11} BT 수신버퍼 입력체크 BT.available()>0 수신문자 저장 data=BT.read() 함수호출 setColor(value[0], value[1], value[2]) yes no data<50 data<100 data<150 no no yes yes yes Red 값에 맵핑 value[0]=map(data, 0, 49, 0, 255) Green 값에 맵핑 value[1]=map(data, 50, 99, 0, 255) Blue 값에 맵핑 value[2]=map(data, 100, 149, 0, 255)
  • 19. 2-4. Output (결과) 2016-06-02 15:35:59 Case 2. 2016-06-02 15:35:59 <<< RGB LED: App slider can make all the colors >>> 2016-06-02 15:36:03 Control the RGB slider 2016-06-02 15:36:06 red: 114 green: 0 blue: 0 2016-06-02 15:36:06 red: 239 green: 0 blue: 0 2016-06-02 15:36:06 red: 244 green: 0 blue: 0 2016-06-02 15:36:09 red: 249 green: 0 blue: 0 2016-06-02 15:36:10 red: 234 green: 0 blue: 0 2016-06-02 15:36:10 red: 228 green: 0 blue: 0 2016-06-02 15:36:10 red: 223 green: 0 blue: 0 2016-06-02 15:36:10 red: 218 green: 0 blue: 0 2016-06-02 15:36:10 red: 213 green: 0 blue: 0 2016-06-02 15:36:10 red: 202 green: 0 blue: 0 2016-06-02 15:36:10 red: 197 green: 0 blue: 0 2016-06-02 15:36:10 red: 192 green: 0 blue: 0 2016-06-02 15:36:10 red: 187 green: 0 blue: 0 2016-06-02 15:36:10 red: 182 green: 0 blue: 0 2016-06-02 15:36:10 red: 176 green: 0 blue: 0 2016-06-02 15:36:10 red: 171 green: 0 blue: 0 2016-06-02 15:36:10 red: 161 green: 0 blue: 0 2016-06-02 15:36:10 red: 156 green: 0 blue: 0 2016-06-02 15:36:10 red: 145 green: 0 blue: 0 2016-06-02 15:36:10 red: 140 green: 0 blue: 0 2016-06-02 15:36:10 red: 130 green: 0 blue: 0 2016-06-02 15:36:10 red: 124 green: 0 blue: 0 2016-06-02 15:36:10 red: 119 green: 0 blue: 0 2016-06-02 15:36:10 red: 109 green: 0 blue: 0 2016-06-02 15:36:10 red: 104 green: 0 blue: 0 2016-06-02 15:36:10 red: 93 green: 0 blue: 0 2016-06-02 15:36:10 red: 88 green: 0 blue: 0 2016-06-02 15:36:10 red: 78 green: 0 blue: 0 2016-06-02 15:36:10 red: 72 green: 0 blue: 0 2016-06-02 15:36:10 red: 67 green: 0 blue: 0 2016-06-02 15:36:10 red: 57 green: 0 blue: 0 2016-06-02 15:36:10 red: 52 green: 0 blue: 0 2016-06-02 15:36:10 red: 46 green: 0 blue: 0 2016-06-02 15:36:10 red: 36 green: 0 blue: 0 2016-06-02 15:36:10 red: 31 green: 0 blue: 0 2016-06-02 15:36:10 red: 26 green: 0 blue: 0 2016-06-02 15:36:11 red: 15 green: 0 blue: 0 2016-06-02 15:36:11 red: 10 green: 0 blue: 0 2016-06-02 15:36:11 red: 0 green: 0 blue: 0 19 ①. Output file from serial monitor:
  • 20. 2016-06-02 15:36:18 red: 0 green: 0 blue: 0 2016-06-02 15:36:19 red: 0 green: 119 blue: 0 2016-06-02 15:36:21 red: 0 green: 244 blue: 0 2016-06-02 15:36:22 red: 0 green: 187 blue: 0 2016-06-02 15:36:22 red: 0 green: 156 blue: 0 2016-06-02 15:36:22 red: 0 green: 156 blue: 0 2016-06-02 15:36:22 red: 0 green: 150 blue: 0 2016-06-02 15:36:22 red: 0 green: 145 blue: 0 2016-06-02 15:36:22 red: 0 green: 135 blue: 0 2016-06-02 15:36:22 red: 0 green: 124 blue: 0 2016-06-02 15:36:22 red: 0 green: 119 blue: 0 2016-06-02 15:36:22 red: 0 green: 109 blue: 0 2016-06-02 15:36:22 red: 0 green: 98 blue: 0 2016-06-02 15:36:22 red: 0 green: 88 blue: 0 2016-06-02 15:36:22 red: 0 green: 78 blue: 0 2016-06-02 15:36:22 red: 0 green: 72 blue: 0 2016-06-02 15:36:22 red: 0 green: 57 blue: 0 2016-06-02 15:36:22 red: 0 green: 46 blue: 0 2016-06-02 15:36:22 red: 0 green: 36 blue: 0 2016-06-02 15:36:22 red: 0 green: 26 blue: 0 2016-06-02 15:36:23 red: 0 green: 5 blue: 0 2016-06-02 15:36:26 red: 0 green: 0 blue: 0 2016-06-02 15:36:26 red: 0 green: 0 blue: 20 2016-06-02 15:36:26 red: 0 green: 0 blue: 26 2016-06-02 15:36:26 red: 0 green: 0 blue: 31 2016-06-02 15:36:26 red: 0 green: 0 blue: 36 2016-06-02 15:36:26 red: 0 green: 0 blue: 41 2016-06-02 15:36:26 red: 0 green: 0 blue: 52 2016-06-02 15:36:26 red: 0 green: 0 blue: 57 2016-06-02 15:36:26 red: 0 green: 0 blue: 67 2016-06-02 15:36:26 red: 0 green: 0 blue: 72 2016-06-02 15:36:27 red: 0 green: 0 blue: 83 2016-06-02 15:36:27 red: 0 green: 0 blue: 93 2016-06-02 15:36:27 red: 0 green: 0 blue: 104 2016-06-02 15:36:27 red: 0 green: 0 blue: 109 2016-06-02 15:36:27 red: 0 green: 0 blue: 119 2016-06-02 15:36:27 red: 0 green: 0 blue: 124 2016-06-02 15:36:27 red: 0 green: 0 blue: 130 2016-06-02 15:36:27 red: 0 green: 0 blue: 140 2016-06-02 15:36:27 red: 0 green: 0 blue: 145 2016-06-02 15:36:27 red: 0 green: 0 blue: 161 2016-06-02 15:36:27 red: 0 green: 0 blue: 166 2016-06-02 15:36:27 red: 0 green: 0 blue: 171 2016-06-02 15:36:27 red: 0 green: 0 blue: 176 2016-06-02 15:36:27 red: 0 green: 0 blue: 182 2016-06-02 15:36:27 red: 0 green: 0 blue: 187 2016-06-02 15:36:27 red: 0 green: 0 blue: 197 2016-06-02 15:36:27 red: 0 green: 0 blue: 202 2016-06-02 15:36:27 red: 0 green: 0 blue: 208 2016-06-02 15:36:27 red: 0 green: 0 blue: 213 2016-06-02 15:36:27 red: 0 green: 0 blue: 218 2016-06-02 15:36:27 red: 0 green: 0 blue: 223 2016-06-02 15:36:27 red: 0 green: 0 blue: 228 2016-06-02 15:36:27 red: 0 green: 0 blue: 234 2016-06-02 15:36:27 red: 0 green: 0 blue: 239 2016-06-02 15:36:28 red: 0 green: 0 blue: 244 2016-06-02 15:36:28 red: 0 green: 0 blue: 249 20 ①. Output file from serial monitor - 이어서
  • 21. 2016-06-02 15:36:28 red: 0 green: 0 blue: 249 2016-06-02 15:36:28 red: 0 green: 0 blue: 228 2016-06-02 15:36:28 red: 0 green: 0 blue: 228 2016-06-02 15:36:28 red: 0 green: 0 blue: 223 2016-06-02 15:36:28 red: 0 green: 0 blue: 218 2016-06-02 15:36:28 red: 0 green: 0 blue: 208 2016-06-02 15:36:28 red: 0 green: 0 blue: 197 2016-06-02 15:36:28 red: 0 green: 0 blue: 187 2016-06-02 15:36:28 red: 0 green: 0 blue: 176 2016-06-02 15:36:28 red: 0 green: 0 blue: 161 2016-06-02 15:36:28 red: 0 green: 0 blue: 145 2016-06-02 15:36:28 red: 0 green: 0 blue: 130 2016-06-02 15:36:28 red: 0 green: 0 blue: 119 2016-06-02 15:36:28 red: 0 green: 0 blue: 104 2016-06-02 15:36:28 red: 0 green: 0 blue: 88 2016-06-02 15:36:28 red: 0 green: 0 blue: 78 2016-06-02 15:36:28 red: 0 green: 0 blue: 62 2016-06-02 15:36:28 red: 0 green: 0 blue: 46 2016-06-02 15:36:28 red: 0 green: 0 blue: 36 2016-06-02 15:36:28 red: 0 green: 0 blue: 26 2016-06-02 15:36:28 red: 0 green: 0 blue: 10 2016-06-02 15:36:40 red: 0 green: 0 blue: 5 2016-06-02 15:36:40 red: 0 green: 0 blue: 0 2016-06-02 15:36:40 red: 244 green: 0 blue: 0 2016-06-02 15:36:40 red: 249 green: 0 blue: 0 2016-06-02 15:36:41 red: 249 green: 0 blue: 0 2016-06-02 15:36:45 red: 249 green: 244 blue: 0 2016-06-02 15:36:45 red: 249 green: 244 blue: 0 2016-06-02 15:36:49 red: 249 green: 104 blue: 0 2016-06-02 15:36:49 red: 249 green: 98 blue: 0 2016-06-02 15:36:50 red: 249 green: 93 blue: 0 2016-06-02 15:36:50 red: 249 green: 78 blue: 0 2016-06-02 15:36:50 red: 249 green: 67 blue: 0 2016-06-02 15:36:50 red: 249 green: 52 blue: 0 2016-06-02 15:36:50 red: 249 green: 36 blue: 0 2016-06-02 15:36:50 red: 249 green: 20 blue: 0 2016-06-02 15:36:50 red: 249 green: 5 blue: 0 2016-06-02 15:36:51 red: 249 green: 0 blue: 0 2016-06-02 15:36:51 red: 249 green: 5 blue: 0 2016-06-02 15:36:52 red: 249 green: 0 blue: 0 2016-06-02 15:36:52 red: 249 green: 0 blue: 0 2016-06-02 15:36:52 red: 249 green: 0 blue: 239 2016-06-02 15:36:53 red: 249 green: 0 blue: 239 2016-06-02 15:36:53 red: 249 green: 0 blue: 244 2016-06-02 15:36:53 red: 249 green: 0 blue: 244 2016-06-02 15:36:53 red: 249 green: 0 blue: 249 2016-06-02 15:36:53 red: 249 green: 0 blue: 249 2016-06-02 15:36:53 red: 249 green: 0 blue: 255 2016-06-02 15:36:53 red: 249 green: 0 blue: 249 2016-06-02 15:36:53 red: 249 green: 0 blue: 255 2016-06-02 15:36:53 red: 249 green: 0 blue: 249 2016-06-02 15:36:53 red: 249 green: 0 blue: 255 2016-06-02 15:36:53 red: 249 green: 0 blue: 249 2016-06-02 15:36:53 red: 249 green: 0 blue: 255 2016-06-02 15:36:53 red: 249 green: 0 blue: 249 2016-06-02 15:36:53 red: 249 green: 0 blue: 255 2016-06-02 15:36:55 red: 249 green: 0 blue: 249 2016-06-02 15:36:55 red: 249 green: 0 blue: 255 21 ①. Output file from serial monitor - 이어서
  • 22. 2016-06-02 15:36:55 red: 249 green: 0 blue: 255 2016-06-02 15:37:09 red: 249 green: 0 blue: 0 2016-06-02 15:37:10 red: 249 green: 244 blue: 0 2016-06-02 15:37:10 red: 249 green: 244 blue: 0 2016-06-02 15:37:10 red: 249 green: 244 blue: 244 2016-06-02 15:37:18 red: 249 green: 249 blue: 244 2016-06-02 15:37:18 red: 249 green: 255 blue: 244 2016-06-02 15:37:19 red: 249 green: 255 blue: 249 2016-06-02 15:37:19 red: 249 green: 255 blue: 244 2016-06-02 15:37:19 red: 249 green: 255 blue: 244 2016-06-02 15:37:20 red: 249 green: 255 blue: 249 2016-06-02 15:37:20 red: 249 green: 255 blue: 249 2016-06-02 15:37:20 red: 249 green: 255 blue: 255 2016-06-02 15:37:32 red: 255 green: 255 blue: 255 2016-06-02 15:37:32 red: 0 green: 255 blue: 255 2016-06-02 15:37:33 red: 0 green: 0 blue: 255 2016-06-02 15:37:39 red: 0 green: 0 blue: 0 22 ①. Output file from serial monitor - 이어서
  • 23. 2-4. Output (결과) 23 ②. 사진 첨부(arduino board + bread board) 초기상태 약한 빨강 강한 빨강 주황 노랑 약한 초록 강한 초록 파랑 보라 흰색 OFF
  • 24. 2-5. Conclusion (결론) • RGB LED 값을 3등분 하는 이유를 깨달았는데, 각 Slide Bar를 0~255으로 3개를 설정하면, Arduino는 각각의 Slide Bar를 인식하지 못한다. 다 같은 0~255로 인식하 기 때문이다. 따라서 3등분을 하고 값의 범위에 따라 Slide Bar를 인식하도록 하는 것이다. • 비록 mapping을 하여서 밝기가 약하진 않지만, 이 방 법의 문제점은 0~255보다 밀도가 떨어진다는 것이다. 시리얼 모니터를보면 조금만 움직여도 값이 확확 바뀐 다. 24 ①. 배운점 ②. 느낀점 • 밀도를 좀더 올릴수 있는 방법이 없을까 고민하게 되었 다. Slide Bar를 조금 움직일때마다 약 10씩이동하였는 데 좀더 세밀하게 움직여서 내가 원하는 색을 출력하고 싶어졌다.
  • 25. 3-1. Introduction(개요) Case2에서 우리는 3개의 Slide Bar를 이용하여 RGB LED 의 컨트롤에 성공했다. 하지만 RGB LED의 밝기가 밀도가 낮게 되는 것에 대해 불편을 느낄 수 있었을 것이다. Case2방식을 개선하고자 하려면 어떻게 해야 되는지를 고 민해 볼 필요가 있다. 문제점은 각 Slide Bar의 App Block 에 있다. 3개의 각 Slide bar마다 0~255의 숫자를 Input하 려면 결국은 서로 다른 숫자가 Input되어야 한다. 각 0~255의 숫자들 앞에 번호표가 붙는다면 어떨까?? 1번 Slide Bar : <1> 0~255 2번 Slide Bar : <2> 0~255 3번 Slide Bar : <3> 0~255 위의 각 번호가 표현하고자 하는 방법이다. 255를 넘어서 므로 위와 같이 표현하기 위해서는 1Byte가 아닌 2Byte가 필요함을 알 수있다. 25 ①. Background(배경)
  • 26. 3-1. Introduction(개요) 1. Application으로 3개의 Slide Bar를 만든다. 2. 3개의 Slide Bar는 최소값과 최대값을 각각 0~255, 256~511, 512~767 으로 설정한다. 3. 스마트 폰으로 Application을 다운로드받아서 Bluetooth를 연결하고 RGB LED를 컨트롤한다. 26 ②. Purpose(목적)
  • 28. 3-2. Configuration(App디자인/동작원리) 1. App Inventor에서 각 Slide Bar Block를 2Byte로 설정 한다. 2Byte로 설정하면, 1번 Slide Bar는 2진수로 앞Byte가 00000000이고 뒷Byte 가 00000000~11111111까지의 범위를 갖는다. 2번 Slide Bar는 앞Byte가 00000001이고 뒷Byte가 00000000~11111111까지의 범위를 갖는다. 3번 Slide Bar에서는 앞Byte가 00000010이고 뒷Byte가 00000000~11111111까지의 범위를 갖는다. 위 2진수 값들의 범위차이는 굉장히 중요하다. 앞Byte가 Slide Bar를 인식하는 역할을 하기 때문이다. 2. 각 Slide Bar를 RGB LED에 호환되게끔 한다. 3. Application을 QR코드로 업로드 한다. 4. 업로드 된 QR코드를 스마트 폰으로 다운로드받는다. 5. Application을 실행하여 잘 작동하는지 확인한다. 28 ②. How to operate(동작원리)
  • 29. 3-3. Sketch /* Case 3. R:0-255, G:0-255, B:0-255을 만족하도록 App Inventor을 이용하여 3개의 slide을 만들어서 색상을 디자인하기 */ #include <SoftwareSerial.h> //시리얼통신 라이브러리 호출 SoftwareSerial BT(12, 13); //블루투스모듈에 연결하고 Tx를 12번 pin, Rx를 13번 pin으로 설정한다 const int led[3]={9,10,11}; //(pin) 11=RedLed, 10=GreenLed, 9=BlueLed int data[2]={0}; //블루투스로 입력받은 2byte 값을 저장하는 배열 선언 int value[3]={0}; //(index) 0=Red, 1=Green, 2=Blue void setup() { BT.begin(9600); //블루투스 통신을 9600속도로 시작 Serial.begin(9600); //시리얼 통신을 9600속도로 시작 for(int i=0;i<3;i++) { pinMode(led[i],OUTPUT); //led 3개를 출력으로 지정 } Serial.println(""); Serial.println("Case 3."); Serial.println("<<< RGB LED: App slider can make all the colors >>>"); Serial.println("Control the RGB slider"); } void loop() { if(BT.available()>=2) //블루투스 포트의 수신 버퍼에 저장된 데이터 개수(byte단위)가 2개이상일때만 문장실행 { data[0]=BT.read(); //2byte중 뒤의 8비트를 수신해서 저장, 슬라이더 값을 인식함 data[1]=BT.read(); //2byte중 앞의 8비트를 수신해서 저장, 각 슬라이더(R,G,B)를 인식함 Serial.print("data[0]: "); Serial.print(data[0]); Serial.print("tdata[1]: "); Serial.print(data[1]); Serial.println(""); if(data[1]==0) //Red 슬라이더 { value[0]=map(data[0], 0, 255, 0, 255); value[0]=constrain(data[0], 0, 255); } else if(data[1]==1) //Green 슬라이더 { value[1]=map(data[0], 0, 255, 0, 255); value[1]=constrain(data[0], 0, 255); } else if(data[1]==2) //Blue 슬라이더 { value[2]=map(data[0], 0, 255, 0, 255); value[2]=constrain(data[0], 0, 255); } setColor(value[0], value[1], value[2]); //함수호출 } } /* (pin) 11=RedLed, 10=GreenLed, 9=BlueLed (index) 0=BlueLed, 1=GreenLed, 2=RedLed setColor함수는 매개변수 값에 따라 PWM으로 RGB LED를 출력합니다. */ void setColor(int red, int green, int blue) //9=blue, 10=green, 11=red { analogWrite(led[2],red); Serial.print("red: "); Serial.print(red); analogWrite(led[1],green); Serial.print("tgreen: "); Serial.print(green); analogWrite(led[0],blue); Serial.print("tblue: "); Serial.print(blue); Serial.println(""); } 29 ①. Sketch edit(작성, optimized code)
  • 30. 3-3. Sketch 30 ② Using flowchart and block diagram, Sketch analysis (분석) start SoftwareSerial BT(12, 13) Led[3]={9, 10, 11} BT 수신버퍼 입력체크 BT.available()>=2 수신문자 저장 data[0]=BT.read() data[1]=BT.read() 함수호출 setColor(value[0], value[1], value[2]) yes no data[1]==0 data[1]==1 data[1]==2 no no yes yes yes Red 값에 맵핑 value[0]=map(data[ 0], 0, 255, 0, 255) Green 값에 맵핑 value[1]=map(data[ 0], 0, 255, 0, 255) Blue 값에 맵핑 value[2]=map(data[ 0], 0, 255, 0, 255)
  • 31. 3-4. Output (결과) 2016-06-02 16:32:57 Case 3. 2016-06-02 16:32:57 <<< RGB LED: App slider can make all the colors >>> 2016-06-02 16:32:59 Control the RGB slider 2016-06-02 16:32:59 data[0]: 51 data[1]: 0 2016-06-02 16:33:00 red: 51 green: 0 blue: 0 2016-06-02 16:33:00 data[0]: 97 data[1]: 0 2016-06-02 16:33:01 red: 97 green: 0 blue: 0 2016-06-02 16:33:01 data[0]: 148 data[1]: 0 2016-06-02 16:33:03 red: 148 green: 0 blue: 0 2016-06-02 16:33:03 data[0]: 209 data[1]: 0 2016-06-02 16:33:04 red: 209 green: 0 blue: 0 2016-06-02 16:33:04 data[0]: 255 data[1]: 0 2016-06-02 16:33:07 red: 255 green: 0 blue: 0 2016-06-02 16:33:07 data[0]: 242 data[1]: 0 2016-06-02 16:33:07 red: 242 green: 0 blue: 0 2016-06-02 16:33:12 data[0]: 41 data[1]: 0 2016-06-02 16:33:12 red: 41 green: 0 blue: 0 2016-06-02 16:33:12 data[0]: 3 data[1]: 0 2016-06-02 16:33:13 red: 3 green: 0 blue: 0 2016-06-02 16:33:13 data[0]: 0 data[1]: 0 2016-06-02 16:33:15 red: 0 green: 0 blue: 0 2016-06-02 16:33:15 data[0]: 20 data[1]: 1 2016-06-02 16:33:15 red: 0 green: 20 blue: 0 2016-06-02 16:33:15 data[0]: 23 data[1]: 1 2016-06-02 16:33:15 red: 0 green: 23 blue: 0 2016-06-02 16:33:15 data[0]: 26 data[1]: 1 2016-06-02 16:33:15 red: 0 green: 26 blue: 0 2016-06-02 16:33:16 data[0]: 28 data[1]: 1 2016-06-02 16:33:16 red: 0 green: 28 blue: 0 2016-06-02 16:33:16 data[0]: 31 data[1]: 1 2016-06-02 16:33:16 red: 0 green: 31 blue: 0 2016-06-02 16:33:16 data[0]: 36 data[1]: 1 2016-06-02 16:33:16 red: 0 green: 36 blue: 0 2016-06-02 16:33:16 data[0]: 41 data[1]: 1 2016-06-02 16:33:16 red: 0 green: 41 blue: 0 2016-06-02 16:33:16 data[0]: 46 data[1]: 1 2016-06-02 16:33:16 red: 0 green: 46 blue: 0 2016-06-02 16:33:16 data[0]: 51 data[1]: 1 2016-06-02 16:33:16 red: 0 green: 51 blue: 0 2016-06-02 16:33:16 data[0]: 61 data[1]: 1 2016-06-02 16:33:16 red: 0 green: 61 blue: 0 2016-06-02 16:33:16 data[0]: 66 data[1]: 1 2016-06-02 16:33:16 red: 0 green: 66 blue: 0 2016-06-02 16:33:16 data[0]: 74 data[1]: 1 2016-06-02 16:33:16 red: 0 green: 74 blue: 0 2016-06-02 16:33:16 data[0]: 79 data[1]: 1 2016-06-02 16:33:16 red: 0 green: 79 blue: 0 2016-06-02 16:33:16 data[0]: 87 data[1]: 1 2016-06-02 16:33:16 red: 0 green: 87 blue: 0 2016-06-02 16:33:16 data[0]: 94 data[1]: 1 2016-06-02 16:33:16 red: 0 green: 94 blue: 0 2016-06-02 16:33:16 data[0]: 102 data[1]: 1 2016-06-02 16:33:16 red: 0 green: 102 blue: 0 2016-06-02 16:33:16 data[0]: 107 data[1]: 1 2016-06-02 16:33:16 red: 0 green: 107 blue: 0 2016-06-02 16:33:16 data[0]: 115 data[1]: 1 2016-06-02 16:33:16 red: 0 green: 115 blue: 0 2016-06-02 16:33:16 data[0]: 130 data[1]: 1 2016-06-02 16:33:16 red: 0 green: 130 blue: 0 2016-06-02 16:33:16 data[0]: 135 data[1]: 1 2016-06-02 16:33:16 red: 0 green: 135 blue: 0 2016-06-02 16:33:16 data[0]: 143 data[1]: 1 2016-06-02 16:33:16 red: 0 green: 143 blue: 0 2016-06-02 16:33:16 data[0]: 148 data[1]: 1 2016-06-02 16:33:17 red: 0 green: 148 blue: 0 2016-06-02 16:33:17 data[0]: 156 data[1]: 1 2016-06-02 16:33:17 red: 0 green: 156 blue: 0 2016-06-02 16:33:17 data[0]: 161 data[1]: 1 2016-06-02 16:33:17 red: 0 green: 161 blue: 0 31 ①. Output file from serial monitor:
  • 32. 2016-06-02 16:33:17 data[0]: 168 data[1]: 1 2016-06-02 16:33:17 red: 0 green: 168 blue: 0 2016-06-02 16:33:17 data[0]: 173 data[1]: 1 2016-06-02 16:33:17 red: 0 green: 173 blue: 0 2016-06-02 16:33:17 data[0]: 178 data[1]: 1 2016-06-02 16:33:17 red: 0 green: 178 blue: 0 2016-06-02 16:33:17 data[0]: 186 data[1]: 1 2016-06-02 16:33:17 red: 0 green: 186 blue: 0 2016-06-02 16:33:17 data[0]: 191 data[1]: 1 2016-06-02 16:33:17 red: 0 green: 191 blue: 0 2016-06-02 16:33:17 data[0]: 196 data[1]: 1 2016-06-02 16:33:17 red: 0 green: 196 blue: 0 2016-06-02 16:33:17 data[0]: 201 data[1]: 1 2016-06-02 16:33:17 red: 0 green: 201 blue: 0 2016-06-02 16:33:17 data[0]: 207 data[1]: 1 2016-06-02 16:33:17 red: 0 green: 207 blue: 0 2016-06-02 16:33:17 data[0]: 214 data[1]: 1 2016-06-02 16:33:17 red: 0 green: 214 blue: 0 2016-06-02 16:33:17 data[0]: 219 data[1]: 1 2016-06-02 16:33:17 red: 0 green: 219 blue: 0 2016-06-02 16:33:17 data[0]: 235 data[1]: 1 2016-06-02 16:33:17 red: 0 green: 235 blue: 0 2016-06-02 16:33:17 data[0]: 240 data[1]: 1 2016-06-02 16:33:17 red: 0 green: 240 blue: 0 2016-06-02 16:33:17 data[0]: 245 data[1]: 1 2016-06-02 16:33:21 red: 0 green: 245 blue: 0 2016-06-02 16:33:21 data[0]: 255 data[1]: 1 2016-06-02 16:33:21 red: 0 green: 255 blue: 0 2016-06-02 16:33:22 data[0]: 199 data[1]: 1 2016-06-02 16:33:22 red: 0 green: 199 blue: 0 2016-06-02 16:33:22 data[0]: 189 data[1]: 1 2016-06-02 16:33:22 red: 0 green: 189 blue: 0 2016-06-02 16:33:22 data[0]: 184 data[1]: 1 2016-06-02 16:33:22 red: 0 green: 184 blue: 0 2016-06-02 16:33:22 data[0]: 178 data[1]: 1 2016-06-02 16:33:22 red: 0 green: 178 blue: 0 2016-06-02 16:33:22 data[0]: 173 data[1]: 1 2016-06-02 16:33:22 red: 0 green: 173 blue: 0 2016-06-02 16:33:22 data[0]: 168 data[1]: 1 2016-06-02 16:33:22 red: 0 green: 168 blue: 0 2016-06-02 16:33:22 data[0]: 163 data[1]: 1 2016-06-02 16:33:22 red: 0 green: 163 blue: 0 2016-06-02 16:33:22 data[0]: 156 data[1]: 1 2016-06-02 16:33:22 red: 0 green: 156 blue: 0 2016-06-02 16:33:22 data[0]: 150 data[1]: 1 2016-06-02 16:33:22 red: 0 green: 150 blue: 0 2016-06-02 16:33:22 data[0]: 143 data[1]: 1 2016-06-02 16:33:22 red: 0 green: 143 blue: 0 2016-06-02 16:33:22 data[0]: 135 data[1]: 1 2016-06-02 16:33:22 red: 0 green: 135 blue: 0 2016-06-02 16:33:22 data[0]: 130 data[1]: 1 2016-06-02 16:33:22 red: 0 green: 130 blue: 0 2016-06-02 16:33:22 data[0]: 125 data[1]: 1 2016-06-02 16:33:22 red: 0 green: 125 blue: 0 2016-06-02 16:33:22 data[0]: 120 data[1]: 1 2016-06-02 16:33:22 red: 0 green: 120 blue: 0 2016-06-02 16:33:22 data[0]: 115 data[1]: 1 2016-06-02 16:33:22 red: 0 green: 115 blue: 0 2016-06-02 16:33:22 data[0]: 110 data[1]: 1 2016-06-02 16:33:22 red: 0 green: 110 blue: 0 2016-06-02 16:33:22 data[0]: 105 data[1]: 1 2016-06-02 16:33:22 red: 0 green: 105 blue: 0 2016-06-02 16:33:22 data[0]: 99 data[1]: 1 2016-06-02 16:33:22 red: 0 green: 99 blue: 0 32 ①. Output file from serial monitor - 이어서
  • 33. 2016-06-02 16:33:23 data[0]: 94 data[1]: 1 2016-06-02 16:33:23 red: 0 green: 94 blue: 0 2016-06-02 16:33:23 data[0]: 89 data[1]: 1 2016-06-02 16:33:23 red: 0 green: 89 blue: 0 2016-06-02 16:33:23 data[0]: 82 data[1]: 1 2016-06-02 16:33:23 red: 0 green: 82 blue: 0 2016-06-02 16:33:23 data[0]: 76 data[1]: 1 2016-06-02 16:33:23 red: 0 green: 76 blue: 0 2016-06-02 16:33:23 data[0]: 71 data[1]: 1 2016-06-02 16:33:23 red: 0 green: 71 blue: 0 2016-06-02 16:33:23 data[0]: 66 data[1]: 1 2016-06-02 16:33:23 red: 0 green: 66 blue: 0 2016-06-02 16:33:23 data[0]: 61 data[1]: 1 2016-06-02 16:33:23 red: 0 green: 61 blue: 0 2016-06-02 16:33:23 data[0]: 56 data[1]: 1 2016-06-02 16:33:23 red: 0 green: 56 blue: 0 2016-06-02 16:33:23 data[0]: 51 data[1]: 1 2016-06-02 16:33:23 red: 0 green: 51 blue: 0 2016-06-02 16:33:23 data[0]: 48 data[1]: 1 2016-06-02 16:33:23 red: 0 green: 48 blue: 0 2016-06-02 16:33:23 data[0]: 43 data[1]: 1 2016-06-02 16:33:23 red: 0 green: 43 blue: 0 2016-06-02 16:33:23 data[0]: 41 data[1]: 1 2016-06-02 16:33:23 red: 0 green: 41 blue: 0 2016-06-02 16:33:23 data[0]: 38 data[1]: 1 2016-06-02 16:33:23 red: 0 green: 38 blue: 0 2016-06-02 16:33:23 data[0]: 36 data[1]: 1 2016-06-02 16:33:23 red: 0 green: 36 blue: 0 2016-06-02 16:33:23 data[0]: 28 data[1]: 1 2016-06-02 16:33:23 red: 0 green: 28 blue: 0 2016-06-02 16:33:23 data[0]: 26 data[1]: 1 2016-06-02 16:33:23 red: 0 green: 26 blue: 0 2016-06-02 16:33:23 data[0]: 23 data[1]: 1 2016-06-02 16:33:23 red: 0 green: 23 blue: 0 2016-06-02 16:33:23 data[0]: 15 data[1]: 1 2016-06-02 16:33:23 red: 0 green: 15 blue: 0 2016-06-02 16:33:23 data[0]: 13 data[1]: 1 2016-06-02 16:33:23 red: 0 green: 13 blue: 0 2016-06-02 16:33:24 data[0]: 10 data[1]: 1 2016-06-02 16:33:24 red: 0 green: 10 blue: 0 2016-06-02 16:33:24 data[0]: 8 data[1]: 1 2016-06-02 16:33:24 red: 0 green: 8 blue: 0 2016-06-02 16:33:24 data[0]: 5 data[1]: 1 2016-06-02 16:33:24 red: 0 green: 5 blue: 0 2016-06-02 16:33:24 data[0]: 3 data[1]: 1 2016-06-02 16:33:24 red: 0 green: 3 blue: 0 2016-06-02 16:33:24 data[0]: 8 data[1]: 1 2016-06-02 16:33:24 red: 0 green: 8 blue: 0 2016-06-02 16:33:24 data[0]: 5 data[1]: 1 2016-06-02 16:33:24 red: 0 green: 5 blue: 0 2016-06-02 16:33:24 data[0]: 3 data[1]: 1 2016-06-02 16:33:24 red: 0 green: 3 blue: 0 2016-06-02 16:33:24 data[0]: 0 data[1]: 1 2016-06-02 16:33:29 red: 0 green: 0 blue: 0 2016-06-02 16:33:29 data[0]: 76 data[1]: 2 2016-06-02 16:33:30 red: 0 green: 0 blue: 76 2016-06-02 16:33:30 data[0]: 143 data[1]: 2 2016-06-02 16:33:30 red: 0 green: 0 blue: 143 2016-06-02 16:33:31 data[0]: 209 data[1]: 2 2016-06-02 16:33:31 red: 0 green: 0 blue: 209 2016-06-02 16:33:31 data[0]: 242 data[1]: 2 2016-06-02 16:33:32 red: 0 green: 0 blue: 242 2016-06-02 16:33:33 data[0]: 245 data[1]: 2 2016-06-02 16:33:33 red: 0 green: 0 blue: 245 33 ①. Output file from serial monitor - 이어서
  • 34. 2016-06-02 16:33:33 data[0]: 156 data[1]: 2 2016-06-02 16:33:33 red: 0 green: 0 blue: 156 2016-06-02 16:33:33 data[0]: 87 data[1]: 2 2016-06-02 16:33:33 red: 0 green: 0 blue: 87 2016-06-02 16:33:33 data[0]: 43 data[1]: 2 2016-06-02 16:33:33 red: 0 green: 0 blue: 43 2016-06-02 16:33:33 data[0]: 41 data[1]: 2 2016-06-02 16:33:34 red: 0 green: 0 blue: 41 2016-06-02 16:33:35 data[0]: 13 data[1]: 2 2016-06-02 16:33:35 red: 0 green: 0 blue: 13 2016-06-02 16:33:35 data[0]: 8 data[1]: 2 2016-06-02 16:33:35 red: 0 green: 0 blue: 8 2016-06-02 16:33:35 data[0]: 5 data[1]: 2 2016-06-02 16:33:35 red: 0 green: 0 blue: 5 2016-06-02 16:33:35 data[0]: 0 data[1]: 2 2016-06-02 16:33:37 red: 0 green: 0 blue: 0 2016-06-02 16:33:37 data[0]: 245 data[1]: 0 2016-06-02 16:33:38 red: 245 green: 0 blue: 0 2016-06-02 16:33:38 data[0]: 242 data[1]: 1 2016-06-02 16:33:38 red: 245 green: 242 blue: 0 2016-06-02 16:33:41 data[0]: 245 data[1]: 1 2016-06-02 16:33:41 red: 245 green: 245 blue: 0 2016-06-02 16:33:41 data[0]: 3 data[1]: 0 2016-06-02 16:33:41 red: 3 green: 245 blue: 0 2016-06-02 16:33:41 data[0]: 0 data[1]: 0 2016-06-02 16:33:42 red: 0 green: 245 blue: 0 2016-06-02 16:33:42 data[0]: 5 data[1]: 1 2016-06-02 16:33:42 red: 0 green: 5 blue: 0 2016-06-02 16:33:44 data[0]: 3 data[1]: 1 2016-06-02 16:33:44 red: 0 green: 3 blue: 0 2016-06-02 16:33:44 data[0]: 0 data[1]: 1 2016-06-02 16:33:44 red: 0 green: 0 blue: 0 2016-06-02 16:33:44 data[0]: 230 data[1]: 0 2016-06-02 16:33:44 red: 230 green: 0 blue: 0 2016-06-02 16:33:44 data[0]: 235 data[1]: 0 2016-06-02 16:33:44 red: 235 green: 0 blue: 0 2016-06-02 16:33:45 data[0]: 240 data[1]: 0 2016-06-02 16:33:45 red: 240 green: 0 blue: 0 2016-06-02 16:33:45 data[0]: 245 data[1]: 0 2016-06-02 16:33:45 red: 245 green: 0 blue: 0 2016-06-02 16:33:45 data[0]: 247 data[1]: 0 2016-06-02 16:33:45 red: 247 green: 0 blue: 0 2016-06-02 16:33:45 data[0]: 250 data[1]: 0 2016-06-02 16:33:45 red: 250 green: 0 blue: 0 2016-06-02 16:33:45 data[0]: 252 data[1]: 0 2016-06-02 16:33:45 red: 252 green: 0 blue: 0 2016-06-02 16:33:45 data[0]: 237 data[1]: 2 2016-06-02 16:33:45 red: 252 green: 0 blue: 237 2016-06-02 16:33:45 data[0]: 240 data[1]: 2 2016-06-02 16:33:45 red: 252 green: 0 blue: 240 2016-06-02 16:33:45 data[0]: 245 data[1]: 2 2016-06-02 16:33:46 red: 252 green: 0 blue: 245 2016-06-02 16:33:46 data[0]: 247 data[1]: 2 2016-06-02 16:33:46 red: 252 green: 0 blue: 247 2016-06-02 16:33:46 data[0]: 250 data[1]: 2 2016-06-02 16:33:48 red: 252 green: 0 blue: 250 2016-06-02 16:33:48 data[0]: 15 data[1]: 2 2016-06-02 16:33:48 red: 252 green: 0 blue: 15 2016-06-02 16:33:48 data[0]: 13 data[1]: 2 2016-06-02 16:33:48 red: 252 green: 0 blue: 13 2016-06-02 16:33:48 data[0]: 5 data[1]: 2 2016-06-02 16:33:48 red: 252 green: 0 blue: 5 2016-06-02 16:33:48 data[0]: 8 data[1]: 2 2016-06-02 16:33:49 red: 252 green: 0 blue: 8 2016-06-02 16:33:49 data[0]: 15 data[1]: 2 2016-06-02 16:33:49 red: 252 green: 0 blue: 15 34 ①. Output file from serial monitor - 이어서
  • 35. 2016-06-02 16:33:49 data[0]: 13 data[1]: 2 2016-06-02 16:33:49 red: 252 green: 0 blue: 13 2016-06-02 16:33:49 data[0]: 5 data[1]: 2 2016-06-02 16:33:49 red: 252 green: 0 blue: 5 2016-06-02 16:33:49 data[0]: 0 data[1]: 2 2016-06-02 16:33:50 red: 252 green: 0 blue: 0 2016-06-02 16:33:50 data[0]: 3 data[1]: 0 2016-06-02 16:33:50 red: 3 green: 0 blue: 0 2016-06-02 16:33:50 data[0]: 0 data[1]: 0 2016-06-02 16:33:52 red: 0 green: 0 blue: 0 2016-06-02 16:33:52 data[0]: 247 data[1]: 1 2016-06-02 16:33:53 red: 0 green: 247 blue: 0 2016-06-02 16:33:53 data[0]: 250 data[1]: 1 2016-06-02 16:33:53 red: 0 green: 250 blue: 0 2016-06-02 16:33:53 data[0]: 252 data[1]: 1 2016-06-02 16:33:53 red: 0 green: 252 blue: 0 2016-06-02 16:33:53 data[0]: 245 data[1]: 2 2016-06-02 16:33:53 red: 0 green: 252 blue: 245 2016-06-02 16:33:55 data[0]: 247 data[1]: 2 2016-06-02 16:33:55 red: 0 green: 252 blue: 247 2016-06-02 16:33:55 data[0]: 8 data[1]: 1 2016-06-02 16:33:55 red: 0 green: 8 blue: 247 2016-06-02 16:33:55 data[0]: 5 data[1]: 1 2016-06-02 16:33:55 red: 0 green: 5 blue: 247 2016-06-02 16:33:55 data[0]: 3 data[1]: 1 2016-06-02 16:33:55 red: 0 green: 3 blue: 247 2016-06-02 16:33:55 data[0]: 0 data[1]: 1 2016-06-02 16:33:56 red: 0 green: 0 blue: 247 2016-06-02 16:33:56 data[0]: 5 data[1]: 2 2016-06-02 16:33:56 red: 0 green: 0 blue: 5 2016-06-02 16:33:56 data[0]: 3 data[1]: 2 2016-06-02 16:33:56 red: 0 green: 0 blue: 3 2016-06-02 16:33:56 data[0]: 0 data[1]: 2 2016-06-02 16:33:57 red: 0 green: 0 blue: 0 2016-06-02 16:33:57 data[0]: 242 data[1]: 2 2016-06-02 16:33:57 red: 0 green: 0 blue: 242 2016-06-02 16:33:57 data[0]: 245 data[1]: 2 2016-06-02 16:33:57 red: 0 green: 0 blue: 245 2016-06-02 16:33:57 data[0]: 247 data[1]: 2 2016-06-02 16:33:57 red: 0 green: 0 blue: 247 2016-06-02 16:33:57 data[0]: 250 data[1]: 2 2016-06-02 16:33:58 red: 0 green: 0 blue: 250 2016-06-02 16:33:58 data[0]: 245 data[1]: 1 2016-06-02 16:33:58 red: 0 green: 245 blue: 250 2016-06-02 16:33:58 data[0]: 247 data[1]: 1 2016-06-02 16:33:58 red: 0 green: 247 blue: 250 2016-06-02 16:33:58 data[0]: 250 data[1]: 1 2016-06-02 16:33:58 red: 0 green: 250 blue: 250 2016-06-02 16:33:58 data[0]: 245 data[1]: 0 2016-06-02 16:33:59 red: 245 green: 250 blue: 250 2016-06-02 16:33:59 data[0]: 247 data[1]: 0 2016-06-02 16:33:59 red: 247 green: 250 blue: 250 2016-06-02 16:33:59 data[0]: 250 data[1]: 0 2016-06-02 16:34:00 red: 250 green: 250 blue: 250 2016-06-02 16:34:00 data[0]: 245 data[1]: 2 2016-06-02 16:34:01 red: 250 green: 250 blue: 245 2016-06-02 16:34:01 data[0]: 247 data[1]: 2 2016-06-02 16:34:01 red: 250 green: 250 blue: 247 2016-06-02 16:34:01 data[0]: 250 data[1]: 2 2016-06-02 16:34:01 red: 250 green: 250 blue: 250 2016-06-02 16:34:01 data[0]: 247 data[1]: 1 2016-06-02 16:34:06 red: 250 green: 247 blue: 250 35 ①. Output file from serial monitor - 이어서
  • 36. 3-4. Output (결과) 36 ②. 사진 첨부(arduino board + bread board) 초기상태 약한 빨강 강한 빨강 주황 노랑 초록 하늘 파랑 보라 흰색 OFF
  • 37. 3-5. Conclusion (결론) • Case3을 통하여 Byte로 지원하는 범위를 다르게 할 수 있는 방법을 배웠다. 원리를 이해함으로서 깨닫고 와닿 는 점이 굉장히 많았다. 매번 소스로만 해결하려고 하 는 방식에 있어서의 한계를 느꼈고, 이를 해결하기 위 해서는 기초적인 원리자체가 굉장히 중요하다는 것을 깨닫기도 했습니다. 결국에는 동작원리를 이해함으로서 스스로가 더 심도있게 된 것 같아서 뿌듯하다. 37 ①. 배운점 ②. 느낀점 • 계속 언급하듯이 기초의 중요성을 우선적으로 느꼈다. 기초를 이해하는 것뿐만 아니라 이를 활용할 줄도 알아 야 한다고 느끼게 되었다.