Microsoft PowerPoint - es-arduino-lecture-03

Similar documents
Example: LED flashlight

슬라이드 1

2009년2학기 임베디드시스템 응용

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

PowerPoint 프레젠테이션

Microsoft Word doc

K&R2 Reference Manual 번역본

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

C프로-3장c03逞풚

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

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

KEY 디바이스 드라이버

ATmega128

lecture4(6.범용IO).hwp

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

API 매뉴얼

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Microsoft PowerPoint - polling.pptx

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - 부호기와 복호기.PPT

Motor

중간고사

6 강남구 청담지구 청담동 46, 삼성동 52 일대 46,592-46,592 7 강남구 대치지구 대치동 922번지 일대 58,440-58,440 8 강남구 개포지구 개포동 157일대 20,070-20,070 9 강남구 개포지구중심 포이동 238 일대 25,070-25,

27집최종10.22

황룡사 복원 기본계획 Ⅵ. 사역 및 주변 정비계획 가. 사역주변 정비구상 문화유적지구 조성 1. 정비방향의 설정 황룡사 복원과 함께 주변 임해전지(안압지) 海殿址(雁鴨池)와 분황사 등의 문화유적과 네트워크로 연계되는 종합적 정비계획안을 수립한다. 주차장과 광장 등 주변

PowerPoint 프레젠테이션

Microsoft PowerPoint - es-arduino-lecture-08

Microsoft PowerPoint - 제5장 인터럽트 (HBE-MCU-Multi AVR).ppt [호환 모드]

歯동작원리.PDF

UART Controller 구현

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

슬라이드 1

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

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

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

PowerPoint 프레젠테이션

Microsoft Word - logic2005.doc

Microsoft PowerPoint - lab14.pptx

PowerPoint Template

[8051] 강의자료.PDF

Microsoft PowerPoint - Java7.pptx

슬라이드 1

PowerPoint 프레젠테이션

슬라이드 1

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

목차 1. 키패드 (KeyPAD) 2. KeyPAD 를이용한비밀번호입력기

슬라이드 1

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

Microsoft PowerPoint - [2009] 02.pptx

아두이노로만드는인형뽑기장치

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

Microsoft PowerPoint - chap01-C언어개요.pptx

Java ...

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

Microsoft PowerPoint - IOControl [호환 모드]

API 매뉴얼

SW

1 SW

DTS-L300-V2 Specification Page 1 of 14 비접촉온도측정 원거리온도측정 High Accuracy Digital Interface : SPI Arduino UNO 예제코드제공 제품설명 DTS-L300-V2는접촉을하지않고원하는물체표면에온도를 50

슬라이드 1

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

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

UI TASK & KEY EVENT

10주차.key

Chapter #01 Subject

Microsoft PowerPoint - chap10-함수의활용.pptx

C 언어 프로그래밊 과제 풀이

슬라이드 1

[ 융합과학 ] 과학고 R&E 결과보고서 뇌파를이용한곤충제어 연구기간 : ~ 연구책임자 : 최홍수 ( 대구경북과학기술원 ) 지도교사 : 박경희 ( 부산일과학고 ) 참여학생 : 김남호 ( 부산일과학고 ) 안진웅 ( 부산일과학고 )


OCW_C언어 기초

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

ez-shv manual

Microsoft PowerPoint - T1 ERS (Elevator Reservation System)SASD2.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - 제3장 GPIO 입출력 제어 (HBE-MCU-Multi AVR)

디지털공학 5판 7-8장

PowerPoint Presentation

chap x: G입력

OCW_C언어 기초

歯9장.PDF

03장.스택.key

SRC PLUS 제어기 MANUAL

ºÎ·ÏB

RaspberryPi 시리얼통신 1 제 08 강 시리얼통신제어 시리얼통신시리얼모니터링루프백시리얼통신 Win. PC와의시리얼통신가상머신과의시리얼통신아두이노보드와의시리얼통신 KUT51보드와의시리얼통신

Formatvorlage für Arbeitsanweisungen

BMP 파일 처리

비긴쿡-자바 00앞부속

인터럽트 * 인터럽트처리메커니즘 ATmega128 인터럽트 2

UI TASK & KEY EVENT

untitled

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

untitled

2017 년 6 월한국소프트웨어감정평가학회논문지제 13 권제 1 호 Abstract

6주차.key

Transcription:

임베디드시스템개론 : Arduino 활용 Lecture #3: Button Input & FND Control 2012. 3. 25 by 김영주

