차시 AS_02 대상 교육주제아두이노 LED 및버튼제어프로젝트교육시간 120 분 1. 아두이노를이용하여 LED 를제어할수있다. 교육목표 2. 아두이노를이용하여삼색 LED 를제어할수있다. 3. 아두이노에서버튼입력을수행하여프로그램에연동할수있다. 장비류는미리배분하고, 재료는

Similar documents
Microsoft PowerPoint - es-arduino-lecture-03

실험 5

지도상 유의점 m 학생들이 어려워하는 낱말이 있으므로 자세히 설명해주도록 한다. m 버튼을 무리하게 조작하면 고장이 날 위험이 있으므로 수업 시작 부분에서 주의를 준다. m 활동지를 보고 어려워하는 학생에게는 영상자료를 접속하도록 안내한다. 평가 평가 유형 자기 평가

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

실험. Multimeter 의사용법및기초회로이론 Multimeter 의사용법 멀티미터 (Multimeter) 는저항, 전압, 전류등을측정할수있는계측기로서전면은다음그림과같다. 멀티미터를이용해서저항, 전압, 전류등을측정하기위해서는다음그림과같은프로브 (probe) 를멀티미터

실험 5

실험 5

<4D F736F F F696E74202D203131C1D6C2F7202D E6FB8A620C0CCBFEBC7D120C4B3B8AFC5CD204C43442C C1A6BEEEC7CFB1E2205

< 제누이노스타트키트 > 사용설명서 목차 1. Arduino IDE 설치하기 2. Genuino 연결및 Arduino IDE 셋팅하기 3. 센서설명및연결도, 예제소스 1

PowerPoint 프레젠테이션

PowerPoint Template

1

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft Word - LAB_OPamp_Application.doc

Microsoft PowerPoint - chap06-2pointer.ppt

(Microsoft PowerPoint - \301\24608\260\255 - \261\244\277\370\260\372 \300\347\301\372)

시프트 레지스터 Shift Resistor 자, 이제 LED MATRIX 8x8 Board를 마이크로컨트롤러에 연결된 3개의 선으 로 제어해 보자. 이는 마이크로컨트롤러의 포트를 확장함과 동시에 프로그램 으로 제어를 더 쉽게 한다는 장점이 있다. 물론 포트를 절약하게

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

슬라이드 1

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft PowerPoint - es-arduino-lecture-08

½½¶óÀ̵å Á¦¸ñ ¾øÀ½

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

슬라이드 1

WS12. Security

전자회로 실험

OCW_C언어 기초

Microsoft Word - PLC제어응용-2차시.doc

<4D F736F F F696E74202D20325FBEC6B5CEC0CCB3EB20B1E2C3CABDC3C7E82E BC8A3C8AF20B8F0B5E55D>

Example: LED flashlight

Microsoft PowerPoint - Java7.pptx

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

슬라이드 1

chap 5: Trees

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Microsoft Word - Lab.7

Microsoft Word - Lab.4

<4D F736F F F696E74202D20C1A63036C0E520BCB1C5C3B0FA20B9DDBAB928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - chap06-1Array.ppt

PowerPoint Presentation

슬라이드 1

Microsoft Word - PEB08_USER_GUIDE.doc

C 프로그래밊 개요

PowerPoint 프레젠테이션

Microsoft PowerPoint - LoopDisplay Manual Ver0.3.1ULDB

Microsoft PowerPoint - chap03-변수와데이터형.pptx

PowerPoint Presentation

금오공대 컴퓨터공학전공 강의자료

Visual Basic 반복문

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

PowerPoint 프레젠테이션

UART Controller 구현

PowerPoint Template

KMC.xlsm

슬라이드 1

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

Microsoft PowerPoint - chap05-제어문.pptx

PowerPoint 프레젠테이션

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P

Arduino- 서보모터 서울과학기술대학교기계시스템디자인공학과 교수김성환


