아두이노 digital/analog io

40
1 2016년 3학년 1학기 마이크로프로세서 3B 아두이노 리포트 - digital I/O와 analog Input을 중심으로 - 2012335048 윤현구 2012335054 이정훈

Upload: junghoon-lee

Post on 06-Apr-2017

28 views

Category:

Software


0 download

TRANSCRIPT

Page 1: 아두이노 Digital/Analog IO

1

2016년 3학년 1학기 마이크로프로세서 3B

아두이노 리포트- digital I/O와 analog Input을 중심으로 -

2012335048 윤현구

2012335054 이정훈

Page 2: 아두이노 Digital/Analog IO

< 목 차 >

Case1. digital input→digital output : button으로 난수생성 -> LED on/off

① 개요

② 회로도와 동작원리

③ 스케치

④ 결과화면

⑤ 결론

Case2. digital input→analog output : 3 color button으로 RGB LED 밝기조절

① 개요

② 회로도와 동작원리

③ 스케치

④ 결과화면

⑤ 결론

Case3. analog input→digital output : 가변저항 값의 범위로 8개의 led on/off

① 개요

② 회로도와 동작원리

③ 스케치

④ 결과화면

⑤ 결론

Case4. analog input→analog output : 가변저항 3개를 이용하여 LED 밝기조절

① 개요

② 회로도와 동작원리

③ 스케치

④ 결과화면

⑤ 결론

2

Page 3: 아두이노 Digital/Analog IO

1-1. Introduction(개요)

Digital은 1과 0 두 가지 상태로만 존재하는 것을 의미하므로 입력도 HIGH이나 LOW, 출력도 HIGH이나 LOW로 대응된다. 그 중간 상태란 존재하지 않는다.

디지털 입력과 출력을 함께 사용하여 이 둘이 서로 상호작용하도록 해보자. 과정을 설명하기 전에 군대 얘기로 예를 들어보자. 군대 선임이 나에게 ‘앉아라.’라고 명령한다면앉아야 하고, ‘일어서라.’하면 서야 된다. 선임의 Input에 따라 나의 행동이 Output되려면, 나는 ‘앉아라.’라는 명령이무슨 의미인지 알아야하고, ‘일어서라’는 명령어도 무슨 의미인지 알아야한다. 결국 이를 알아내려면 선임의 생각을해석할 수 있어야 된다.

이와 마찬가지로, Input과 Output이 대응하려면 그에 맞는 코드를 작성해주어야 한다. 그래야 원하는 결과를 얻어낼 수 있기 때문이다. 이번에 실행할 목적을 한번 확인해보자.

3

①. Background(선택배경)

Page 4: 아두이노 Digital/Analog IO

1-1. Introduction(개요)

1. Button을 누른다.(Input)

2. 하나의 난수가 생성된다.

3. 랜덤수만큼의 LED를 켠다. (Output)

4

②. Purpose(목적)

1-2. Configuration(회로도/구성도)

220Ω

220Ω

220Ω

220Ω

220Ω

220Ω

+5V10KΩ

Page 5: 아두이노 Digital/Analog IO

1-2. Configuration(회로도/구성도)

1. LED를 Digital Pin에 연결하고 Output 설정을 한다.

2. Button을 Digital Pin에 연결하고 Input 설정을 한다.

3. 난수생성 Seed는 Float상태인 Analog Pin에서 읽는다.

4. Button을 누를 때 마다 난수를 생성한다.

5. 난수만큼의 LED를 On시킨다.

6. 2초간 Delay시키고, 3번 Blink를 하고 모든 LED가 Off된다.

5

②. How to operate(동작원리)

Page 6: 아두이노 Digital/Analog IO

1-3. Sketch

/* Case 1. digital input -> digital output */const int led[6]={3,4,5,6,7,8}; //led를 3~8번 Pin에 연결합니다const int button=2; //button을 2번 Pin에 연결합니다int randNumber; //난수를 저장하는 변수선언int last_state=0; //버튼의 과거상태를 저장하는 변수선언int current_state=0; //버튼의 현재상태를 저장하는 변수선언

void setup(){

Serial.begin(9600); //시리얼 통신을 9600속도로 시작pinMode(button, INPUT); //button을 입력으로 지정for(int i=0; i<6; i++){

pinMode(led[i], OUTPUT); //led 6개를 출력으로 지정}randomSeed(analogRead(0)); //Seed값을 floating상태인 analog 0번 Pin에서 읽습니다Serial.println("");Serial.println("Case 1. digital input -> digital output");Serial.println("<<< DICE GAME >>>");Serial.println("press the button");

}

void loop(){

current_state=digitalRead(button); //버튼의 상태를 읽어 current_state값에 넣음if(current_state!=last_state) //Button debouncing{

if(current_state==HIGH){

Serial.println("Button ON!");Serial.println("Roll the dice");randNumber=random(6); //0~5 사이의 난수를 생성합니다Serial.print("dice: ");Serial.println(randNumber+1);ledon(randNumber); //함수호출

}last_state=current_state;delay(50);

}}/*

ledon함수는 매개변수 number의 수만큼 켜지고 2초동안 delay합니다그 뒤 모든 LED가 꺼지고 blink를 3회반복하고 종료됩니다.

*/void ledon(int number){

for(int i=0; i<=number; i++)digitalWrite(led[i], HIGH);

Serial.print("turn on ");Serial.print(number+1);Serial.println(" light(s)");Serial.println("wait for 2sec");delay(2000);for(int i=0; i<6; i++)

digitalWrite(led[i], LOW);Serial.println("All LED OFF");delay(300);Serial.println("All LED blink");for(int i=0; i<3; i++){

for(int j=0; j<6; j++)digitalWrite(led[j], HIGH);

Serial.println("wait for 0.5sec");delay(500);for(int j=0; j<6; j++)

digitalWrite(led[j], LOW);Serial.println("wait for 0.5sec");delay(500);

}Serial.println("Next Turn!!\n");

}

6

①. Sketch edit(작성, optimized code)

Page 7: 아두이노 Digital/Analog IO

1-3. Sketch

7

② Using flowchart and block diagram, Sketch analysis (분석)

start

Led[6]={3,4,5,6,7,8}Button=2