강의목차 디지털입력 Button switch 입력 Button Debounce 7-Segment FND : 직접제어 7-Segment FND : IC 제어 2

디지털입력 : Switch 입력 (1) 실습목표 아두이노디지털입력처리실습 digitalread() 스위치입력처리이해 3

디지털입력 : Switch 입력 (2) 사전지식 디지털입력 (Digital Input) 아두이노는디지털입출력핀을 입력모드 로설정할경우 HIGH (5V) 또는 LOW (0 V) 의전기신호가입력가능 HIGH LOW digitalread() 함수 특정입력핀의현재입력신호값을읽어옴 (HIGH/LOW) 스위치 (Switch) 연결을만들거나끊는데사용하는전자부품다양한형태의스위치를사용가능간이형태의스위치를만들어사용가능 4

디지털입력 : Switch 입력 (3) 사전지식 : 스위치종류 Knife Switch Toggle Switch Magnetic Hexadecimal Tilt Lever Penny Switch Button Switch 5

디지털입력 : Switch 입력 (4) 사전지식 스위치연결 디지털입력핀은아무런회로연결을갖지않는경우 디지털입력은 0V와 5V 사이를움직이며 (floating) 일정한값을갖지못함 Pull-up Register / Pull-down Register 입력핀을 5V 또는 0V 연결할때적용 Pull input up to 5V Pull input down to ground(0v) 스위치연결방식 스위치동작 Press HIGH Not Press LOW 6

[ 참고 ] 저항컬러코드식별법 (1) 7

[ 참고 ] 저항컬러코드식별법 (2) 8

디지털입력 : Switch 입력 (5) 회로도및회로구성 회로도 회로연결 9

