Top Banner
임베디드시스템개론 : Arduino 활용 Lecture #2: LED on/off, blinking & fading 2014. 3. 19 by 김영주
37

임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

Dec 29, 2019

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

임베디드시스템개론: Arduino 활용

Lecture #2: LED on/off, blinking & fading

2014. 3. 19 by 김 영 주

Page 2: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

강의 목차 전자회로 기초 AVR Atmega MCU 기초 “Hello, World!” in Arduino 디지털 출력 - LED 켜기 pinMode() / digitalWrite()

시간지연 : delay() LED 깜박이기

PWM 출력 : analogWrite() LED 밝기 조절

2

Page 3: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

전자회로 기초 (1) 전자회로(Electronic Circuit)

전원과 일련의 전자 소자가 연결되어 하나의 전기흐름경로를 구성한 것

전자소자는 전원에서 공급되는 전기 에너지를 이용하여 정해진 동작을 수행하며, 이러한 동작들의 조합으로 원하는 기능을 수행

3

heart pumps, blood flows voltage pushes, current flows

Page 4: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

전자회로 기초 (2) 전압(Voltage)

전자회로에서 두 지점간의 “전위차(electric potential difference)” 기본단위: V(Volt) 예: 1.5V AA 배터리

전류(Current) 전자회로 내에서의 전자의 흐름전자소자의 동작 에너지 전류가 흐른다회로의 두 지점간에 전압 차이가 있다

4

물은 높은 곳에서 낮은곳으로 흐른다

전류는 전압이 높은 곳에서 낮은 곳으로 흐른다

Page 5: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

전자회로 기초 (3) 전자 회로의 구성 요소

5

Page 6: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

전자회로 기초 (4) 전자 회로의 구성 요소

6

Page 7: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

전자회로 기초 (5) 간단한 전자회로 구성: LED flashlight

7

회로 부품: 회로:회로도:

5V330

저항은 왜필요한가?

Page 8: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

AVR ATMEGA-128 MCU 개요 (1) 53개의 I/O 핀으로, 외부와 8비트 단위로 인터페이스

PA0~PA7, PB0 ~PB7, PC0~PC7, PD0~PD7, PE0~PE7, PF0~PF7, PG0~PG4

8

Page 9: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

AVR ATMEGA-128 MCU 개요 (2) 논리값과 I/O 핀의 디지털 전압레벨

입력 핀 회로에서 디지털 전압레벨로 변환

ATmega128 입력 핀을 통해 내부 논리값(1 또는 0)으로 읽힘

출력 핀 프로그램 수행 결과로 얻은 논리값은 디지털 전압레벨로 출력

출력 신호로 적은 전력이 필요한 외부 장치를 직접 구동 가능

9

Page 10: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

AVR ATMEGA-128 MCU 개요 (3) ATmega128의 논리값과 디지털 출력 및 입력전압

10

Page 11: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

AVR ATMEGA-128 MCU 개요 (4) 5[V] 전원 사용 전압 사례

논리값 출력 1 : 적어도 4.0[V] 이상의 HIGH 디지털 전압레벨 출력

0 : 아무리 높아도 0.7[V] 넘지 않는 LOW 디지털 전압레벨 출력

논리값 인식 1 : 입력 HIGH 디지털 전압레벨, 적어도 3.0[V] 이상의 전압

0 : 입력 LOW 디지털 전압레벨, 아무리 커도 1.0[V] 이하의 전압

11

Page 12: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

AVR ATMEGA-128 MCU 개요 (5) 잡음여유

1에 대한 잡음여유 1을 전압레벨로 출력할 때, 최소전압과 1로 인식되는 최소전압 차

5[V] 사례 1을 출력할 때의 최소 전압 : 4.0[V] 1로 인식되는 최소 전압 : 3.0[V] 1에 대한 잡음여유 = 4.0[V] – 3.0[V] = 1.0[V]

0에 대한 잡음여유 0을 전압레벨로 출력할 때, 최대전압과 0으로 인식되는 최대전압의 차

5[V] 사례 0을 출력할 때의 최대 전압 : 1.0[V] 0으로 인식되는 최대 전압 : 0.7[V] 0에 대한 잡음여유 = 1.0[V] – 0.7[V] = 0.3[V]

12

Page 13: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

AVR ATMEGA-128 MCU 개요 (6) ATmega128 디지털 I/O 핀의 전기적 특성

디지털 IC와 ATmega128 I/O 핀의 전류 특성 비교 외부 장치 구동을 위해 일반 IC보다 더 큰 전류를 공급하거나 흡수 필요