randomSeed(analogRead(0)

버튼상태체크current_state=digitalRead(button)

current_state!=last_state

current_state==HIGH난수생성 및 함수호출

randNumber=random(6)ledon(randNumber)

last_state=current_state

yes

yes

no

no

Page 8: 아두이노 Digital/Analog IO

1-4. Output (결과)

2016-05-13 14:34:35 Case 1. digital input -> digital output2016-05-13 14:34:35 <<< DICE GAME >>>2016-05-13 14:34:37 press the button2016-05-13 14:34:37 Button ON!2016-05-13 14:34:37 Roll the dice2016-05-13 14:34:37 dice: 12016-05-13 14:34:37 turn on 1 light(s)2016-05-13 14:34:39 wait for 2sec2016-05-13 14:34:40 All LED OFF2016-05-13 14:34:40 All LED blink2016-05-13 14:34:40 wait for 0.5sec2016-05-13 14:34:41 wait for 0.5sec2016-05-13 14:34:41 wait for 0.5sec2016-05-13 14:34:42 wait for 0.5sec2016-05-13 14:34:42 wait for 0.5sec2016-05-13 14:34:43 wait for 0.5sec2016-05-13 14:34:44 Next Turn!!2016-05-13 14:34:44 Button ON!2016-05-13 14:34:44 Roll the dice2016-05-13 14:34:44 dice: 52016-05-13 14:34:44 turn on 5 light(s)2016-05-13 14:34:46 wait for 2sec2016-05-13 14:34:46 All LED OFF2016-05-13 14:34:47 All LED blink2016-05-13 14:34:47 wait for 0.5sec2016-05-13 14:34:47 wait for 0.5sec2016-05-13 14:34:48 wait for 0.5sec2016-05-13 14:34:49 wait for 0.5sec2016-05-13 14:34:49 wait for 0.5sec2016-05-13 14:34:50 wait for 0.5sec2016-05-13 14:34:51 Next Turn!!2016-05-13 14:34:51 Button ON!2016-05-13 14:34:51 Roll the dice2016-05-13 14:34:51 dice: 32016-05-13 14:34:51 turn on 3 light(s)2016-05-13 14:34:53 wait for 2sec2016-05-13 14:34:53 All LED OFF2016-05-13 14:34:53 All LED blink2016-05-13 14:34:54 wait for 0.5sec2016-05-13 14:34:54 wait for 0.5sec2016-05-13 14:34:55 wait for 0.5sec2016-05-13 14:34:55 wait for 0.5sec2016-05-13 14:34:56 wait for 0.5sec2016-05-13 14:34:56 wait for 0.5sec2016-05-13 14:34:58 Next Turn!!2016-05-13 14:34:58 Button ON!2016-05-13 14:34:58 Roll the dice2016-05-13 14:34:58 dice: 22016-05-13 14:35:00 turn on 2 light(s)2016-05-13 14:35:00 wait for 2sec2016-05-13 14:35:00 All LED OFF2016-05-13 14:35:00 All LED blink2016-05-13 14:35:01 wait for 0.5sec2016-05-13 14:35:01 wait for 0.5sec2016-05-13 14:35:02 wait for 0.5sec2016-05-13 14:35:02 wait for 0.5sec2016-05-13 14:35:03 wait for 0.5sec2016-05-13 14:35:03 wait for 0.5sec2016-05-13 14:35:04 Next Turn!!

8

①. Output file from serial monitor:

Page 9: 아두이노 Digital/Analog IO

1-4. Output (결과)

9

②. 사진 첨부(arduino board + bread board)

초기상태 주사위2→LED 2개 ON Blink →LED 6개 ON

Blink →LED 6개 OFF Blink →LED 6개 ON Blink →LED 6개 OFF

주사위3→LED 3개 ON Blink →LED 6개 ON

Blink →LED 6개 ON

Blink →LED 6개 OFF

Blink →LED 6개 OFF

Page 10: 아두이노 Digital/Analog IO

1-5. Conclusion (결론)

• 마이크로프로세서의 과도한 속도로 인한 Bouncing현상의 발생

• 이를 해결하기 위한 De-Bouncing방법.

• De-Bouncing방법은 앞으로도 자주 사용될 것 같으므로확실한 이해가 필요한 방법이다.

10

①. 배운점

②. 느낀점

• 진동잡음을 하드웨어적으로 잡아낼 수 있는 방법은 없을까?

• 하드웨어에서 장치적으로 진동잡음을 미리 잡아낸button은 없을까?

Page 11: 아두이노 Digital/Analog IO

2-1. Introduction(개요)

Digital이 1과 0 두 가지로만 이루어져 있다면, Analog는무수히 많은 값을 가질 수 있다.

다시 군대 얘기를 예로 들어보자. 선임이 나에게 “일해라.” 혹은 “일 그만해.” 라고 한다면 어떨까? 나는 “일해라.”와“일 그만해.”라는 input에 여러 가지 갈등에 놓이게 될 것이다. 바닥청소, 빨래, 걸레질, 설거지 등등 수많은 일들이 있기 때문이다. 일을 안 하는 것도 한 방법이 될 수 있다. 하지만 눈치가 보일 것이므로 아마 대부분의 남성들은 일을하지 않을까 생각한다. 결과적으로 선임의 Input에 나는 여러 가지 방법의 Output을 나타낼 수가 있는 것이다.

이와 마찬가지로, Digital Input에 따라 Analog Output은코드에 따라 무수히 많은 값을 나타낼 수 있다. (하지만 현실적으로는 bit의 용량만큼만 나타낼 수 있으므로 한계가있다.) 다음 목적을 보자.

11

①. Background(선택배경)

Page 12: 아두이노 Digital/Analog IO

2-1. Introduction(개요)

1. Button을 3개 준비하고 3개의 LED에 연결한다.

2. 하나의 Button을 누를 때 마다(Input) 그에 해당하는LED에 set_Interval값을 더해 나간다.

3. LED의 밝기를 관찰한다. (Output)

12

②. Purpose(목적)

2-2. Configuration(회로도/구성도)

220Ω

220Ω

220Ω

+5V

+5V

10KΩ+5V

10KΩ

10KΩ

D2

D3

D4

Red LED

Green LED

Blue LED

Page 13: 아두이노 Digital/Analog IO

2-2. Configuration(회로도/구성도)

1. LED를 Digital Pin(PWM)에 연결하고 Output 설정을 한다.

2. Button을 Digital Pin에 연결하고 Input 설정을 한다.

3. Serial Monitor에서 Set interval값을 입력하지 않으면Default값(25)으로 설정된다.

4. Button을 누를 때 마다 Color에 해당하는 Value를set_interval 값 만큼 증가시킨다.

5. LED를 AnlogWrite하여 Input된 Value값만큼 On시킨다.

13

②. How to operate(동작원리)

Page 14: 아두이노 Digital/Analog IO

2-3. Sketch

/* Case 2. digital input -> analog output */const int led[3]={9,10,11}; //(pin) 11=RedLed, 10=GreenLed, 9=BlueLedint button[3]={2,3,4}; //(pin) 4=Red, 3=Green, 2=Blue int value[3]={0}; //(index) 0=Red, 1=Green, 2=Blueint last[3]={0}; //버튼의 과거상태를 저장하는 변수선언int current[3]={0}; //버튼의 현재상태를 저장하는 변수선언int set_Interval=25; //시리얼모니터로 입력받아 버튼의 간격값을 저장하는 변수선언, 디폴트값 25

void setup(){

Serial.begin(9600); //시리얼 통신을 9600속도로 시작for(int i=0;i<3;i++){

pinMode(led[i],OUTPUT); //led 3개를 출력으로 지정pinMode(button[i],INPUT); //button 3개를 입력으로 지정

}Serial.println("");Serial.println("Case 2. digital input -> analog output");Serial.println("<<< RGB LED: this can make all the colors >>>"); Serial.println("press the button");

}void loop(){

if(Serial.available()>0) //시리얼 포트의 수신 버퍼에 저장된 데이터 개수를 반환{

set_Interval=Serial.parseInt(); //버퍼에 있는 데이터 중 다음에 사용할 것을 Int형으로 형변환하여 반환Serial.print("button interval: ");Serial.print(set_Interval);Serial.println("");

}for(int i=0;i<3;i++){

current[i]=digitalRead(button[i]);if(current[i]!=last[i]) //button debouncing{

if(current[i]==HIGH){

value[i]+=set_Interval; //버튼이 눌리면 value값에 set_Interval를 더해줍니다if(value[i]>255) //만약 value값이 255를 초과했을 경우 0으로 초기화합니다

value[i]=0;setColor(value[0], value[1], value[2]); //함수호출

}last[i]=current[i];delay(50);

}}

}/*

(pin) 11=RedLed, 10=GreenLed, 9=BlueLed(index) 0=BlueLed, 1=GreenLed, 2=RedLed매개변수 값만큼의 밝기로 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("");

}

14

①. Sketch edit(작성, optimized code)

Page 15: 아두이노 Digital/Analog IO

2-3. Sketch

15

② Using flowchart and block diagram, Sketch analysis (분석)

start

led[3]={9,10,11}button[3]={2,3,4}

value[3]={0}set_Interval=25

버튼상태체크Current[0..2]=digitalRead[0..2]

Current[0..2]!=last[0..2]

Current[0..2]==HIGH

Value[0..2]값 증가LED ON

value[0..2]+=set_IntervalsetColor(value[0], value[1],

value[2])

Last[0..2]=current[0..2]

yes

yes

no

no

시리얼모니터 입력체크Serial.available()>0

set_Interval=Serial.parseInt()

yes

Page 16: 아두이노 Digital/Analog IO

2-4. Output (결과)

2016-05-13 14:58:51

2016-05-13 14:58:51 Case 2. digital input -> analog output

2016-05-13 14:58:51 <<< RGB LED: this can make all the colors >>>

2016-05-13 14:58:53 press the button

2016-05-13 14:58:55 red: 25 green: 0 blue: 0

2016-05-13 14:58:56 red: 50 green: 0 blue: 0

2016-05-13 14:58:57 red: 75 green: 0 blue: 0

2016-05-13 14:58:58 red: 100 green: 0 blue: 0

2016-05-13 14:58:59 red: 100 green: 25 blue: 0

2016-05-13 14:59:02 red: 100 green: 50 blue: 0

2016-05-13 14:59:07 red: 100 green: 50 blue: 25

2016-05-13 14:59:08 button interval: 50

2016-05-13 14:59:09 red: 150 green: 50 blue: 25

2016-05-13 14:59:10 red: 150 green: 100 blue: 25

2016-05-13 14:59:13 red: 150 green: 100 blue: 75

2016-05-13 14:59:14 button interval: 100

2016-05-13 14:59:16 red: 250 green: 100 blue: 75

2016-05-13 14:59:17 red: 0 green: 100 blue: 75

2016-05-13 14:59:19 red: 0 green: 200 blue: 75

2016-05-13 14:59:20 red: 0 green: 200 blue: 175

2016-05-13 14:59:21 red: 0 green: 200 blue: 0

2016-05-13 14:59:27 red: 0 green: 0 blue: 0

2016-05-13 14:59:28 button interval: 255

2016-05-13 14:59:29 red: 255 green: 0 blue: 0

2016-05-13 14:59:30 red: 255 green: 255 blue: 0

2016-05-13 14:59:33 red: 255 green: 255 blue: 255

2016-05-13 14:59:33 red: 0 green: 255 blue: 255

2016-05-13 14:59:34 red: 0 green: 0 blue: 255

2016-05-13 14:59:43 red: 0 green: 0 blue: 0

2016-05-13 14:59:45 button interval: 100

2016-05-13 14:59:46 red: 100 green: 0 blue: 0

2016-05-13 14:59:47 red: 100 green: 100 blue: 0

2016-05-13 14:59:47 red: 100 green: 100 blue: 100

2016-05-13 14:59:48 red: 100 green: 100 blue: 200

2016-05-13 14:59:48 red: 100 green: 200 blue: 200

2016-05-13 14:59:53 red: 200 green: 200 blue: 200

16

①. Output file from serial monitor:

Page 17: 아두이노 Digital/Analog IO

2-4. Output (결과)

17

②. 사진 첨부(arduino board + bread board)

초기상태 3개버튼 255될때까지누름

Red버튼만 눌렀을때 Green버튼만 눌렀을때 Blue버튼만 눌렀을때

Red+Green버튼으로Yellow 색상 만들기

Red+Green버튼으로orange 색상 만들기

Page 18: 아두이노 Digital/Analog IO

2-5. Conclusion (결론)

• LED의 밝기 = 실제로는 Digital Output의 빠른 번쩍임

• 즉, 착시효과를 이용한다.

18

①. 배운점

②. 느낀점

• 착시효과가 아닌 실제 Analog Output은 없는 것일까?

Page 19: 아두이노 Digital/Analog IO

3-1. Introduction(개요)

앞에서 설명했듯이 Analog는 무수히 많은 방법이고, Digital은 On과 Off로만 나타낸다.

가로등의 조도 센서를 예로 들어보자. 조도 센서는 빛의양에 따라 밝은 곳에서는 화면의 조명을 Off 하고, 어두운곳에서는 화면의 조명을 On한다. 결국 가로등의 조도 센서는 빛의 양에 기준을 두고 거기에 따라 On/Off할 수 있는것이다.

이와 마찬가지로, Analog Input으로 LED에 기준을 두고On/Off하는 방법을 생각해 낼 수 있다. Arduino에는 가변저항기로 Analog input을 할 수 있기 때문에, 가변저항기와 LED의 관계를 형성하면 될 것이다. 다음 목적을 보자.

19

①. Background(선택배경)

Page 20: 아두이노 Digital/Analog IO

3-1. Introduction(개요)

1. 가변저항기를 회전시켜 Value를 Input한다. (Input)

2. LED의 숫자에 따라 가변저항기 입력 값에 범위를 나눈다.

3. 범위에 해당하는 만큼 LED를 On/Off시킨다. (Output)

20

②. Purpose(목적)

3-2. Configuration(회로도/구성도)

220Ω

220Ω

220Ω

220Ω

220Ω

220Ω

220Ω

220Ω

+5V

VR가변저항

Page 21: 아두이노 Digital/Analog IO

3-2. Configuration(회로도/구성도)

1. LED를 Digital Pin에 연결하고 Output 설정을 한다.

2. 가변저항기 값을 Input하여 Value에 저장한다.

3. 10bit의 Value값을 8bit로 Mapping한다.

Value 0 32 64 96 128 160 192 224

4. Value값의 범위만큼 LED의 개수를 정하고 On시킨다.

21

②. How to operate(동작원리)

0 1 2 3 4 5 6 7 8

LED 개수 →

Page 22: 아두이노 Digital/Analog IO

3-3. Sketch

/* Case 3. analog input -> digital output */