AL181N,ÇѱÛ,Ù+An+pip[D¿ë

SBR-100S User Manual

CAN-fly Quick Manual

특징 찾아보기 열쇠 없이 문을 열 수 있어요! 비밀번호 및 RF카드로도 문을 열 수 있습니다. 또한 비밀번호가 외부인에게 알려질 위험에 대비, 통제번호까지 입력해 둘 수 있어 더욱 안심하고 사용할 수 있습니다. 나만의 비밀번호 및 RF카드를 가질 수 있어요! 다수의 가

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Section 03 트랜지스터를이용한스위칭동작 16/45 트랜지스터의직류특성 활성 직류상황에서전류 I C 는전류 I B 보다 h FE 배만큼더많은전류가흐름» 베이스와이미터가순방향으로바이어스» 컬렉터와베이스가역방향으로바이어스 차단 만일 I B 가 0[A] 이면컬렉터전류

Microsoft Word doc

Ver. DS-2012.T3.DWS.STR-1.0 System Test Report for Digital Watch System Test Cases Specification Test Summary Report Project Team 이동아 Latest update on

슬라이드 1

Xcrypt 내장형 X211SCI 수신기 KBS World 채널 설정법

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

Microsoft PowerPoint - es-arduino-lecture-09

Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee

MACH3 Jog Pendant User Manual Draft Revision th of November 2015 By TECHDINE

가. 도트매트릭스제어하기 단일 LED와는다르게도트매트릭스를구동시는구동전류가프로세서에서출력되는전류보다사용량을더많이필요하기때문에 TTL 계열의 IC로구동시키기에는무리가따른다. 이러한문제를해결하기위해서사용전압, 전류정격이높은달링턴트랜지스터가어레이형태로들어있는 ULN2803을

PowerPoint 프레젠테이션

RS- 232, RS485 FND Display Module NET-SFND-4-23A RS-232, RS485 FND Display Module NET-SFND-4-23A MANUAL (Rev 1.0) Net-Control http

딥러닝 첫걸음

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

Physical Computing for Artists & Designers 연세대학교디지털아트학과 Earl Park

팬도캐드소개

(b) 미분기 (c) 적분기 그림 6.1. 연산증폭기연산응용회로

슬라이드 1

<3235B0AD20BCF6BFADC0C720B1D8C7D120C2FC20B0C5C1FE20322E687770>

= ``...(2011), , (.)''

06 세상을 변화시키는 연산자

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

PowerPoint 프레젠테이션

PowerPoint Presentation

Microsoft PowerPoint - chap-11.pptx

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.



윈도우즈프로그래밍(1)

Install stm32cubemx and st-link utility

Microsoft PowerPoint 상 교류 회로

PowerPoint Presentation

Transcription:

차시 AS_02 대상 교육주제아두이노 LED 및버튼제어프로젝트교육시간 120 분 1. 아두이노를이용하여 LED 를제어할수있다. 교육목표 2. 아두이노를이용하여삼색 LED 를제어할수있다. 3. 아두이노에서버튼입력을수행하여프로그램에연동할수있다. 장비류는미리배분하고, 재료는각실험단계에서배분한다. Arduino 1.0 USB 케이블 1.0 교육자료 ( 준비물 ) 300Ω 5.0 LED-RED( 고휘도 ) 5.0 브레드보드 ( 소형 ) 1.0 텍스위치 3.0 10kΩ 3.0 LED-RGB( 고휘도 ) 1.0 점퍼케이블 (F/F) 12

< 부품이해하기 > 1. 저항 < 그림 1> 저항 < 그림 2> 과전류로인한부품고장 < 그림 3> 저항의역할 LED나전자부품을사용하는경우부품을보호하기위해저항과함께사용하는경우가많습니다. 만약 LED 등의부품에너무많은전류가통과하면망가질확률이높기때문입니다. 전자부품을저항과함께연결하면저항은전류의일부를열에너지로교체하여전류의양을조절합니다. 이때저항이전류를열에너지로바꾸는양은 ohm( 저항의단위 ) 에따라다릅니다. 만약저항값이필요한값보다작은경우에도전류가많이흘러부품이망가질수있으므로, 적당한값의저항을사용해야합니다.

2. LED < 그림 1> LED < 그림 5> LED 의극성 < 그림 6> 전류의흐름 LED는전류를빛으로변환하는부품입니다. 다양한모양, 크기, 색깔을가지고있습니다. 또한, LED는극성을갖습니다. 극성이란한방향으로만전류가흘러야하는특징을뜻합니다. LED의다리를살펴보면긴쪽이양극 (+) 이고, 짧은쪽이음극 (-) 입니다. 양극을다른말로애노드 (anode), 음극을캐소드 (cathode) 라고부릅니다. 전류는양극에서음극으로흘러야하므로브레드보드에조립할때유의해야합니다. LED는회로도에서 < 그림 3> 과같이표시합니다.

3. 옴의법칙 : 전압 (V) = 전류 (I) x 저항 (R) < 그림 7> LED 의필요사양 LED 와같은부품에는사용할때확인할수있는사양의값과옴의법칙을이용하여필요한저항의 값을구할수있습니다. (A) 전압 (V) = 전류 (I) x 저항 (R) (B) 저항 (R) = 전압 (V) / 전류 (I) 먼저옴의법칙 (A) 에서양변을전류로나눠 (B) 와같이만듭니다. (C) 저항 (R) = (5-1.7) / 전류 (I) 아두이노핀의출력전압이 5V 이고 LED 의필요전압이 1.7V 이기때문에 (B) 의전압부분에각 전압의차를넣습니다. (D) 저항 (R) = (5-1.7) / 0.01 LED 의필요사양에표시된전류값인 10mA 를전류에넣습니다. ma 는기존 A 의 1,000 분의 1 단위이므로 10 에서 1,000 을나눈 0.01 을전류부분에넣습니다. (E) 330 = (5-1.7) / 0.01 계산하면필요한저항값이 330 으로나옵니다. 이렇게계산된저항값을바로사용해도되지만보다 안전한사용을위해좀더높은값의저항을사용하는것이추천합니다.

< 실습 > 1. 파도치는 LED 구현하기 : LED 여러개를이용해파도처럼빛나도록만들어봅시다. (1) 재료 : LED 5 개, 510 ohm 저항 5 개 < 그림 8> 재료 (2) 회로도 < 그림 9> 회로도 회로는 < 그림 9> 와같이 2~6 번까지의핀에 510 ohm 저항과 LED 를연결합니다.

(3) 아두이노프로그래밍 < 코드 1> 파도치는 LED #define DELAY_TIME 100 void setup(){ pinmode(2, OUTPUT); pinmode(3, OUTPUT); pinmode(4, OUTPUT); pinmode(5, OUTPUT); pinmode(6, OUTPUT); void loop(){ digitalwrite(2, HIGH); delay(delay_time); digitalwrite(2, LOW); digitalwrite(3, HIGH); delay(delay_time); digitalwrite(3, LOW); digitalwrite(4, HIGH); delay(delay_time); digitalwrite(4, LOW); digitalwrite(5, HIGH); delay(delay_time); digitalwrite(5, LOW); digitalwrite(6, HIGH); delay(delay_time); digitalwrite(6, LOW); digitalwrite(5, HIGH); delay(delay_time); digitalwrite(5, LOW); digitalwrite(4, HIGH); delay(delay_time); digitalwrite(4, LOW); digitalwrite(3, HIGH); delay(delay_time); digitalwrite(3, LOW);

(4) 코드분석 1 #define DELAY_TIME 100 #define은매크로상수를선언하는명령어입니다. 상수란변수와비슷하지만일단한번값이정해지면다음에바꿀수없습니다. 매크로상수선언은변수선언과달리마지막에세미콜론을입력하지않습니다. (5) 확인하기 완성되었다면매 0.1 초마다 LED 가좌우순서대로켜지는것을볼수있습니다.

2. 3 색 LED 자동색변경 : 아날로그신호출력을이용해삼색 LED 를제어해봅시다. (1) 삼색 LED < 그림 10> 삼색 LED < 그림 11> 삼원색 < 그림 12> 전압을이용한색의양조절 빛의삼원색을이용해원하는색을표현할수있는 LED 입니다. 삼원색은빛을구성할때핵심이 되는세가지색을말합니다. TV 나 PC 모니터에서삼색 LED 를사용해삼원색으로색을표현합니다. 색의양은전압을조절해변경할수있으며 0V 에서 5V 사이중원하는값으로변경합니다. (2) PWM < 그림 13> 하드웨어의출력 아두이노와같은하드웨어는전압출력을오로지 LOW 또는 HIGH 로설정할수있습니다. 따라서 LOW 나 HIGH 가아닌아날로그값으로변경하기위해펄스폭변조 (PWM) 방식을사용합니다.

< 그림 14> PWM 의기준주기 PWM 을사용할때기준주기를고려해야합니다. 아두이노에서기준주기는대략 0.002 초입니다. 기준주기동안의전압과출력전압은동일합니다. < 그림 15> PWM의이용해전압을 25% 로조절하기만약주기의특정부분만 HIGH로설정하고나머지는 LOW로설정하면출력은그비율에따라변합니다. 예를들어 5V를 25% 로하고나머지 0V를 75% 로해서 5V의 25% 인 1.25V가됩니다. 이를통해전압출력을 0V에서 5V 사이원하는값으로바꿀수있습니다. (3) 재료 : 삼색 LED < 그림 16> 재료

(4) 회로도 < 그림 17> 회로도삼색 LED의 R, G, B를각각 11, 10, 9에연결하고아두이노 5V를삼색 LED의가장긴핀과연결합니다. 간혹 R과 B가잘못표시된삼색 LED가있는데이런경우위치를서로바꾸어연결합니다. 핀번호하단의물결 (~) 표시는 PWM 기능을사용할수있다는뜻입니다. (5) 아두이노프로그래밍 < 코드 2> 자동으로색바뀌게하기 #define RED 11 #define GREEN 10 #define BLUE 9 void setup(){ randomseed(analogread(0)); // 난수생성기초기화 void loop(){ analogwrite(red, random(255)); // 빨간색조절 analogwrite(green, random(255)); // 초록색조절 analogwrite(blue, random(255)); // 파란색조절 delay(1000);

(6) 코드분석 1 randomseed( 키값 ); 난수발생함수는프로그래밍에서자주사용합니다. 무작위수 ( 난수 ) 발생이필요한경우 randomseed 함수로초기화하고 random() 함수에서무작위수를생성해사용합니다. setup부분에보면 randomseed 명령어를볼수있습니다. randomseed는난수생성기를초기화시켜주는명령어입니다. 여기서 random이라는명령어를통해난수를사용하는데, 사용전에는꼭난수생성기를초기화해줘야합니다. 왜냐하면난수생성기를초기화하지않으면동일한순서로난수가만들어지기때문입니다. 따라서키값을사용해난수생성기를초기화합니다. 코드에서는키값으로 analogread(0) 이사용되었습니다. 2 analogread(0) analogread는아날로그입력값을읽는명령어입니다. 아날로그입력핀은 A0와같이표시하는데, 여기서 A는 Analog의약자이고 0은핀번호를의미합니다. 즉, analogread(0) 는 A0번핀의값을읽으라고명령하는것입니다. 아날로그입력핀은처음부터입력모드로설정되며플로팅상태입니다. 따라서전압이 LOW와 HIGH를사이를이동하면서 analogread라는명령어가실행됐을때무작위의값을읽습니다. 무작위로읽은값은다시난수생성기를초기화할때키값을사용합니다. 이러한방식으로똑같은값이키값으로사용되어난수생성기를초기화하는것을방지할수있습니다. 3 random( 최대값 ); random은실제난수를만드는명령어입니다. 0에서최대값사이에서무작위로값을뽑습니다. 예를들어 random(255) 는 0에서 254 중에무작위수를고릅니다. random 명령어는 random( 최소값, 최대값 ) 과같이최소범위또한줄수있습니다. (7) 확인하기 정상적으로만들었다면매 1 초마다무작위로색이변하면서빛나는것을볼수있습니다.

3. 버튼기초실습 : 버튼을사용해 LED 를제어해봅시다. (1) 재료 : 버튼, LED, 560ohm 저항, 10k ohm 저항 < 그림 18> 재료 (2) 회로도 < 그림 19> 회로도 12 번핀에 LED 를, 7 번핀에버튼을연결합니다. 버튼에는 10k ohm 저항을사용합니다.

(3) 풀업 & 풀다운 Pull up & Down < 그림 20> 풀다운 (Pull-Down) 저항회로연결을보면버튼을선 2개로연결하지않고저항을추가해선 3개로연결한것을볼수있습니다. 이와같이연결하는이유는핀모드를입력으로설정하면해당핀이플로팅상태가되기때문입니다. 플로팅상태란해당핀에항시소량의전류가흘러핀의전압이 LOW와 HIGH 사이를계속움직이는현상을말합니다. 이로인해올바른신호값을인식할수없다는문제점을갖고있습니다. 이러한문제점을해결하기위해저항을버튼에연결하여핀의전압을 LOW 또는 HIGH에고정합니다. LOW에고정시키는것을풀다운 (Full-Down), HIGH에고정시키는것을풀업 (Pull-Up) 이라고합니다.

1 풀업 < 그림 21> 풀업, 스위치가열려진상태 < 그림 22> 풀업, 스위치가닫힌상태입력핀과전원사이에저항을연결합니다. 스위치가열린상태인경우입력핀이전원과연결이되어있으므로전압이 5V가됩니다.(Pull-Up). 스위치가닫힌상태이면입력핀의전압은그라운드와동일한 0V가됩니다. 2 풀다운 < 그림 23> 풀다운, 스위치가열려진상태 < 그림 24> 풀다운, 스위치가닫힌상태 입력핀과그라운드사이에저항을연결합니다. 스위치가열린상태인경우입력핀이그라운드와 바로연결되므로전압이 0V 가됩니다.(Pull-Down).

(4) 아두이노프로그래밍 < 코드 3> 버튼사용하기 #define LED 12 #define BUTTON 7 void setup(){ pinmode(led, OUTPUT); pinmode(button, INPUT); void loop(){ if (digitalread(button) == HIGH){ // 버튼상태가 HIGH 인지확인한다. // 비교해서참이라면아래코드가실행된다. digitalwrite(led, HIGH); delay(500); digitalwrite(led, LOW); (5) 코드분석 1 if ( 조건 ) {... loop부분에보면위와같이 if문을볼수있습니다. if문은소괄호 () 안의조건이참인경우중괄호 { 안의코드를실행합니다예를들어. if (digitalread(button) == HIGH) {... 위코드를살펴봅시다. C언어에서 == 기호는좌우가동일한지비교합니다. 만약동일하면참이고다르면거짓이며, 프로그래밍에서는참을 true, 거짓을 false라고부릅니다. 따라서위코드는버튼의상태가 HIGH인지비교한다는뜻입니다. if ( 조건 ) {... else {... if문밑에 else가붙는경우가있습니다. 조건이거짓인경우 else 밑중괄호의코드가실행됩니다. (6) 확인하기 정상적으로연결했다면버튼이눌렸을때 LED 가켜졌다가 0.5 초뒤에꺼지게됩니다. (7) 도전하기 - 파도처럼반짝이는 LED 의순서를바꿔봅시다. - 버튼방식을풀업으로바꿔구현해봅시다.

4. 버튼으로 LED 제어 (1) 재료 : 삼색 LED, 버튼, 10k ohm 저항 < 그림 25> 재료 (2) 회로도 < 그림 27> 회로도 2~4 번까지버튼을연결하고, 9~11 번까지삼색 LED 에연결합니다.

(3) 아두이노프로그래밍 < 코드 4> 버튼을이용해제어하기 #define RED 11 #define GREEN 10 #define BLUE 9 #define RED_BUTTON 4 #define GREEN_BUTTON 3 #define BLUE_BUTTON 2 int r=255, g=255, b=255; void setup(){ pinmode(red_button, INPUT); pinmode(green_button, INPUT); pinmode(blue_button, INPUT); void loop(){ if(digitalread(red_button) == HIGH){ --r; // r 값을감소시킨다. if(r<0){ r=255; if(digitalread(green_button) == HIGH){ --g; // g 값을감소시킨다. if(g<0){ g=255; if(digitalread(blue_button) == HIGH){ --b; // b 값을감소시킨다. if(b<0){ b=255; analogwrite(red, r); analogwrite(green, g); analogwrite(blue, b); delay(10);

(4) 코드분석 1 ++a ( 증가연산자 ) ++ 기호는해당변수에 1 을더한다는뜻입니다. 2 --a ( 감소연산자 ) -- 기호는해당변수에 1 을뺀다는뜻입니다. 3 증감연산자는변수앞이나뒤에모두사용가능합니다. if(++a == HIGH){ vs if(a++ == HIGH){ ++ 기호의위치차이는 if문을통해비교할수있습니다. 전자같은경우 a의값을먼저증가하고 HIGH를비교합니다. 후자같은경우 HIGH와먼저비교를한뒤에 a의값을증가합니다. (5) 확인하기 정상적으로만들었다면각버튼을누를때마다빨강, 파랑, 초록의색양이변경됩니다. (6) 도전해보기 - 인터넷에서원하는색의 RGB 값을구해색을바꿔봅시다. - 색의값을감소시키도록변경해봅시다.