13

Page 14: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

AVR ATMEGA-128 MCU 개요 (7) HIGH 전압레벨로 LED를 켤 수 있는 회로 비교

14

※ TTL IC 규격표의 0.4[mA] 전류로 LED 구동이 어려움

(실제 출력 전류는 규격을 초과한 수 mA 전류가 방출될 수 있음)

Page 15: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

AVR ATMEGA-128 MCU 개요 (8) 실제 ATmega128 출력 핀의 부하에 따른 전류•전압 특성곡선과 비교

15

Page 16: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

AVR ATMEGA-128 MCU 개요 (9) 최대 절대 정격

정격(Rating)으로 제시하는 값은 그 범위 안에서 사용할 수 있으며, 제조 회사에서 제공

최대 절대 정격은 어떤 경우에서도 꼭 지켜야 하는 엄격한 정격

16

Page 17: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

AVR ATMEGA-128 MCU 개요 (10) ATmega128 디지털 I/O 핀의 구조

17

Page 18: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

AVR ATMEGA-128 MCU 개요 (11) Pxn 핀 방향 설정을 위한 레지스터 비트명과 신호

Pxn 핀 출력 설정 DDxn(x는 A~G, n은 0~7) 플립플롭에 1을 기록 Three-state Buffer는 정상적으로 동작 PORTxn(x는 A~ G, n은 0~7) 플립플롭 값이 Pxn 핀으로 출력

18

Page 19: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

AVR ATMEGA-128 MCU 개요 (12) Pxn 핀 입력 설정 DDxn(x는 A~G, n은 0~7) 플립플롭에 0을 기록 Three-state Buffer는 고저항(High-impedance) 상태 Pxn 핀의 디지털 전압레벨은 슈미트 트리거 버퍼를 통해 잡음에

둔감 PINx 레지스터의 PINxn 비트를 읽는 순간, 내부 데이터 버스로

입력 내부 풀업저항 연결

PUD는 0이고, PORTxn이 1이면내부 풀업용 스위칭 트랜지스터가 ON되어 내부 풀업저항 연결

내부 풀업저항 개방 PUD는 1 혹은 PORTxn이 0이면

내부 풀업용 스위칭 트랜지스터가 OFF되어 풀업저항이 연결되지 않음

19

Page 20: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

AVR ATMEGA-128 MCU 개요 (13) ATmega128 디지털 I/O 레지스터 역할과 포트 구성

DDRx 레지스터 데이터 방향 레지스터(Data Direction Register)로서,

포트에 포함된 핀의 입출력 방향 결정

PORTx 레지스터 포트에 대한 데이터 레지스터(Data Register) 출력 방향일 때, 논리값을 디지털 전압레벨로 출력

0이 되어 핀이 입력 방향일 때, PORTxn 값이 1로 설정되면ATmega128 내부에서 Pxn 핀에 풀업저항 연결

PINx 레지스터 입력 핀 레지스터

핀이 입력 방향일 때, 핀의 디지털 전압레벨을 논리값으로 읽음

20

Page 21: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

AVR ATMEGA-128 MCU 개요 (14) 레지스터와 포트 구성

53개 Pxn과 연결된 DDRx, PORTx, PINx 레지스터가 8비트 버스와 연결

A포트에서 F포트까지는 DDRx 레지스터, PORTx 레지스터, PINx 레지스터가 8비트로 구성

G포트는 하위 5비트만 사용할 수 있게 구성

21

Page 22: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

“Hello, World!” in Arduino (1) 실습 목표

LED 켜기 프로그램 실습 전자부품 LED 및 저항 사용법 이해 아두이노 프로그램의 기본 구조 이해 아두이노 보드에서의 디지털 출력 함수 활용

pinMode() / digitalWrite()

22

Page 23: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

“Hello, World!” in Arduino (2) 사전 지식

Arduino Mega-ADK 보드에서는 40개의 디지털 입출력 핀(pin)을 지원 하나의 디지털 입출력 핀은 입력 및 출력 동작을 지원사용 전에 핀의 동작 모드를 설정하여야 함

디지털 입출력 핀의 전기적 특성 출력 모드 : 4.75~5.25V 전압, 최대 40mA 전류 출력 입력 모드 : 최대 40mA 전류의 전기 신호 입력 가능

LED : 규격-3mm, 동작 전기신호-2~2.5V, 5~20mA 저항(Register) : LED에 과도한 전압이 걸리지 않도록 전류를 흐름을

제한, 용량-330 Ω

23

Page 24: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