const int led[8]={3,4,5,6,7,8,9,10}; //8개의 pin을 연결

const int pot=0; //가변저항을 0pin에 연결

int value; //가변저항의 현재값을 저장하는 변수선언

int last_value=0; //가변저항의 과거값을 저장하는 변수선언

void setup()

{

Serial.begin(9600); //시리얼 통신을 9600속도로 시작

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

pinMode(led[i],OUTPUT); //led 8개를 출력으로 지정

Serial.println("");

Serial.println("Case 3. analog input -> digital output");

Serial.println("Turn the potentiometer");

}

void loop()

{

value=analogRead(pot); //가변저항으로부터 값을 읽어 value값에 넣음

value=map(value, 0, 1023, 0, 255); //10비트를 8비트로 맵핑

value=constrain(value, 0, 255); //value값을 0~255으로 제한

if(value!=last_value) //가변저항을 돌릴 때만 출력

{

Serial.print("Value: ");

Serial.print(value);

Serial.print("\t");

/*

value(가변저항값)를 8등분하여 특정 범위일때 led가 켜지는 갯수를 컨트롤하였습니다.

*/

if(value==0)

ledon(0);

else if(value<32)

ledon(1);

else if(value<64)

ledon(2);

else if(value<96)

ledon(3);

else if(value<128)

ledon(4);

else if(value<160)

ledon(5);

else if(value<192)

ledon(6);

else if(value<224)

ledon(7);

else

ledon(8);

}

last_value=value;

}

/*

ledon함수는 처음에 모든 led를 off하고 매개변수로 들어온 number값만큼 다시 led를 on합니다

*/

void ledon(int number)

{

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

digitalWrite(led[i],LOW);

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

digitalWrite(led[i],HIGH);

Serial.print("turn on ");

Serial.print(number);

Serial.println(" light(s)");

}

22

①. Sketch edit(작성, optimized code)

Page 23: 아두이노 Digital/Analog IO

3-3. Sketch

23

② Using flowchart and block diagram, Sketch analysis (분석)

start

led[8]={3,4,5,6,7,8,9,10}int pot=0

가변저항 상태체크value=analogRead(pot)

value==0LED 0개 ON

ledon(0)

no

yes

no

Value<32LED 1개 ON

ledon(1)yes

……

no

Value<224LED 7개 ON

ledon(7)yes

no

LED 8개 ONledon(8)

Page 24: 아두이노 Digital/Analog IO

3-4. Output (결과)

2016-05-13 14:26:36 Case 3. analog input -> digital output2016-05-13 14:26:41 Turn the potentiometer2016-05-13 14:26:41 Value: 1 turn on 1 light(s)2016-05-13 14:26:41 Value: 2 turn on 1 light(s)2016-05-13 14:26:41 Value: 3 turn on 1 light(s)2016-05-13 14:26:41 Value: 4 turn on 1 light(s)2016-05-13 14:26:41 Value: 8 turn on 1 light(s)2016-05-13 14:26:41 Value: 11 turn on 1 light(s)2016-05-13 14:26:41 Value: 15 turn on 1 light(s)2016-05-13 14:26:41 Value: 18 turn on 1 light(s)2016-05-13 14:26:41 Value: 21 turn on 1 light(s)2016-05-13 14:26:41 Value: 24 turn on 1 light(s)2016-05-13 14:26:41 Value: 28 turn on 1 light(s)2016-05-13 14:26:41 Value: 32 turn on 2 light(s)2016-05-13 14:26:41 Value: 37 turn on 2 light(s)2016-05-13 14:26:41 Value: 40 turn on 2 light(s)2016-05-13 14:26:41 Value: 45 turn on 2 light(s)2016-05-13 14:26:41 Value: 50 turn on 2 light(s)2016-05-13 14:26:41 Value: 54 turn on 2 light(s)2016-05-13 14:26:42 Value: 58 turn on 2 light(s)2016-05-13 14:26:42 Value: 62 turn on 2 light(s)2016-05-13 14:26:42 Value: 65 turn on 3 light(s)2016-05-13 14:26:42 Value: 69 turn on 3 light(s)2016-05-13 14:26:42 Value: 72 turn on 3 light(s)2016-05-13 14:26:42 Value: 75 turn on 3 light(s)2016-05-13 14:26:42 Value: 78 turn on 3 light(s)2016-05-13 14:26:42 Value: 81 turn on 3 light(s)2016-05-13 14:26:42 Value: 83 turn on 3 light(s)2016-05-13 14:26:42 Value: 86 turn on 3 light(s)2016-05-13 14:26:42 Value: 88 turn on 3 light(s)2016-05-13 14:26:42 Value: 90 turn on 3 light(s)2016-05-13 14:26:42 Value: 93 turn on 3 light(s)2016-05-13 14:26:42 Value: 95 turn on 3 light(s)2016-05-13 14:26:42 Value: 96 turn on 4 light(s)2016-05-13 14:26:42 Value: 97 turn on 4 light(s)2016-05-13 14:26:42 Value: 98 turn on 4 light(s)2016-05-13 14:26:42 Value: 99 turn on 4 light(s)2016-05-13 14:26:42 Value: 98 turn on 4 light(s)2016-05-13 14:26:42 Value: 99 turn on 4 light(s)2016-05-13 14:26:42 Value: 98 turn on 4 light(s)2016-05-13 14:26:42 Value: 99 turn on 4 light(s)2016-05-13 14:26:42 Value: 98 turn on 4 light(s)2016-05-13 14:26:42 Value: 99 turn on 4 light(s)2016-05-13 14:26:42 Value: 97 turn on 4 light(s)2016-05-13 14:26:42 Value: 95 turn on 3 light(s)2016-05-13 14:26:42 Value: 92 turn on 3 light(s)2016-05-13 14:26:42 Value: 89 turn on 3 light(s)2016-05-13 14:26:42 Value: 85 turn on 3 light(s)2016-05-13 14:26:42 Value: 80 turn on 3 light(s)2016-05-13 14:26:42 Value: 75 turn on 3 light(s)2016-05-13 14:26:42 Value: 69 turn on 3 light(s)2016-05-13 14:26:42 Value: 64 turn on 3 light(s)2016-05-13 14:26:42 Value: 58 turn on 2 light(s)2016-05-13 14:26:42 Value: 53 turn on 2 light(s)2016-05-13 14:26:43 Value: 47 turn on 2 light(s)2016-05-13 14:26:43 Value: 41 turn on 2 light(s)2016-05-13 14:26:43 Value: 37 turn on 2 light(s)2016-05-13 14:26:43 Value: 32 turn on 2 light(s)2016-05-13 14:26:43 Value: 28 turn on 1 light(s)2016-05-13 14:26:43 Value: 23 turn on 1 light(s)2016-05-13 14:26:43 Value: 21 turn on 1 light(s)2016-05-13 14:26:43 Value: 18 turn on 1 light(s)2016-05-13 14:26:43 Value: 16 turn on 1 light(s)2016-05-13 14:26:43 Value: 13 turn on 1 light(s)2016-05-13 14:26:43 Value: 11 turn on 1 light(s)2016-05-13 14:26:43 Value: 9 turn on 1 light(s)2016-05-13 14:26:43 Value: 6 turn on 1 light(s)2016-05-13 14:26:43 Value: 3 turn on 1 light(s)