디지털입력 : Switch 입력 (6) 아누이노프로그램 : Button Input int btnpin = 22; Int ledpin = 9; int btnstate; void setup() { pinmode(ledpin, OUTPUT); pinmode(btnpin, INPUT); void loop() { btnstate = digitalread(btnpin); if (btnstate == HIGH) { digitalwrite(ledpin, HIGH); else { digitalwrite(ledpin, HIGH); 10

디지털입력 : Switch 입력 (7) Button Bounce 현상 버튼을누르거나땔때에일시적으로전압이불안해지는현상 Button Debounce Button bounce를제거하는동작 H/W 해결책 capacity 활용 S/W 해결책 버튼입력상태가바뀔때에약간의지연을허용 11

디지털입력 : Switch 입력 (8) 아누이노프로그램 : Button Debounce int btnpin = 22; Int ledpin = 9; int btnstate; Int lastbtnstate = LOW; if (millis()-lastdebouncetime > debouncedelay) { btnstate = reading; long lastdebouncetime = 0; long debouncedelay = 50; void setup() { pinmode(ledpin, OUTPUT); pinmode(btnpin, INPUT); void loop() { int reading = digitalread(btnpin); 12 if (reading == lastbtnstate) { lastdebouncetime = millis(); digitalwrite(ledpin, btnstate); lastbtnstate = reading;

디지털입력 : Switch 입력 (9) Debounce 라이브러리 Arduino 플랫폼에서는 button debounce 라이브러리를제공 #include <Debounce.h> int btnpin = 22; Int ledpin = 9; Debounce debouncer = new Debounce(50, btnpin); void setup() { pinmode(ledpin, OUTPUT); pinmode(btnpin, INPUT); void loop() { debouncer.update(); digitalwrite(ledpin, debouncer.read()); 13

7-Segment FND 출력 (1) 실습목표 FND 장치를이용하여 16진수 (10진수) 출력 MCU를이용하여 FND 장치제어방법학습 14

7-Segment FND 출력 (2) 사전지식 7-Segment FND 8개의 LED로 1자리숫자를출력종류 Common-Anode FND Common-Cathode FND 10 진수출력 15

7-Segment FND 출력 (3) 사전지식 7-Segment FND 16진수출력 16

7-Segment FND 출력 (4) 회로도 7 6 4 2 1 9 10 5 17

7-Segment FND 출력 (5) 회로연결 18

7-Segment FND 출력 (6) 아두이노프로그램 : FND 출력 int fndstartpin = 24; int fndendpin = 31; void fndwrite(int num) { static unsigned char fnd_segcode[] = { 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71 ; unsigned char outcode; int value; if (num < 0) num = 0; else if (num >= 16) num = 15; outcode = fnd_segcode[num]; 19 for (int i=fndstartpin; i<=fndendpin; i++) { value = (outcode & 0x01)? HIGH : LOW; digitalwrite(i, value); outcode >>= 1;

7-Segment FND 출력 (7) 아두이노프로그램 : FND 출력 void setup() { for (int i=fndstartpin; i<=fndendpin; i++) pinmode(i, OUTPUT); void loop() { for (int num=0; num<16; num++) { fndwrite(num); delay(1000); 20

7-Segment FND 출력 (8) 아두이노프로그램 : Button 입력 & FND 출력 #include <Debounce.h> int fndstartpin = 24; int fndendpin = 31; int btnpin = 2; int lastbtnstate = LOW; Int btninputcnt = 0; Debounce debouncer = new Debounce(20, btnpin); boolean checkrisingedge() { boolean edge; int state; debouncer.update(); state = debouncer.read(); edge = (state && (state!= lastbtnstate))? true : false; lastbtnstate = state; 21 return edge;

7-Segment FND 출력 (9) 아두이노프로그램 : Button 입력 & FND 출력 void fndwrite(int num) { static unsigned char fnd_segcode[] = { 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71 ; unsigned char outcode; int value; if (num < 0) num = 0; else if (num >= 16) num = 15; outcode = fnd_segcode[num]; for (int i=fndstartpin; i<=fndendpin; i++) { value = (outcode & 0x01)? HIGH : LOW; digitalwrite(i, value); outcode >>= 1; 22

7-Segment FND 출력 (10) 아두이노프로그램 : Button 입력 & FND 출력 void setup() { for (int i=fndstartpin; i<=fndendpin; i++) pinmode(i, OUTPUT); fndwrite(btninputcnt); void loop() { if (checkrisingedge()) { if (++btninputcnt > 15) btninputcnt = 0; fndwrite(btninputcnt); 버튼입력신호의 rising edge 에동기화하여카운터값을증가시킴 23

전용 IC 를이용한 FND 출력 (1) 실습목표 전용제어 IC 를이용하여 FND 장치제어방법학습 I/O 전용 IC 를사용함으로써 MCU 의제어동작과관련하여입출력핀및제어프로그램을줄일수있음 MCU BCD code Blackbox Control signal 24

전용 IC 를이용한 FND 출력 (2) 사전지식 FND I/O IC : HEF4511BP IC 데이터쉬트참조 BCD to 7-segment latch/decoder/driver 25

전용 IC 를이용한 FND 출력 (3) 사전지식 HEF4511BP 26

전용 IC 를이용한 FND 출력 (4) 사전지식 HEF4511BP 제어신호타이밍 : 27

전용 IC 를이용한 FND 출력 (5) 회로도 28

전용 IC 를이용한 FND 출력 (6) 회로연결 29

전용 IC 를이용한 FND 출력 (7) 아두이노프로그램 : HEF4511BP 제어 #include <Debounce.h> int fndnelpin = 22; int fndbcdstartpin = 23; int fndbcdendpin = 26; int btnpin = 2; int lastbtnstate = LOW; Int btninputcnt = 0; Debounce debouncer = new Debounce(20, btnpin); boolean checkrisingedge() { boolean edge; int state; debouncer.update(); state = debouncer.read(); edge = (state && (state!= lastbtnstate))? true : false; lastbtnstate = state; 30 return edge;

전용 IC 를이용한 FND 출력 (8) 아두이노프로그램 : HEF4511BP 제어 void fndwrite(int bcd) { if (bcd < 0) bcd = 0; else if (bcd >= 10) bcd = 9; bcd &= 0x0f; digitalwrite(fndnelpin, LOW); for (int i=fndbcdstartpin; i<=fndbcdendpin; i++) { digitalwrite(i, (bcd & 0x08)? HIGH : LOW); bcd <<= 1; digitalwrite(fndnelpin, LOW); asm( nop ); asm( nop ); asm( nop ); digitalwrite(fndnelpin, HIGH); 31

전용 IC 를이용한 FND 출력 (9) 아두이노프로그램 : HEF4511BP 제어 void setup() { pinmode(fndnelpin, OUTPUT); for (int i=fndbcdstartpin; i<=fndbcdendpin; i++) pinmode(i, OUTPUT); fndwrite(btninputcnt); void loop() { if (checkrisingedge()) { if (++btninputcnt > 15) btninputcnt = 0; fndwrite(btninputcnt); 32

과제물 과제내용 HEF4511BP IC 를이용한 FND 프로그램에서 2 자리십진수를출력할수있도록회로를설계하고프로그램을작성하여라. 되도록제어신호수를줄일수있도록설계를제안하여라. 제출물 회로도 프로그램소스 실행예 ( 사진 ) 제출일 차주수업시간 33