“Hello, World!” in Arduino (3) 회로도 및 회로 구성

24

회로도: 연결도: 구성 회로:

Page 25: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

“Hello, World!” in Arduino (4) 아두이노 프로그램

25

#define LED_PIN 9

void setup()

pinMode(LED_PIN, OUTPUT);

void loop()

digitalWrite(LED_PIN, HIGH);

Page 26: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

“Hello, World!” in Arduino (5) 프로그램 설명 아두이노 스케치(sketch) 프로그램은 기본적으로 다음의 두 개의

함수를 갖는다 void setup() : 프로그램 초기화 작업을 수행

void loop() : 프로그램 주 동작을 수행하는 함수로서 무한반복으로 호출되어 실행됨

아두이노 라이브러리 함수 void pinMode(int pin, int mode) :

디지털 입출력 핀의 동작 모드를 설정 mode 파라미터 값으로 INPUT/OUTPUT 상수를 전달

void digitalWrite(int pin, int value) : 디지털 출력 핀에 논리값에 대응하는 전기 신호를 출력 value 파라미터 값으로 HIGH/LOW 상수를 전달

26

Page 27: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

“Hello, World!” in Arduino (6) 프로그램 다운로드 및 테스트

프로그램을 컴파일하여 다운로드 리셋 후에 아두이노의 동작 확인

아두이노 보드는 프로그램 다운로드 후에 자동 리셋됨.

27

Page 28: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

LED Blink (1) 실습 목표

LED Blink 프로그램 실습 LED를 주기적으로 on/off

시간지연함수 delay() 활용

사전 지식 “Hello, World!” 실습 예제를 사용

delay() 함수는 msec 단위로 시간 지연함(busy waiting)

28

Page 29: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

LED Blink (2) 아두이노 프로그램

29

#define LED_PIN 9#define BLINK_INTERVAL 1000 // 1000 msec = 1sec

void setup()

pinMode(LED_PIN, OUTPUT);

void loop()

digitalWrite(LED_PIN, HIGH);delay(BLINK_INTERVAL);

digitalWrite(LED_PIN, LOW);delay(BLINK_INTERVAL);

Page 30: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

LED Blink (3) 프로그램 다운로드 및 테스트

프로그램을 컴파일하여 다운로드 리셋 후에 아두이노의 동작 확인

실험 LED가 깜박이는 간격을 바꾸어 보아라.

30

Page 31: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

LED Fading (1) 실습 목표

LED fading 프로그램 실습 LED의 출력 밝기 주기적으로 변화함.

Arduino에서의 PWM 출력 사용법을 숙지

31

Page 32: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

LED Fading (2) 사전 지식

“Hello, World!” 실습 예제를 사용 PWM(Pulse Width Modulation)

디지털 컴퓨터는 아날로그 전기신호를 출력할 수 없다

단지 디지털 신호(0V or 5V)만 출력

디지털 출력 핀을 통해 출력 전압을 0V~5V 사이로 출력하는 방법 출력 전기 신호의 펄스 폭을 조정일정 시간 동안의 전압을 조정

PWM 방식으로 analog 신호 출력을 시뮬레이션

아두이노는 16-bit timer를 사용하여 PWM을 구현

고정된 PWM 출력핀을 가짐

analogWrite(pin, value) 함수 PWM 출력 함수

value : 0~255 사이의 값

pin 변수가 지정하는 출력핀으로 5V*(value/255) 크기의 전압을 출력

32

Page 33: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

LED Fading (3) 사전 지식

PWM(Pulse Width Modulation)

33

PWM 속성(3가지) :

Page 34: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

LED Fading (4) 회로도 및 회로 구성

34

Page 35: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

LED Fading (5) 아두이노 프로그램

35

#define LED_PIN 9

int ledSignal;int step;

void setup()

ledSignal = 0;step = 5;

void loop()

analogWrite(LED_PIN, ledSignal);

ledSignal += step;if ((ledSignal >= 255) || (ledSignal < 0))

step *= -1;

delay(100);

Page 36: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

LED Fading (6) PWM 응용

PWM 출력은 다양한 영역에서 적용됨 센서의 입력 크기에 비례한 신호 출력이 필요한 응용 모터 제어, 속도 제어 톤(Tone) 출력 등

36

Page 37: 임베디드시스템개론 - silla.ac.krmclab.silla.ac.kr/lecture/201401/es/es-arduino-lecture... · 2014-05-18 · 강의목차 전자회로기초 AVR Atmega MCU 기초 “Hello

LED 관련 RGB, all-in-one LED

High-flex LED

37