24

①. Output file from serial monitor:

Page 25: 아두이노 Digital/Analog IO

2016-05-13 14:26:43 Value: 0 turn on 0 light(s)2016-05-13 14:26:43 Value: 1 turn on 1 light(s)2016-05-13 14:26:43 Value: 2 turn on 1 light(s)2016-05-13 14:26:43 Value: 3 turn on 1 light(s)2016-05-13 14:26:44 Value: 4 turn on 1 light(s)2016-05-13 14:26:44 Value: 9 turn on 1 light(s)2016-05-13 14:26:44 Value: 12 turn on 1 light(s)2016-05-13 14:26:44 Value: 17 turn on 1 light(s)2016-05-13 14:26:44 Value: 22 turn on 1 light(s)2016-05-13 14:26:44 Value: 26 turn on 1 light(s)2016-05-13 14:26:44 Value: 32 turn on 2 light(s)2016-05-13 14:26:44 Value: 37 turn on 2 light(s)2016-05-13 14:26:44 Value: 43 turn on 2 light(s)2016-05-13 14:26:44 Value: 49 turn on 2 light(s)2016-05-13 14:26:44 Value: 55 turn on 2 light(s)2016-05-13 14:26:44 Value: 61 turn on 2 light(s)2016-05-13 14:26:44 Value: 66 turn on 3 light(s)2016-05-13 14:26:44 Value: 72 turn on 3 light(s)2016-05-13 14:26:44 Value: 77 turn on 3 light(s)2016-05-13 14:26:44 Value: 82 turn on 3 light(s)2016-05-13 14:26:44 Value: 87 turn on 3 light(s)2016-05-13 14:26:44 Value: 92 turn on 3 light(s)2016-05-13 14:26:44 Value: 96 turn on 4 light(s)2016-05-13 14:26:44 Value: 101 turn on 4 light(s)2016-05-13 14:26:44 Value: 105 turn on 4 light(s)2016-05-13 14:26:44 Value: 109 turn on 4 light(s)2016-05-13 14:26:44 Value: 113 turn on 4 light(s)2016-05-13 14:26:44 Value: 116 turn on 4 light(s)2016-05-13 14:26:44 Value: 120 turn on 4 light(s)2016-05-13 14:26:44 Value: 123 turn on 4 light(s)2016-05-13 14:26:44 Value: 127 turn on 4 light(s)2016-05-13 14:26:44 Value: 130 turn on 5 light(s)2016-05-13 14:26:44 Value: 134 turn on 5 light(s)2016-05-13 14:26:44 Value: 139 turn on 5 light(s)2016-05-13 14:26:44 Value: 145 turn on 5 light(s)2016-05-13 14:26:45 Value: 150 turn on 5 light(s)2016-05-13 14:26:45 Value: 156 turn on 5 light(s)2016-05-13 14:26:45 Value: 163 turn on 6 light(s)2016-05-13 14:26:45 Value: 169 turn on 6 light(s)2016-05-13 14:26:45 Value: 175 turn on 6 light(s)2016-05-13 14:26:45 Value: 180 turn on 6 light(s)2016-05-13 14:26:45 Value: 187 turn on 6 light(s)2016-05-13 14:26:45 Value: 192 turn on 7 light(s)2016-05-13 14:26:45 Value: 198 turn on 7 light(s)2016-05-13 14:26:45 Value: 204 turn on 7 light(s)2016-05-13 14:26:45 Value: 209 turn on 7 light(s)2016-05-13 14:26:45 Value: 213 turn on 7 light(s)2016-05-13 14:26:45 Value: 218 turn on 7 light(s)2016-05-13 14:26:45 Value: 222 turn on 7 light(s)2016-05-13 14:26:45 Value: 226 turn on 8 light(s)2016-05-13 14:26:45 Value: 231 turn on 8 light(s)2016-05-13 14:26:45 Value: 235 turn on 8 light(s)2016-05-13 14:26:45 Value: 239 turn on 8 light(s)2016-05-13 14:26:45 Value: 242 turn on 8 light(s)2016-05-13 14:26:45 Value: 245 turn on 8 light(s)2016-05-13 14:26:45 Value: 248 turn on 8 light(s)2016-05-13 14:26:45 Value: 250 turn on 8 light(s)2016-05-13 14:26:45 Value: 251 turn on 8 light(s)2016-05-13 14:26:45 Value: 250 turn on 8 light(s)2016-05-13 14:26:45 Value: 249 turn on 8 light(s)2016-05-13 14:26:45 Value: 248 turn on 8 light(s)2016-05-13 14:26:45 Value: 244 turn on 8 light(s)2016-05-13 14:26:45 Value: 238 turn on 8 light(s)2016-05-13 14:26:45 Value: 232 turn on 8 light(s)

25

①. Output file from serial monitor - 이어서

Page 26: 아두이노 Digital/Analog IO

