4. 아두이노로 LED 제어하기 - 스마트 폰으로 제어하는 아두이노 -.

Slides:



Advertisements
Similar presentations
Youn-Hee Han, In-Seok Kang {yhhan, Laboratory of Intelligent Networks Advanced Technology Research Center Korea University of Technology.
Advertisements

1 모터 (Motors) 김원웅. 2 모터 (Motor) □ 모터 응용분야 □ Desktop PC 의 DVD ROM, HDD □ 러닝머신, 전동드릴, 선풍기 등 전력에 의해서 뭔가가 움직이 는 분야에는 거의 모두 모터가 사용 □ 우리가 배울 모터의.
Ubiquitous Computing Practice (Photo Resistor) Youn-Hee Han, In-Seok Kang {yhhan, Laboratory of Intelligent Networks Advanced Technology.
아두이노 활용 SW코딩 시작하기 아두이노 소개 개발툴 다운로드 USB 드라이버 설치하기 개발툴 실행하기
자바실험실 이동준 우리 곁으로 다가온 사물 컴퓨팅 자바실험실 이동준.
PIC는 우리의 친구 한국정보통신대학교 디지털미디어연구소.
다섯째날 : 외부 인터럽트 - 당근이의 AVR 갖고 놀기 - 당근닷컴
PIC는 우리의 친구 한국정보통신대학교 디지털미디어연구소.
2015년 2학기 PULSE 4 전자물리실험 11주차 – 초음파 거리 측정 실험 - DSU 메카트로닉스 융합공학부 -
2015년 2학기 PULSE 4 전자물리실험 09 - Servo Motor 제어 - DSU 메카트로닉스 융합공학부 -
아두이노 프로그래밍 1일차 – Part2 아두이노 사양 강사: 김영준 목원대학교 겸임교수.
컬러 LED바 이해하기 목차 재료준비 및 브레드 보드 배선 구성하기 컬러 LED바 이해 및 프로그램 실습 응용 작품 만들기.
CHAPTER 1. INTRODUCTION.
PWM 2학년A반 윤영헌 PWM 방식의 종류 ① Carrier Based PWM ② Optimal PWM
아날로그 입력과 출력.
차 례 품질보증 및 A/S안내 1. 제품의 제원 2. 제품의 특징 3. 제품의 구성품목 4. 제품의 부분별 명칭 및 기능
아두이노 기반 펌웨어 개발 FUTURE INNOVATOR 강사: 김 영 준 ㈜헬로앱스
Arduino와 Led를 이용하여 Wearable Display 만들기
임베디드 프로그래밍 Lecture #
색온도 및 RGB 색상 조절이 가능한 LED 조명 제어 기술
GPIO RaspberryPi Sejin Oh.
GPIO RaspberryPi Sejin Oh.
아두이노 프로그래밍 5일차 – Part2 지그비 통신 강사: 김영준 목원대학교 겸임교수
MECHA 3차 세미나 2015년 4월 9일 목요일 김지원.
1. 아두이노란 무엇인가? - 스마트 폰으로 제어하는 아두이노 -.
12. 아두이노와 센서를 이용한 제어 - 스마트 폰으로 제어하는 아두이노 -.
AC 서보 모터의 전력변환회로 전력변환회로의 목적 : 개요 : 직류전력 교류전력 AC 서보 모터의 전력변환회로
AVR - Chapter 13 황 지 연.
Arduino uno의 Hardware 구성부품의 종류와 그 용도.
아두이노와 Node.js를 이용한 IoT 프로젝트
고등용 LED를 이용한 재미있는 표현.
5장. 센서활용 전자회로 설계 및 제작 1. Digital Clock Board
제 3 장 아두이노 무조건 따라하기 - 스마트 폰으로 제어하는 아두이노 -.
11. 아두이노를 이용한 Text LCD 제어 - 스마트 폰으로 제어하는 아두이노 -.
아두이노 프로그래밍 2일차 – Part4 아날로그 키패드 활용하기 강사: 김영준 목원대학교 겸임교수.
4족 로봇 삼식이팀 박명대.
다섯째날 : 외부 인터럽트 - 당근이의 AVR 갖고 놀기 - 당근닷컴
캡스톤 물리 음성 인식을 통한 무드 등 지금은 6시 55분 조.
아두이노 프로그래밍 2일차 – Part2 PSD 거리센서 강사: 김영준 목원대학교 겸임교수.
아두이노 프로그래밍 2일차 – Part2 PSD 거리센서 강사: 김영준 목원대학교 겸임교수
9. 아두이노를 이용한 FND 제어 - 스마트 폰으로 제어하는 아두이노 -.
아두이노 프로그래밍 3일차 – Part1 컬러 LED바 활용하기 강사: 김영준 목원대학교 겸임교수
2015년 2학기 PULSE 4 전자물리실험 10 – 조도 센서와 소리 발생 - DSU 메카트로닉스 융합공학부 -
5. 아두이노로 LED와 스위치 제어하기 - 스마트 폰으로 제어하는 아두이노 -.
Clean Bench Manual 『Model : WBCV-4』 본 사 : 경기도 안양시 동안구 관양 2동 799번지
아두이노 프로그래밍 1일차 – Part4 값출력 및 디지털 읽기 강사: 김영준 목원대학교 겸임교수
2015년 2학기 PULSE 4 전자물리실험 09-Servo Motor 제어 - DSU 메카트로닉스 융합공학부 -
02강 아두이노 LED 기본 개념 LED Example1 LED Example2 LED Example3
클라우드 서버로 사용자 데이터 전송하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
클라우드 서버로 부터 값 읽어오기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
디지털공학 및 실험 디지털 공학: 부울대수를 기반으로 하는 논리적인 회로의 입출력에 대하여 공부하고 이를 응용한 기능을 설계하는 과목. 부울대수: 참, 거짓 두 종류의 입력(출력)데이터와 AND, OR, NOT 등의 연산자사이의 관계를 정의해 놓은 학문분야. 값의 명칭:
8. 아두이노를 이용한 아날로그 제어 - 스마트 폰으로 제어하는 아두이노 -.
15. STEP 모터 제어 - 스마트 폰으로 제어하는 아두이노 -.
전자물리실험 07-발광소자와 수광소자를 이용한 광신호 감지 - DSU 메카트로닉스 융합공학부 - PULSE 4
센서값 전송하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
ST모드에서 데이터 읽기 및 제어하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
클라우드 서버로 데이터 전송하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
체크포인트 가정 내 일어나는 사고에 대해 알아보고 사고예방을 위해 주의한다. | 예방법 장소별 사고 – 방과 거실 1 2 높은 곳 에 물건 두지 않기! 날카로운 모서리는 천으로 씌우기!
함수를 이용한 키패드 센서 제어하기 재료준비 및 브레드 보드 배선 구성하기 키패드 센서를 통한 함수 이해하기 및 활용 실습
여러가지운동 신나는 과학 이원숙.
코딩체험교실 아두이노 로봇 코딩 4차산업기술 체험 (SW코딩/자율주행기술).
아두이노 프로그래밍 4일차 – Part1 모바일 로봇 강사: 김영준 목원대학교 겸임교수
아두이노 프로그래밍 Lecture #
Tone 명령어 이해하기 목차 재료준비 및 브레드 보드 배선 구성하기 Tone 명령어 기본 및 프로그램 이해 응용 작품 만들기.
아날로그일까? 디지털일까? -사용자 경험 기반 디지털 기술을 활용한 반응하는 액자 만들기-
3주차 실험 지도 교수 : 한형석 교수님 Gachon Univ. HHS LABORATORY.
아두이노 서보로봇 제어 (블루투스 스마트폰 조종) -03차시-
4 LED 출력 LED 점멸 LED 밝기 조절 RGB LED로 색상 표현하기 FND 제어 4-digit FND 제어 Dot matrix 제어 Dot matrix를 이용한 애니메이션.
3. Arduino 실습 – 아날로그 입력(1) 아날로그 입력 – 먼지 센서 먼지 센서 개요 먼지 센서 특징 먼지 검출 센서
Presentation transcript:

4. 아두이노로 LED 제어하기 - 스마트 폰으로 제어하는 아두이노 -

강의 개요 아두이노 보드를 사용하여 LED를 on-off제어하는 다양한 실습으로 아두이노 보드의 디지털제어 방법과 명령어들을 익혀보자.

4.1 LED 1개 ON/OFF 제어 아두이노 보드로 모든 디지털 출력을 내보낼 수 있는 예 단순하고 쉽지만 확장이 가능한 중요한 개념 "Blink" 예제 프로그램 setup( )함수 안에서 pinMode()함수를 이용 디지털입출력 핀 13번을 출력 설정 loop( )함수 안에서 digitalWrite() 함수 핀 13번에 "1"과 "0"을 출력 delay( )함수를 이용하여 시간 지연 아두이노 보드의 디지털입출력 핀 13번 부근에 있는 LED가 약 1초 간격으로 깜박임

"Blink" 예제 void setup() { 아두이노 보드의 핀 설정 pinMode(13, OUTPUT); 디지털입출력 핀 13번을 출력으로 설정 } setup() 함수 종료 void loop() { loop() 함수의 시작, 내부의 명령이 무한 반복 digitalWrite(13, HIGH); 디지털입출력 핀 13번에 HIGH("1") 출력 delay(1000); 1000ms 동안 시간지연 digitalWrite(13, LOW); 디지털입출력 핀 13번에 LOW("0") 출력 loop() 함수의 끝

예제 4.1 디지털입출력 13번의 출력제어 아두이노 보드 외부에 LED를 연결하여 제어 디지털입출력 핀 13번에 LED 연결 "Blink" 사용한 스케치 업로드 디지털입출력 핀 13번에 연결한 LED가 약 1초 간격으로 깜박임

예제 4.2 디지털입출력 핀 10번의 출력제어 LED에 연결한 핀 13번을 핀 10번으로 변경 pinMode(10, OUTPUT); digitalWrite(10, HIGH);

UNO와 Mega 보드의 디지털입출력 UNO보드 디지털입출력 핀 0~13번 가운데 어떤 것으로 변경하여도 동일한 결과

예제 4.3 ON/OFF 속도 조절 LED의 깜박이는 속도 조절 주요개념 dealy(ms)함수에서 변수 ms는 밀리초(milli second) 의미 "delay(500)" 0.5초의 시간지연을 시키는 동작 delay(500); "delay(1000)"에서 보다 "delay(500)"에서 빠르게 LED가 깜박임

예제 4.4 변수 사용 변수를 사용하면 입출력 핀이나 시간지연의 변경 편리 주요개념 변수 선언을 loop( )함수 밖에 선언 전역 변수로 사용되어 스케치 전체에 적용 변수는 형식의 지정이 필요 핀의 번호와 같이 정수형으로 표현되는 값은 "int"로 선언 int digitalPin = 10; int delayTime = 500; void setup() { pinMode(digitalPin, OUTPUT); } void loop() { digitalWrite(digitalPin, HIGH); delay(delayTime); digitalWrite(digitalPin, LOW);

4.2 LED 4개 on/off제어 여러 개의 LED의 on/off 상태 제어 디지털 입출력 핀 4개에 LED 4개 연결

예제 4.5 LED 4개의 ON-OFF 제어 4개의 LED 동시 ON-OFF void setup() { pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); } void loop() { digitalWrite(8, HIGH); digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); digitalWrite(8, LOW); digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW);

예제 4.6 변수와 for문을 사용한 ON/OFF 제어 int i; for문에 사용하기 위하여 i를 정수형 변수로 선언 void setup() { for(i=8; i<12; i++) { pinMode(i, OUTPUT); } 핀 8번부터 11까지 디지털 출력모드로 지정 void loop() { loop함수 시작 digitalWrite(i, HIGH); delay(1000); 디지털 출력모드인 핀 8번부터 11으로 HIGH출력 시간지연 1초 digitalWrite(i, LOW); 디지털 출력모드인 핀 8번부터 11으로 LOW출력 loop함수 끝

예제 4.7 배열과 변수, for문을 이용한 ON/OFF 제어 연속적이 않은 핀들을 이용한 제어는 배열을 사용 주요개념 사용하고자 하는 디지털 입출력 핀을 배열에 저장 for문을 사용하여 호출하도록 작성 pinLED[ ]= {pin1, pin2, pin3, pin4};

예제 4.7 스케치 int pinLED[]= {6, 9, 11, 12}; int i; pinLED[0]~pinLED[3]은 각각 핀 6, 9, 11, 12번 지정 void setup() { for(i=0; i<4; i++) { pinMode(pinLED[i], OUTPUT); } pinLED[0]이 나타내는 6번을 출력모드로 선언 pinLED[1]이 나타내는 9번을 출력모드로 선언 pinLED[2]이 나타내는 11번을 출력모드로 선언 pinLED[3]이 나타내는 12번을 출력모드로 선언 void loop() { loop함수 시작 digitalWrite(pinLED[i], HIGH); delay(1000); 디지털 출력모드인 핀 6, 9, 11, 12번으로 HIGH 출력 시간지연 1초 digitalWrite(pinLED[i], LOW); 디지털 출력모드인 핀 6, 9, 11, 12번으로 LOW 출력 loop함수 끝

4.3 LED 4개의 ON/OFF 상태를 좌우로 이동제어 주요개념 제어하고자 하는 핀을 배열에 저장 원하는 순서에 따라 배열에 저장된 핀을 사용하게 되면, 연속하지 않은 핀들도 순서적으로 제어 가능

int pinLED[]= {8, 9, 10, 11}; int i; 배열 pinLED[] 정수형으로 선언하고 값을 지정 pinLED[0]~pinLED[3]은 각각 핀8~11번 지정 void setup() { for(i=0; i<4; i++) { pinMode(pinLED[i], OUTPUT); } pinLED[0]이 나타내는 8번을 출력모드로 선언 pinLED[1]이 나타내는 9번을 출력모드로 선언 pinLED[2]이 나타내는 10번을 출력모드로 선언 pinLED[3]이 나타내는 11번을 출력모드로 선언 void loop() { loop함수 시작 for(i=0; i<4; i++) { digitalWrite(pinLED[i], HIGH); delay(1000); digitalWrite(pinLED[i], LOW); 지정된 핀에 HIGH를 출력(LED ON) 1초의 시간지연 지정된 핀에 LOW를 출력(LED ON) loop함수 끝

4.4 PWM을 이용한 밝기 조절 UNO보드의 디지털입출력 가운데 PWM제어가 가능한 핀 “~”가 붙어 있는 핀 3, 5, 6, 9, 10, 11번 그림 1.3과 표 1.3 참고 LED의 밝기나 모터의 속도 빠르기 제어 가능

PWM PWM(Pulse Width Modulation) 아두이노 보드 펄스의 폭을 조정하여 전류를 공급해 주는 방식 펄스가 HIGH(+5V)가 되는 시간만큼 ON 펄스가 LOW(0V)가 되면 OFF ON/OFF 동작을 일정한 주기로 반복 펄스가 HIGH가 되는 시간이 길수록 더 많은 전류 흐르게 되어 LED의 경우 더 밝아지고, 모터의 경우 속도가 빨라진다 아두이노 보드 PWM 기능을 가진 디지털 입출력 핀 사용 analogWrite() 함수로 제어

예제 4.9 LED의 밝기 조절 LED의 밝기를 밝게 하거나 어둡게 조정 주요개념 LED는 LED_on 시간만큼 켜져 있다가, LED_off 시간만큼 꺼지게 되는 동작을 LED_pulse 주기로 반복 LED_on 시간을 크게 하면 LED의 밝기는 밝아지는 PWM동작

int digitalPin = 8; int LED_pulse = 20; int LED_on = 5; int LED_off = LED_pulse - LED_on; LED의 on/off 반복시간 설정 LED가 on되는 시간 설정 LED가 off되는 시간 설정 void setup() { pinMode(digitalPin, OUTPUT); } void loop() { digitalWrite(digitalPin, HIGH); delay(LED_on * 20); digitalWrite(digitalPin, LOW); delay(LED_off * 20); loop문을 보면 LED가 반복적으로 on-off되도록 되어 있지만, LED는 계속 on되어 있는 것처럼 보인다. 그러나 on/off가 반복시간 LED_pulse를 20ms보다 크게 주면 LED가 깜박이게 보이게 된다.

예제 4.10 PWM에 의한 발기 조절 주요개념 : analogWrite( ) 함수 생성되는 펄스의 주기(주파수)는 약 500Hz const int digitalPin=8; int i=0; void setup() { pinMode(digitalPin, OUTPUT); } 디지털입출력 핀 8번을 출력으로 설정 void loop() { loop함수 시작 for (i=0; i<255; i++) { analogWrite(digitalPin, i); delay(10); 디지털입출력 핀 8번으로 analogWrite( )로 0에서 254까지 서서히 켜지는 PWM 신호 출력 for (i=0; i>0; i--) { 255에서 1까지 서서히 줄어드는 PWM 신호 출력 loop함수 끝

4.5 함수만들기 반복적으로 사용되는 부분을 함수로 만들어 사용

예제 4.11 LED ON/OFF함수 만들기 함수부분 함수호출 int led = 12; 정수형 변수 led로 핀 12번 지정 void setup() { pinMode(led, OUTPUT); } 디지털입출력 핀 12번을 출력으로 설정 void blink_ft(int pin) { pin이라는 변수를 갖는 blink_ft( )함수 선언 digitalWrite(pin, HIGH); delay(1000); digitalWrite(pin, LOW); blink_ft( )함수의 내용 void loop() { blink_ft(led); 함수 blink_ft( )에 변수 led를 지정하여 호출 함수부분 함수호출

예제 4.12 LED 좌우이동 ON/OFF함수 만들기 int pinLED[ ]= {6, 9, 11, 12}; int i; 배열 pinLED[] 정수형으로 선언하고 값 지정 pinLED[0]~pinLED[3] 각각 6,9,11,12번 지정 void setup() { for(i=0; i<4; i++) { pinMode(pinLED[i], OUTPUT); } pinLED[0]이 지시하는 6번을 출력모드로 선언 pinLED[1]이 지시하는 9번을 출력모드로 선언 pinLED[2]이 지시하는 11번을 출력모드로 선언 pinLED[3]이 지시하는 12번을 출력모드로 선언 void blink_ft2(int pin, boolean val){ pin과 val 변수를 갖는 blink_ft( )함수를 선언 digitalWrite(pin, val); delay(1000); blink_ft2( )함수의 내용 void loop() { loop함수 시작 for(i=0; i<4; i++) { int pin=pinLED[i]; 출력할 핀 지정 boolean st_H=1; blink_ft2(pin, st_H); LED를 ON으로 출력할 상태 지정 blink_ft2( )함수 호출 boolean st_L=0; blink_ft2(pin, st_L); LED를 OFF로 출력할 상태 지정 loop함수 끝

4.6 HBE-MCU-Multi의 LED 모듈을 이용한 제어 Mega2560과 HBE-MCU-Multi의 LED 모듈로 16개 LED 동시 제어 HBE-MCU-Multi의 LED 모듈 LED LD0~LD15는 음극에 공통으로 연결 LED 점등 방법 : LED0 ~ LED15) +5V를 인가하면, LED 점등

예제 4.13 LED 좌우이동 ON/OFF함수 만들기 아두이노 MEGA 보드 디지털입출력 핀 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52번을 LED 모듈을 사용하여 16개의 LED가 순차적 ON/OFF

예제 4.13의 스케치 int pinLED[16] = {22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52}; int i; void setup() { for(i=0; i<16; i++) { pinMode(pinLED[i], OUTPUT); } void blink_ft2(int pin, boolean val){ digitalWrite(pin, val); delay(1000); void loop() { for(i=0; i<16; i++) { int pin=pinLED[i]; boolean st_H=1; blink_ft2(pin, st_H); boolean st_L=0; blink_ft2(pin, st_L);

연습과제1 4개의 LED가 다음 그림과 같이 2개씩 번갈아 가며 on/off되는 스케치를 작성하여 보자.

연습과제2 4개의 LED가 다음 그림과 같이 오른쪽에서 왼쪽으로 순차적으로 on/off되는 스케치를 작성하여 보자.

연습과제3 8개의 LED가 다음 그림과 같이 왼쪽에서 오른쪽으로 순차적으로 2개씩 on되었다가 다시 왼쪽에서 오른쪽으로 순차적으로 2개씩 off되는 스케치를 작성하여 보자. 8개의 LED가 다음 그림과 같이 왼쪽에서 오른쪽으로 순차적으로 2개씩 시간지연이 점점 빠르게 되며 on되었다가 다시 왼쪽에서 오른쪽으로 순차적으로 2개씩 시간지연이 점점 느리게 되며 off되는 스케치를 작성하여 보자.

연습과제4 8개의 LED가 다음 그림과 같이 왼쪽에서 오른쪽으로 순차적으로 시간지연이 점점 빠르게 되며 더 밝아져서 on되었다가 다시 왼쪽에서 오른쪽으로 순차적으로 시간지연이 점점 느리게 되며 off되고 남아있는 LED는 어두워지는 스케치를 작성하여 보자.

함수정리 아두이노 보도의 디지털입출력 핀에 대하여 입력모드와 출력 모드를 지정하는 명령어 pinMode(pin-munber, state); 아두이노 보도의 디지털입출력 핀에 대하여 입력모드와 출력 모드를 지정하는 명령어 -pin-munber : UNO(0~13), Mega(0~54) -state : 출력은 “OUTPUT”, 입력은 “INPUT"로 설정 (예) pinMode(10, OUTPUT); 핀10을 출력으로 지정 pinMode(10, INPUT); 핀10을 입력으로 지정 digitalWrite(pin-munber, state); 아두이노 보도의 디지털출력으로 선언된 핀에 대하여 HIGH('1')와 LOW('0') 출력하는 명령어 -pin-munber : 디지털출력으로 선언된 핀의 번호 -state : HIGH 또는 '1', LOW 또는 '0' (예) digitalWrite(10, HIGH); 핀10에 ‘1’ 출력 digitalWrite(10, ‘1’); 핀10에 ‘1’ 출력

함수정리 delay(milli-seconds); 시간지연 함수 -milli-seconds : 숫자 값이 밀리초를 의미 (예) digitalWrite(1000); 1000밀리초(1초) digitalWrite(500); 500밀리초(0.5초) int 정수형 변수 선언 (예) int val=10; val를 정수형 변수로 선언하고 값을 10으로 설정 analogWrite(pin-munber, value); 아두이노 보도의 디지털입력으로 선언된 핀을 통하여 HIGH('1')와 LOW('0') 값을 읽는 명령어 -pin-munber : 디지털입력으로 선언된 핀의 번호 -value : 출력범위 0~255 (예) analogWrite(8, 128); 핀8에 최대출력의 50%값을 출력