2016-05-13 14:26:45 Value: 224 turn on 8 light(s)2016-05-13 14:26:45 Value: 217 turn on 7 light(s)2016-05-13 14:26:46 Value: 211 turn on 7 light(s)2016-05-13 14:26:46 Value: 205 turn on 7 light(s)2016-05-13 14:26:46 Value: 198 turn on 7 light(s)2016-05-13 14:26:46 Value: 193 turn on 7 light(s)2016-05-13 14:26:46 Value: 187 turn on 6 light(s)2016-05-13 14:26:46 Value: 180 turn on 6 light(s)2016-05-13 14:26:46 Value: 175 turn on 6 light(s)2016-05-13 14:26:46 Value: 170 turn on 6 light(s)2016-05-13 14:26:46 Value: 163 turn on 6 light(s)2016-05-13 14:26:46 Value: 157 turn on 5 light(s)2016-05-13 14:26:46 Value: 152 turn on 5 light(s)2016-05-13 14:26:46 Value: 147 turn on 5 light(s)2016-05-13 14:26:46 Value: 143 turn on 5 light(s)2016-05-13 14:26:46 Value: 138 turn on 5 light(s)2016-05-13 14:26:46 Value: 134 turn on 5 light(s)2016-05-13 14:26:46 Value: 131 turn on 5 light(s)2016-05-13 14:26:46 Value: 128 turn on 5 light(s)2016-05-13 14:26:46 Value: 126 turn on 4 light(s)2016-05-13 14:26:46 Value: 124 turn on 4 light(s)2016-05-13 14:26:46 Value: 122 turn on 4 light(s)2016-05-13 14:26:46 Value: 120 turn on 4 light(s)2016-05-13 14:26:46 Value: 118 turn on 4 light(s)2016-05-13 14:26:46 Value: 117 turn on 4 light(s)2016-05-13 14:26:46 Value: 115 turn on 4 light(s)2016-05-13 14:26:46 Value: 113 turn on 4 light(s)2016-05-13 14:26:46 Value: 112 turn on 4 light(s)2016-05-13 14:26:46 Value: 110 turn on 4 light(s)2016-05-13 14:26:46 Value: 109 turn on 4 light(s)2016-05-13 14:26:46 Value: 108 turn on 4 light(s)2016-05-13 14:26:46 Value: 107 turn on 4 light(s)2016-05-13 14:26:47 Value: 106 turn on 4 light(s)2016-05-13 14:26:47 Value: 107 turn on 4 light(s)2016-05-13 14:26:47 Value: 106 turn on 4 light(s)2016-05-13 14:26:47 Value: 107 turn on 4 light(s)2016-05-13 14:26:47 Value: 109 turn on 4 light(s)2016-05-13 14:26:47 Value: 112 turn on 4 light(s)2016-05-13 14:26:47 Value: 117 turn on 4 light(s)2016-05-13 14:26:47 Value: 124 turn on 4 light(s)2016-05-13 14:26:47 Value: 132 turn on 5 light(s)2016-05-13 14:26:47 Value: 141 turn on 5 light(s)2016-05-13 14:26:47 Value: 149 turn on 5 light(s)2016-05-13 14:26:47 Value: 156 turn on 5 light(s)2016-05-13 14:26:47 Value: 162 turn on 6 light(s)2016-05-13 14:26:47 Value: 168 turn on 6 light(s)2016-05-13 14:26:47 Value: 174 turn on 6 light(s)2016-05-13 14:26:47 Value: 179 turn on 6 light(s)2016-05-13 14:26:47 Value: 185 turn on 6 light(s)2016-05-13 14:26:47 Value: 190 turn on 6 light(s)2016-05-13 14:26:47 Value: 196 turn on 7 light(s)2016-05-13 14:26:47 Value: 202 turn on 7 light(s)2016-05-13 14:26:47 Value: 207 turn on 7 light(s)2016-05-13 14:26:47 Value: 212 turn on 7 light(s)2016-05-13 14:26:47 Value: 219 turn on 7 light(s)2016-05-13 14:26:47 Value: 225 turn on 8 light(s)2016-05-13 14:26:47 Value: 231 turn on 8 light(s)2016-05-13 14:26:47 Value: 237 turn on 8 light(s)2016-05-13 14:26:47 Value: 243 turn on 8 light(s)2016-05-13 14:26:47 Value: 248 turn on 8 light(s)2016-05-13 14:26:47 Value: 252 turn on 8 light(s)2016-05-13 14:26:47 Value: 254 turn on 8 light(s)2016-05-13 14:26:47 Value: 255 turn on 8 light(s)2016-05-13 14:26:48 Value: 254 turn on 8 light(s)2016-05-13 14:26:48 Value: 252 turn on 8 light(s)2016-05-13 14:26:48 Value: 248 turn on 8 light(s)2016-05-13 14:26:48 Value: 244 turn on 8 light(s)2016-05-13 14:26:48 Value: 239 turn on 8 light(s)

26

①. Output file from serial monitor - 이어서

Page 27: 아두이노 Digital/Analog IO

2016-05-13 14:26:48 Value: 231 turn on 8 light(s)2016-05-13 14:26:48 Value: 223 turn on 7 light(s)2016-05-13 14:26:48 Value: 215 turn on 7 light(s)2016-05-13 14:26:48 Value: 207 turn on 7 light(s)2016-05-13 14:26:48 Value: 199 turn on 7 light(s)2016-05-13 14:26:48 Value: 190 turn on 6 light(s)2016-05-13 14:26:48 Value: 183 turn on 6 light(s)2016-05-13 14:26:48 Value: 176 turn on 6 light(s)2016-05-13 14:26:48 Value: 169 turn on 6 light(s)2016-05-13 14:26:48 Value: 163 turn on 6 light(s)2016-05-13 14:26:48 Value: 156 turn on 5 light(s)2016-05-13 14:26:48 Value: 151 turn on 5 light(s)2016-05-13 14:26:48 Value: 146 turn on 5 light(s)2016-05-13 14:26:48 Value: 141 turn on 5 light(s)2016-05-13 14:26:48 Value: 136 turn on 5 light(s)2016-05-13 14:26:48 Value: 133 turn on 5 light(s)2016-05-13 14:26:48 Value: 129 turn on 5 light(s)2016-05-13 14:26:48 Value: 126 turn on 4 light(s)2016-05-13 14:26:48 Value: 123 turn on 4 light(s)2016-05-13 14:26:48 Value: 121 turn on 4 light(s)2016-05-13 14:26:48 Value: 119 turn on 4 light(s)2016-05-13 14:26:48 Value: 117 turn on 4 light(s)2016-05-13 14:26:48 Value: 115 turn on 4 light(s)2016-05-13 14:26:48 Value: 114 turn on 4 light(s)2016-05-13 14:26:48 Value: 112 turn on 4 light(s)2016-05-13 14:26:49 Value: 111 turn on 4 light(s)2016-05-13 14:26:49 Value: 109 turn on 4 light(s)2016-05-13 14:26:49 Value: 107 turn on 4 light(s)2016-05-13 14:26:49 Value: 105 turn on 4 light(s)2016-05-13 14:26:49 Value: 104 turn on 4 light(s)2016-05-13 14:26:49 Value: 102 turn on 4 light(s)2016-05-13 14:26:49 Value: 100 turn on 4 light(s)2016-05-13 14:26:49 Value: 97 turn on 4 light(s)2016-05-13 14:26:49 Value: 95 turn on 3 light(s)2016-05-13 14:26:49 Value: 93 turn on 3 light(s)2016-05-13 14:26:49 Value: 91 turn on 3 light(s)2016-05-13 14:26:49 Value: 88 turn on 3 light(s)2016-05-13 14:26:49 Value: 85 turn on 3 light(s)2016-05-13 14:26:49 Value: 82 turn on 3 light(s)2016-05-13 14:26:49 Value: 78 turn on 3 light(s)2016-05-13 14:26:49 Value: 75 turn on 3 light(s)2016-05-13 14:26:49 Value: 72 turn on 3 light(s)2016-05-13 14:26:49 Value: 68 turn on 3 light(s)2016-05-13 14:26:49 Value: 64 turn on 3 light(s)2016-05-13 14:26:49 Value: 60 turn on 2 light(s)2016-05-13 14:26:49 Value: 56 turn on 2 light(s)2016-05-13 14:26:49 Value: 52 turn on 2 light(s)2016-05-13 14:26:49 Value: 48 turn on 2 light(s)2016-05-13 14:26:49 Value: 44 turn on 2 light(s)2016-05-13 14:26:49 Value: 39 turn on 2 light(s)2016-05-13 14:26:49 Value: 36 turn on 2 light(s)2016-05-13 14:26:49 Value: 32 turn on 2 light(s)2016-05-13 14:26:49 Value: 29 turn on 1 light(s)2016-05-13 14:26:49 Value: 26 turn on 1 light(s)2016-05-13 14:26:49 Value: 23 turn on 1 light(s)2016-05-13 14:26:49 Value: 21 turn on 1 light(s)2016-05-13 14:26:49 Value: 19 turn on 1 light(s)2016-05-13 14:26:50 Value: 17 turn on 1 light(s)2016-05-13 14:26:50 Value: 15 turn on 1 light(s)2016-05-13 14:26:50 Value: 13 turn on 1 light(s)2016-05-13 14:26:50 Value: 11 turn on 1 light(s)2016-05-13 14:26:50 Value: 9 turn on 1 light(s)2016-05-13 14:26:50 Value: 7 turn on 1 light(s)2016-05-13 14:26:50 Value: 5 turn on 1 light(s)2016-05-13 14:26:50 Value: 3 turn on 1 light(s)2016-05-13 14:26:50 Value: 1 turn on 1 light(s)2016-05-13 14:26:52 Value: 0 turn on 0 light(s)

27

①. Output file from serial monitor - 이어서

Page 28: 아두이노 Digital/Analog IO

3-4. Output (결과)

28

②. 사진 첨부(arduino board + bread board)

초기상태 Led 5개 켜짐

가변저항값이 225이상이되어 led가 전부 켜짐

옆면에서 보았을 때 전부켜진 모습

가변저항값을 감소시켜led가 5개만 켜짐

가변저항값을 32미만으로감소시켜(돌려서) led가 1

개만 켜짐

Led 전부 off

가변저항을 살짝돌려(64미만) led 2개가 켜짐

Page 29: 아두이노 Digital/Analog IO

3-5. Conclusion (결론)

• 가변저항 10bit -> 디지털출력 8bit로 mapping.

• Analog Pin의 이용.

29

①. 배운점

②. 느낀점

• 원하는 숫자를 Input하기에는 어려움이 보인다.

• 조금의 흔들림에도 숫자가 급 변동하기 때문이다.

Page 30: 아두이노 Digital/Analog IO

4-1. Introduction(개요)

Analog Input으로 Analog Output의 관계를 생각해 보자. 예를 들어, 스피커의 볼륨버튼을 회전시킨다고 생각해보자. 버튼을 돌릴수록 볼륨은 커지거나 작아질 것이다. 이는 볼륨 버튼과 볼륨의 상태가 상호작용하도록 관계에 놓여 있기 때문이다. 실제로 스피커는 Analog Input과 Analog Output으로 이루어져 있다.

이와 마찬가지로, 가변저항기를 이용하여 LED의 상태를Analog적으로 출력해보겠다. 다음 목적을 보자.

30

①. Background(선택배경)

Page 31: 아두이노 Digital/Analog IO

4-1. Introduction(개요)

1. 가변저항기 값을 Input하고, 값을 Value에 저장해둔다.

2. Value값을 LED에 Mapping한다.

3. LED가 가변저항기 값에 따라서 변화하는지를 관찰한다.

31

②. Purpose(목적)

4-2. Configuration(회로도/구성도)

RGB Red LED

RGB Green LED

RGB Blue LED

Red LED

Green LED

Blue LED

220Ω

220Ω

220Ω

220Ω

+5V

+5V

+5V

Red Pot

Blue Pot

Green Pot

Page 32: 아두이노 Digital/Analog IO

4-2. Configuration(회로도/구성도)

1. LED 3개와 RGB LED를 Digital Pin(PWM)에 연결하고Output 설정을 한다.

2. 가변저항기 값을 Input하여 Value에 저장한다.

3. Value값을 8bit로 Mapping한다.

4. 가변저항기 값의 상태를 현재와 과거로 나누고, 현재값과 과거 값이 다를 때에만 작동하도록 한다.

5. LED와 RGBLED를 AnalogWrite하여 Value값 만큼Output한다.

32

②. How to operate(동작원리)

Page 33: 아두이노 Digital/Analog IO

4-3. Sketch

/* Case 4. analog input -> analog output */

const int rgbled[3]={9,10,11}; ///(pin) 11=RedLed, 10=GreenLed, 9=BlueLed

const int led[3]={3,5,6}; ///(pin) 6=RedLed, 5=GreenLed, 3=BlueLed

const int pot[3]={0,1,2}; //(pin) 2=RedLed, 1=GreenLed, 0=BlueLed

int value[3]={0}; //(index) 0=Red, 1=Green, 2=Blue, 가변저항의 현재값을 저장하는 변수선언

int last_value[3]={0}; //가변저항의 과거값을 저장하는 변수선언

void setup()

{

Serial.begin(9600); //시리얼 통신을 9600속도로 시작

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

{

pinMode(rgbled[i],OUTPUT); //rgbled 1개를 출력으로 지정

pinMode(led[i],OUTPUT); //led 3개를 출력으로 지정

}

Serial.println("");

Serial.println("Case 4. analog input -> analog output");

Serial.println("Turn the potentiometer");

}

void loop()

{

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

{

value[i]=analogRead(pot[i]); //가변저항으로부터 값을 읽어 value값에 넣음

value[i]=map(value[i], 0, 1023, 0, 255); //10비트를 8비트로 맵핑

value[i]=constrain(value[i], 0, 255); //value값을 0~255으로 제한

}

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

{

if(value[i]!=last_value[i]) //가변저항을 돌릴 때만 출력

setColor(value[0], value[1], value[2]);

last_value[i]=value[i]; //과거상태 저장

}

delay(50);

}

/*

setColor함수는 매개변수 값에 따라 PWM으로 RGB LED와 단색 LED를 출력합니다.

단색LED의 Combine버전이 RGB LED임을 알 수 있습니다

*/

void setColor(int red, int green, int blue)

{

analogWrite(led[2],red);

analogWrite(rgbled[2],red);

Serial.print("Red: ");

Serial.print(red);

analogWrite(led[1],green);

analogWrite(rgbled[1],green);

Serial.print("\tGreen: ");

Serial.print(green);

analogWrite(led[0],blue);

analogWrite(rgbled[0],blue);

Serial.print("\tBlue: ");

Serial.print(blue);

Serial.println("");

}

33

①. Sketch edit(작성, optimized code)

Page 34: 아두이노 Digital/Analog IO

4-3. Sketch

34

② Using flowchart and block diagram, Sketch analysis (분석)

start

rgbled[3]={9,10,11}led[3]={3,5,6}pot[3]={0,1,2}

가변저항 상태체크Value[0..2]=analogRead(pot[0..2])

value[0..2]!=last_value[0..2]

단색 LED 및 RGB LED 출력

setColor(value[0], value[1], value[2])yes

last_value[0..2]=current_value[0..2]

Page 35: 아두이노 Digital/Analog IO

4-4. Output (결과)

2016-05-13 15:49:11 Case 4. analog input -> analog output2016-05-13 15:49:15 Turn the potentiometer2016-05-13 15:49:16 Red: 1 Green: 0 Blue: 02016-05-13 15:49:16 Red: 2 Green: 0 Blue: 02016-05-13 15:49:16 Red: 5 Green: 0 Blue: 02016-05-13 15:49:16 Red: 7 Green: 0 Blue: 02016-05-13 15:49:16 Red: 9 Green: 0 Blue: 02016-05-13 15:49:16 Red: 11 Green: 0 Blue: 02016-05-13 15:49:16 Red: 12 Green: 0 Blue: 02016-05-13 15:49:16 Red: 15 Green: 0 Blue: 02016-05-13 15:49:16 Red: 17 Green: 0 Blue: 02016-05-13 15:49:16 Red: 19 Green: 0 Blue: 02016-05-13 15:49:16 Red: 21 Green: 0 Blue: 02016-05-13 15:49:16 Red: 24 Green: 0 Blue: 02016-05-13 15:49:16 Red: 28 Green: 0 Blue: 02016-05-13 15:49:16 Red: 33 Green: 0 Blue: 02016-05-13 15:49:16 Red: 36 Green: 0 Blue: 02016-05-13 15:49:16 Red: 40 Green: 0 Blue: 02016-05-13 15:49:16 Red: 42 Green: 0 Blue: 02016-05-13 15:49:16 Red: 43 Green: 0 Blue: 02016-05-13 15:49:16 Red: 45 Green: 0 Blue: 02016-05-13 15:49:17 Red: 48 Green: 0 Blue: 02016-05-13 15:49:17 Red: 51 Green: 0 Blue: 02016-05-13 15:49:17 Red: 54 Green: 0 Blue: 02016-05-13 15:49:17 Red: 58 Green: 0 Blue: 02016-05-13 15:49:17 Red: 63 Green: 0 Blue: 02016-05-13 15:49:17 Red: 65 Green: 0 Blue: 02016-05-13 15:49:17 Red: 69 Green: 0 Blue: 02016-05-13 15:49:17 Red: 75 Green: 0 Blue: 02016-05-13 15:49:17 Red: 88 Green: 0 Blue: 02016-05-13 15:49:17 Red: 98 Green: 0 Blue: 02016-05-13 15:49:17 Red: 106 Green: 0 Blue: 02016-05-13 15:49:17 Red: 111 Green: 0 Blue: 02016-05-13 15:49:17 Red: 117 Green: 0 Blue: 02016-05-13 15:49:17 Red: 122 Green: 0 Blue: 02016-05-13 15:49:17 Red: 126 Green: 0 Blue: 02016-05-13 15:49:17 Red: 133 Green: 0 Blue: 02016-05-13 15:49:17 Red: 140 Green: 0 Blue: 02016-05-13 15:49:17 Red: 148 Green: 0 Blue: 02016-05-13 15:49:17 Red: 156 Green: 0 Blue: 02016-05-13 15:49:18 Red: 160 Green: 0 Blue: 02016-05-13 15:49:18 Red: 164 Green: 0 Blue: 02016-05-13 15:49:18 Red: 173 Green: 0 Blue: 02016-05-13 15:49:18 Red: 184 Green: 0 Blue: 02016-05-13 15:49:18 Red: 194 Green: 0 Blue: 02016-05-13 15:49:18 Red: 206 Green: 0 Blue: 02016-05-13 15:49:18 Red: 206 Green: 0 Blue: 02016-05-13 15:49:18 Red: 214 Green: 0 Blue: 02016-05-13 15:49:18 Red: 223 Green: 0 Blue: 02016-05-13 15:49:18 Red: 236 Green: 0 Blue: 02016-05-13 15:49:18 Red: 242 Green: 0 Blue: 02016-05-13 15:49:18 Red: 249 Green: 0 Blue: 02016-05-13 15:49:18 Red: 249 Green: 0 Blue: 02016-05-13 15:49:18 Red: 255 Green: 0 Blue: 02016-05-13 15:49:18 Red: 255 Green: 0 Blue: 02016-05-13 15:49:19 Red: 251 Green: 0 Blue: 02016-05-13 15:49:19 Red: 238 Green: 0 Blue: 02016-05-13 15:49:19 Red: 206 Green: 0 Blue: 02016-05-13 15:49:19 Red: 192 Green: 0 Blue: 02016-05-13 15:49:19 Red: 181 Green: 0 Blue: 02016-05-13 15:49:19 Red: 181 Green: 0 Blue: 02016-05-13 15:49:19 Red: 169 Green: 0 Blue: 02016-05-13 15:49:19 Red: 159 Green: 0 Blue: 02016-05-13 15:49:19 Red: 159 Green: 0 Blue: 02016-05-13 15:49:19 Red: 146 Green: 0 Blue: 02016-05-13 15:49:19 Red: 131 Green: 0 Blue: 0

35

①. Output file from serial monitor:

Page 36: 아두이노 Digital/Analog IO

2016-05-13 15:49:19 Red: 108 Green: 0 Blue: 02016-05-13 15:49:19 Red: 102 Green: 0 Blue: 02016-05-13 15:49:19 Red: 100 Green: 0 Blue: 02016-05-13 15:49:19 Red: 99 Green: 0 Blue: 02016-05-13 15:49:19 Red: 96 Green: 0 Blue: 02016-05-13 15:49:19 Red: 95 Green: 0 Blue: 02016-05-13 15:49:19 Red: 93 Green: 0 Blue: 02016-05-13 15:49:20 Red: 92 Green: 0 Blue: 02016-05-13 15:49:20 Red: 93 Green: 0 Blue: 02016-05-13 15:49:20 Red: 92 Green: 0 Blue: 02016-05-13 15:49:20 Red: 92 Green: 0 Blue: 02016-05-13 15:49:20 Red: 89 Green: 0 Blue: 02016-05-13 15:49:20 Red: 66 Green: 0 Blue: 02016-05-13 15:49:20 Red: 42 Green: 0 Blue: 02016-05-13 15:49:20 Red: 30 Green: 0 Blue: 02016-05-13 15:49:20 Red: 21 Green: 0 Blue: 02016-05-13 15:49:20 Red: 12 Green: 0 Blue: 02016-05-13 15:49:20 Red: 7 Green: 0 Blue: 02016-05-13 15:49:22 Red: 0 Green: 0 Blue: 02016-05-13 15:49:22 Red: 0 Green: 3 Blue: 02016-05-13 15:49:22 Red: 0 Green: 11 Blue: 02016-05-13 15:49:22 Red: 0 Green: 20 Blue: 02016-05-13 15:49:22 Red: 0 Green: 29 Blue: 02016-05-13 15:49:22 Red: 0 Green: 39 Blue: 02016-05-13 15:49:22 Red: 0 Green: 49 Blue: 02016-05-13 15:49:22 Red: 0 Green: 59 Blue: 02016-05-13 15:49:22 Red: 0 Green: 69 Blue: 02016-05-13 15:49:22 Red: 0 Green: 78 Blue: 02016-05-13 15:49:22 Red: 0 Green: 86 Blue: 02016-05-13 15:49:22 Red: 0 Green: 94 Blue: 02016-05-13 15:49:22 Red: 0 Green: 102 Blue: 02016-05-13 15:49:23 Red: 0 Green: 109 Blue: 02016-05-13 15:49:23 Red: 0 Green: 116 Blue: 02016-05-13 15:49:23 Red: 0 Green: 121 Blue: 02016-05-13 15:49:23 Red: 0 Green: 128 Blue: 02016-05-13 15:49:23 Red: 0 Green: 135 Blue: 02016-05-13 15:49:23 Red: 0 Green: 141 Blue: 02016-05-13 15:49:23 Red: 0 Green: 141 Blue: 02016-05-13 15:49:23 Red: 0 Green: 148 Blue: 02016-05-13 15:49:23 Red: 0 Green: 154 Blue: 02016-05-13 15:49:23 Red: 0 Green: 160 Blue: 02016-05-13 15:49:23 Red: 0 Green: 166 Blue: 02016-05-13 15:49:23 Red: 0 Green: 172 Blue: 02016-05-13 15:49:23 Red: 0 Green: 178 Blue: 02016-05-13 15:49:23 Red: 0 Green: 185 Blue: 02016-05-13 15:49:23 Red: 0 Green: 192 Blue: 02016-05-13 15:49:23 Red: 0 Green: 200 Blue: 02016-05-13 15:49:23 Red: 0 Green: 207 Blue: 02016-05-13 15:49:23 Red: 0 Green: 215 Blue: 02016-05-13 15:49:23 Red: 0 Green: 222 Blue: 02016-05-13 15:49:23 Red: 0 Green: 229 Blue: 02016-05-13 15:49:23 Red: 0 Green: 236 Blue: 02016-05-13 15:49:24 Red: 0 Green: 243 Blue: 02016-05-13 15:49:24 Red: 0 Green: 250 Blue: 02016-05-13 15:49:24 Red: 0 Green: 255 Blue: 02016-05-13 15:49:24 Red: 0 Green: 250 Blue: 02016-05-13 15:49:24 Red: 0 Green: 239 Blue: 02016-05-13 15:49:24 Red: 0 Green: 224 Blue: 02016-05-13 15:49:24 Red: 0 Green: 210 Blue: 02016-05-13 15:49:25 Red: 0 Green: 196 Blue: 02016-05-13 15:49:25 Red: 0 Green: 183 Blue: 02016-05-13 15:49:25 Red: 0 Green: 171 Blue: 02016-05-13 15:49:25 Red: 0 Green: 160 Blue: 02016-05-13 15:49:25 Red: 0 Green: 148 Blue: 02016-05-13 15:49:25 Red: 0 Green: 138 Blue: 02016-05-13 15:49:25 Red: 0 Green: 128 Blue: 02016-05-13 15:49:25 Red: 0 Green: 120 Blue: 0

36

①. Output file from serial monitor - 이어서

Page 37: 아두이노 Digital/Analog IO

2016-05-13 15:49:25 Red: 0 Green: 111 Blue: 02016-05-13 15:49:25 Red: 0 Green: 101 Blue: 02016-05-13 15:49:25 Red: 0 Green: 92 Blue: 02016-05-13 15:49:25 Red: 0 Green: 82 Blue: 02016-05-13 15:49:25 Red: 0 Green: 73 Blue: 02016-05-13 15:49:25 Red: 0 Green: 60 Blue: 02016-05-13 15:49:25 Red: 0 Green: 47 Blue: 02016-05-13 15:49:25 Red: 0 Green: 33 Blue: 02016-05-13 15:49:25 Red: 0 Green: 33 Blue: 02016-05-13 15:49:25 Red: 0 Green: 20 Blue: 02016-05-13 15:49:25 Red: 0 Green: 9 Blue: 02016-05-13 15:49:27 Red: 0 Green: 0 Blue: 02016-05-13 15:49:27 Red: 0 Green: 0 Blue: 22016-05-13 15:49:27 Red: 0 Green: 0 Blue: 62016-05-13 15:49:27 Red: 0 Green: 0 Blue: 102016-05-13 15:49:27 Red: 0 Green: 0 Blue: 162016-05-13 15:49:27 Red: 0 Green: 0 Blue: 192016-05-13 15:49:28 Red: 0 Green: 0 Blue: 242016-05-13 15:49:28 Red: 0 Green: 0 Blue: 302016-05-13 15:49:28 Red: 0 Green: 0 Blue: 352016-05-13 15:49:28 Red: 0 Green: 0 Blue: 412016-05-13 15:49:28 Red: 0 Green: 0 Blue: 472016-05-13 15:49:28 Red: 0 Green: 0 Blue: 542016-05-13 15:49:28 Red: 0 Green: 0 Blue: 602016-05-13 15:49:28 Red: 0 Green: 0 Blue: 672016-05-13 15:49:28 Red: 0 Green: 0 Blue: 742016-05-13 15:49:28 Red: 0 Green: 0 Blue: 802016-05-13 15:49:28 Red: 0 Green: 0 Blue: 872016-05-13 15:49:28 Red: 0 Green: 0 Blue: 932016-05-13 15:49:28 Red: 0 Green: 0 Blue: 1002016-05-13 15:49:28 Red: 0 Green: 0 Blue: 1082016-05-13 15:49:28 Red: 0 Green: 0 Blue: 1152016-05-13 15:49:28 Red: 0 Green: 0 Blue: 1242016-05-13 15:49:28 Red: 0 Green: 0 Blue: 1342016-05-13 15:49:28 Red: 0 Green: 0 Blue: 1442016-05-13 15:49:28 Red: 0 Green: 0 Blue: 1552016-05-13 15:49:29 Red: 0 Green: 0 Blue: 1662016-05-13 15:49:29 Red: 0 Green: 0 Blue: 1752016-05-13 15:49:29 Red: 0 Green: 0 Blue: 1852016-05-13 15:49:29 Red: 0 Green: 0 Blue: 1962016-05-13 15:49:29 Red: 0 Green: 0 Blue: 2102016-05-13 15:49:29 Red: 0 Green: 0 Blue: 2252016-05-13 15:49:29 Red: 0 Green: 0 Blue: 2392016-05-13 15:49:29 Red: 0 Green: 0 Blue: 2542016-05-13 15:49:30 Red: 0 Green: 0 Blue: 2552016-05-13 15:49:30 Red: 0 Green: 0 Blue: 2452016-05-13 15:49:30 Red: 0 Green: 0 Blue: 2332016-05-13 15:49:30 Red: 0 Green: 0 Blue: 2222016-05-13 15:49:30 Red: 0 Green: 0 Blue: 2132016-05-13 15:49:30 Red: 0 Green: 0 Blue: 2032016-05-13 15:49:30 Red: 0 Green: 0 Blue: 1932016-05-13 15:49:30 Red: 0 Green: 0 Blue: 1822016-05-13 15:49:30 Red: 0 Green: 0 Blue: 1712016-05-13 15:49:30 Red: 0 Green: 0 Blue: 1602016-05-13 15:49:30 Red: 0 Green: 0 Blue: 1492016-05-13 15:49:30 Red: 0 Green: 0 Blue: 1392016-05-13 15:49:30 Red: 0 Green: 0 Blue: 1302016-05-13 15:49:30 Red: 0 Green: 0 Blue: 1192016-05-13 15:49:30 Red: 0 Green: 0 Blue: 1092016-05-13 15:49:31 Red: 0 Green: 0 Blue: 992016-05-13 15:49:31 Red: 0 Green: 0 Blue: 882016-05-13 15:49:31 Red: 0 Green: 0 Blue: 772016-05-13 15:49:31 Red: 0 Green: 0 Blue: 632016-05-13 15:49:31 Red: 0 Green: 0 Blue: 482016-05-13 15:49:31 Red: 0 Green: 0 Blue: 322016-05-13 15:49:31 Red: 0 Green: 0 Blue: 16

37

①. Output file from serial monitor - 이어서

Page 38: 아두이노 Digital/Analog IO

2016-05-13 15:49:31 Red: 0 Green: 0 Blue: 12016-05-13 15:49:40 Red: 0 Green: 0 Blue: 02016-05-13 15:49:40 Red: 2 Green: 0 Blue: 02016-05-13 15:49:40 Red: 3 Green: 0 Blue: 02016-05-13 15:49:40 Red: 5 Green: 0 Blue: 02016-05-13 15:49:40 Red: 6 Green: 0 Blue: 02016-05-13 15:49:40 Red: 7 Green: 0 Blue: 02016-05-13 15:49:41 Red: 10 Green: 0 Blue: 02016-05-13 15:49:41 Red: 13 Green: 0 Blue: 02016-05-13 15:49:41 Red: 20 Green: 0 Blue: 02016-05-13 15:49:41 Red: 29 Green: 0 Blue: 02016-05-13 15:49:41 Red: 39 Green: 0 Blue: 02016-05-13 15:49:41 Red: 51 Green: 0 Blue: 02016-05-13 15:49:41 Red: 64 Green: 0 Blue: 02016-05-13 15:49:41 Red: 83 Green: 0 Blue: 02016-05-13 15:49:41 Red: 100 Green: 0 Blue: 02016-05-13 15:49:41 Red: 119 Green: 0 Blue: 02016-05-13 15:49:41 Red: 133 Green: 0 Blue: 02016-05-13 15:49:41 Red: 145 Green: 0 Blue: 02016-05-13 15:49:41 Red: 155 Green: 0 Blue: 02016-05-13 15:49:41 Red: 165 Green: 0 Blue: 02016-05-13 15:49:41 Red: 178 Green: 0 Blue: 02016-05-13 15:49:41 Red: 192 Green: 0 Blue: 02016-05-13 15:49:41 Red: 207 Green: 0 Blue: 02016-05-13 15:49:41 Red: 223 Green: 0 Blue: 02016-05-13 15:49:41 Red: 242 Green: 0 Blue: 02016-05-13 15:49:41 Red: 252 Green: 0 Blue: 02016-05-13 15:49:41 Red: 255 Green: 0 Blue: 02016-05-13 15:49:42 Red: 255 Green: 1 Blue: 02016-05-13 15:49:42 Red: 255 Green: 4 Blue: 02016-05-13 15:49:42 Red: 255 Green: 7 Blue: 02016-05-13 15:49:42 Red: 255 Green: 10 Blue: 02016-05-13 15:49:42 Red: 255 Green: 14 Blue: 02016-05-13 15:49:42 Red: 255 Green: 17 Blue: 02016-05-13 15:49:42 Red: 255 Green: 22 Blue: 02016-05-13 15:49:42 Red: 255 Green: 30 Blue: 02016-05-13 15:49:42 Red: 255 Green: 40 Blue: 02016-05-13 15:49:42 Red: 255 Green: 52 Blue: 02016-05-13 15:49:42 Red: 255 Green: 65 Blue: 02016-05-13 15:49:42 Red: 255 Green: 76 Blue: 02016-05-13 15:49:42 Red: 255 Green: 86 Blue: 02016-05-13 15:49:42 Red: 255 Green: 96 Blue: 02016-05-13 15:49:42 Red: 255 Green: 104 Blue: 02016-05-13 15:49:42 Red: 255 Green: 113 Blue: 02016-05-13 15:49:42 Red: 255 Green: 113 Blue: 02016-05-13 15:49:42 Red: 255 Green: 121 Blue: 02016-05-13 15:49:42 Red: 255 Green: 130 Blue: 02016-05-13 15:49:43 Red: 255 Green: 130 Blue: 02016-05-13 15:49:43 Red: 255 Green: 130 Blue: 02016-05-13 15:49:43 Red: 255 Green: 142 Blue: 02016-05-13 15:49:43 Red: 255 Green: 156 Blue: 02016-05-13 15:49:43 Red: 255 Green: 164 Blue: 02016-05-13 15:49:43 Red: 255 Green: 164 Blue: 02016-05-13 15:49:43 Red: 255 Green: 172 Blue: 02016-05-13 15:49:43 Red: 255 Green: 183 Blue: 02016-05-13 15:49:43 Red: 255 Green: 192 Blue: 02016-05-13 15:49:43 Red: 255 Green: 202 Blue: 02016-05-13 15:49:43 Red: 255 Green: 213 Blue: 02016-05-13 15:49:43 Red: 255 Green: 224 Blue: 02016-05-13 15:49:43 Red: 255 Green: 237 Blue: 02016-05-13 15:49:43 Red: 255 Green: 237 Blue: 02016-05-13 15:49:43 Red: 255 Green: 251 Blue: 0

38

①. Output file from serial monitor - 이어서

Page 39: 아두이노 Digital/Analog IO

4-4. Output (결과)

39

②. 사진 첨부(arduino board + bread board)

초기상태 Green LED 켜짐

Blue LED 켜짐 Red, green조합으로Yellow 색상 만듬

Red, Blue조합으로 Pink 색상 만듬

Blue, Green조합으로 sky-blue색상 만듬

Red, Green조합으로orange색상 만듬

Red LED 켜짐

3개의 가변저항값을 최대로하여 모든 LED ON

Page 40: 아두이노 Digital/Analog IO

4-5. Conclusion (결론)

• LED의 밝기 = 색깔의 명암 = 실제로는 Digital Output의 빠른 번쩍임

• 즉, 착시효과

• Digital Input보다 상세한 Analog Input의 성능

40

①. 배운점

②. 느낀점

• Analog Input은 상세하지만 그 만큼 복잡하다.

• 그러므로 단순한 과정에서는 Digital Input이 효율적으로 보인다.