9. 아두이노를 이용한 FND 제어 - 스마트 폰으로 제어하는 아두이노 -.

Slides:



Advertisements
Similar presentations
Hankuk University of Foreign Studies Design and Verification Using FPGA Board Part I.
Advertisements

1 2011` ( 금 ) 신성장동력 인력양성 정책방향. ◎ 3 대 분야 17 개 신성장동력 인력 중점 양성 -> 『신성장동력 인력양성 추진계획』 수립 (‘09.5 월 ) 3 대 분야 17 개 신성장동력 녹색기술 ①신재생에너지 ②탄소저감에너지 ③고도 물처리 ④.
마이크로 시스템 1 선 덕 한선 덕 한 lecture7. LCD 구동. 마이크로 시스템 2 강의 목표 현재 디스플레이 장치로써 가장 널리 사용되어지는 LCD 을 프로세서 에서 어떻게 제어 하는지 알아본다.
1 모터 (Motors) 김원웅. 2 모터 (Motor) □ 모터 응용분야 □ Desktop PC 의 DVD ROM, HDD □ 러닝머신, 전동드릴, 선풍기 등 전력에 의해서 뭔가가 움직이 는 분야에는 거의 모두 모터가 사용 □ 우리가 배울 모터의.
(4) 우리 나라의 이상과 목표 2. 국가의 중요성과 국가 발전 중학교 2학년 도덕
LAB 2..
SOC 연구실 최지호 원천관 339-2호 ABEL 프로젝트 SOC 연구실 최지호 원천관 339-2호
컴퓨터정보공학과 권춘우 최신인터넷기술 - Buzzer, Serial 통신, 7 Segment LED - Analog 입력/출력 > LED 밝기 조절, 저항/전압 읽기.
ARDUINO (센서활용프로그래밍/ICT융합실무) - 아두이노 활용 > 전자 주사위 제작
아두이노 활용 SW코딩 시작하기 아두이노 소개 개발툴 다운로드 USB 드라이버 설치하기 개발툴 실행하기
PIC는 우리의 친구 한국정보통신대학교 디지털미디어연구소.
2015년 2학기 PULSE 4 전자물리실험 11주차 – 초음파 거리 측정 실험 - DSU 메카트로닉스 융합공학부 -
1. 근접경호의 개념 경호대상의 신변을 보호하기 위하여 지근거리에서 실시하는 호위활동을 말하며 경호행위의 마지막 보루이다.
13. 인터럽트 제어 - 스마트 폰으로 제어하는 아두이노 -.
아두이노 프로그래밍 1일차 – Part2 아두이노 사양 강사: 김영준 목원대학교 겸임교수.
FND 디바이스 드라이버 Lecture #11.
컬러 LED바 이해하기 목차 재료준비 및 브레드 보드 배선 구성하기 컬러 LED바 이해 및 프로그램 실습 응용 작품 만들기.
10장 주변장치 (PIO) Slide 1 (of 28).
RnA DISPLAY 구동 Clcd 구동 Made by Bonobonobono.
Arduino와 Led를 이용하여 Wearable Display 만들기
논리의 표현 진법과 숫자 표현 2진수와 10진수 문자의 표현
7-Segment FND Controller 구현
2015년 2학기 PULSE 4 전자물리실험 13 - 카운터, 디코더, FND 회로 - DSU 메카트로닉스 융합공학부 -
아두이노 프로그래밍 5일차 – Part2 지그비 통신 강사: 김영준 목원대학교 겸임교수
1. 아두이노란 무엇인가? - 스마트 폰으로 제어하는 아두이노 -.
12. 아두이노와 센서를 이용한 제어 - 스마트 폰으로 제어하는 아두이노 -.
FND (Flexible Numeric Display)
고등용 LED를 이용한 재미있는 표현.
제 3 장 아두이노 무조건 따라하기 - 스마트 폰으로 제어하는 아두이노 -.
11. 아두이노를 이용한 Text LCD 제어 - 스마트 폰으로 제어하는 아두이노 -.
아두이노 프로그래밍 2일차 – Part4 아날로그 키패드 활용하기 강사: 김영준 목원대학교 겸임교수.
캡스톤 물리 음성 인식을 통한 무드 등 지금은 6시 55분 조.
아두이노 프로그래밍 2일차 – Part2 PSD 거리센서 강사: 김영준 목원대학교 겸임교수.
아두이노 프로그래밍 2일차 – Part2 PSD 거리센서 강사: 김영준 목원대학교 겸임교수
아두이노 프로그래밍 3일차 – Part1 컬러 LED바 활용하기 강사: 김영준 목원대학교 겸임교수
교육과정과 주요업무.
2015년 2학기 PULSE 4 전자물리실험 10 – 조도 센서와 소리 발생 - DSU 메카트로닉스 융합공학부 -
5. 아두이노로 LED와 스위치 제어하기 - 스마트 폰으로 제어하는 아두이노 -.
아두이노 프로그래밍 1일차 – Part4 값출력 및 디지털 읽기 강사: 김영준 목원대학교 겸임교수
2015년 2학기 PULSE 4 전자물리실험 09-Servo Motor 제어 - DSU 메카트로닉스 융합공학부 -
WinCE Device Driver 실습 #2
02강 아두이노 LED 기본 개념 LED Example1 LED Example2 LED Example3
클라우드 서버로 사용자 데이터 전송하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
클라우드 서버로 부터 값 읽어오기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
디지털공학 및 실험 디지털 공학: 부울대수를 기반으로 하는 논리적인 회로의 입출력에 대하여 공부하고 이를 응용한 기능을 설계하는 과목. 부울대수: 참, 거짓 두 종류의 입력(출력)데이터와 AND, OR, NOT 등의 연산자사이의 관계를 정의해 놓은 학문분야. 값의 명칭:
8. 아두이노를 이용한 아날로그 제어 - 스마트 폰으로 제어하는 아두이노 -.
4. 아두이노로 LED 제어하기 - 스마트 폰으로 제어하는 아두이노 -.
15. STEP 모터 제어 - 스마트 폰으로 제어하는 아두이노 -.
센서값 전송하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
ST모드에서 데이터 읽기 및 제어하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
클라우드 서버로 데이터 전송하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
함수를 이용한 키패드 센서 제어하기 재료준비 및 브레드 보드 배선 구성하기 키패드 센서를 통한 함수 이해하기 및 활용 실습
LCD.
생체계측 강의록 Medical instrucmentation#8
코딩체험교실 아두이노 로봇 코딩 4차산업기술 체험 (SW코딩/자율주행기술).
인코딩.
아두이노 프로그래밍 4일차 – Part1 모바일 로봇 강사: 김영준 목원대학교 겸임교수
성공적인 입사지원서 작성법 제이비커리어 교육수석 소 은 선.
1학년 신입생 학부모교실 안내사항 2019년 3월 6일 1학년부장 김희선.
아두이노 프로그래밍 Lecture #
Tone 명령어 이해하기 목차 재료준비 및 브레드 보드 배선 구성하기 Tone 명령어 기본 및 프로그램 이해 응용 작품 만들기.
아날로그일까? 디지털일까? -사용자 경험 기반 디지털 기술을 활용한 반응하는 액자 만들기-
아두이노 서보로봇 제어 (블루투스 스마트폰 조종) -03차시-
WinCE Device Driver 실습 #2
4 LED 출력 LED 점멸 LED 밝기 조절 RGB LED로 색상 표현하기 FND 제어 4-digit FND 제어 Dot matrix 제어 Dot matrix를 이용한 애니메이션.
꿈꾸는 코딩 노트북 필수 지참 (중요!!) 모집 대상 : 초등 4~6학년 10명
Lecture 7 7-Segment LED controller using u-controller
연구장비 공동활용 지원사업 신청서작성 매뉴얼(참여기업)
3. Arduino 실습 – 아날로그 입력(1) 아날로그 입력 – 먼지 센서 먼지 센서 개요 먼지 센서 특징 먼지 검출 센서
Presentation transcript:

9. 아두이노를 이용한 FND 제어 - 스마트 폰으로 제어하는 아두이노 -

강의 개요 FND(flexible numeric display) FND 제어 숫자 표시기란 뜻으로 여러 개의 세그먼트 LED들이 모여 숫자를 표시할 수 있도록 만들어짐 비교적 가격이 저렴하고 어두운 장소에서도 정보 표현이 잘되어 많이 사용 FND 제어 표현할 정보를 배열 등에 저장하여 이용

9.1 FND 세그먼트 FND 세그먼트 표시기 7개의 세그먼트에 1개의 점(dot)까지 하여 8개의 LED로 구성 정보를 표현하기 위하여 1byte 단위로 조합된 데이터 활용 8개의 LED가 8자의 숫자 모양으로 배치 a, b, c, d, e, f, g, dot 8개의 LED의 한쪽 부분은 공통으로 접속 Common-Cathode형 : Cathode(-) 공통으로 접속되는 경우 Common-Anode형 : Anode(+)가 공통으로 접속되는 경우는

9.2 FND 제어

예제 9.1 아두이노에서 FND 제어 Common-Anode형 세그먼트의 a, b, c, d, e, f, g, dot에 아두이노 보드의 디지털입출력 핀 2~9번을 순서대로 연결하여 숫자 "0"을 표현

예제 9.1의 주요개념 FND 세그먼트의 LED는 모양은 다르지만 실제 구동 방법은 LED와 유사 표시하고자 하는 글자에 맞게 해당 비트 LED를 ON 숫자 "0"을 표현할 수 있는 FND 세그먼트의 a, b, c, d, e, f, g, dot에 대응하는 데이터를 아두이노 보드의 디지털입출력 핀 2~9번으로 출력

예제 9.1의 스케치 void setup(){ for (int i=2; i<=9; i++){ pinMode(i, OUTPUT); } 세그먼트의 a, b, c, d, e, f, g, dot에 디지털입출력 핀 2~9번을 연결하고, 출력모드 설정 void loop() { digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); digitalWrite(8, HIGH); digitalWrite(9, HIGH); a = 0 b = 0 c = 0 d = 0 e = 0 f = 0 g = 1 dot = 1

예제 9.1의 스케치(배열 활용) int segPins[8]={2,3,4,5,6,7,8,9}; int degData0[8]={0,0,0,0,0,0,1,1}; FND 세그먼트에 사용할 입출력 핀 저장 "0"을 표시하기 위한 데이터 void setup() { for(int i=0; i<8; i++) { pinMode(segPins[i], OUTPUT); } void loop() { for(int i=0; i<8; i++) { digitalWrite(segPins[i], degData0[i]); 배열 segPins[i]에서 FND의 a~f, dot에 연결된 핀을 순서대로 호출 degData0[i])의 각 핀에 대응하는 bit 데이터를 출력

예제 9.2 2차원 배열을 사용한 아두이노에서 FND 제어 주요개념 CA형 세그먼트에 숫자 0, 1, 2, 3, 4를 표시하려면, 각 표현 숫자를 나타내기 위하여 데이터 배열을 만들어 사용

데이터 배열 사용 1차원 배열 구성 2차원 배열 구성 int degData0[8]={0, 0, 0, 0, 0, 0, 1, 1}; int degData1[8]={1, 0, 0, 1, 1, 1, 1, 1}; int degData2[8]={0, 0, 1, 0, 0, 1, 0, 1}; int degData3[8]={0, 0, 0, 0, 1, 1, 0, 1}; int degData4[8]={1, 0, 0, 1, 1, 0, 0, 1}; int degData[5][8]={{0, 0, 0, 0, 0, 0, 1, 1}, {1, 0, 0, 1, 1, 1, 1, 1}, {0, 0, 1, 0, 0, 1, 0, 1}, {0, 0, 0, 0, 1, 1, 0, 1}, {1, 0, 0, 1, 1, 0, 0, 1}, {0, 1, 0, 0, 1, 0, 0, 1}}

예제 9.2의 스케치 int segPins[8]={2,3,4,5,6,7,8,9}; int degData[5][8]={{0,0,0,0,0,0,1,1}, {1,0,0,1,1,1,1,1}, {0,0,1,0,0,1,0,1}, {0,0,0,0,1,1,0,1}, {1,0,0,1,1,0,0,1}}; FND 세그먼트에 사용할 입출력 핀 저장 숫자 "0"~"4"을 표시하기 위한 데이터 배열 void setup() { for(int i=0; i<8; i++) { pinMode(segPins[i], OUTPUT); } FND의 a~g와 dot에 연결된 핀을 출력모드로 선언 void disFND(int j){ digitalWrite(segPins[i], degData[j][i]); delay(1000); FND 출력 함수 8개의 디지털입출력 핀에 j번째 숫자 표현을 위한 bit 데이터 출력 1초간 j번째 숫자 표현 유지 void loop() { for(int j=0; j<8; j++) { disFND(j); j번째 숫자 표현을 위한 FND 출력함수 호출

예제 9.2의 스케치(함수구조 적용) int segPins[ ]={2,3,4,5,6,7,8,9}; 세그먼트에 연결할 디지털입출력 핀 지정 int segData[4][8]={{0,0,0,0,0,0,1,1}, {1,0,0,1,1,1,1,1}, {0,0,1,0,0,1,0,1}, {0,0,0,0,1,1,0,1}}; “0”을 나타내기 위한 데이터 “1”을 나타내기 위한 데이터 “2”을 나타내기 위한 데이터 “3”을 나타내기 위한 데이터 void setup() { for(int i=0; i<8; i++) { pinMode(segPins[i], OUTPUT); } 지정된 디지털입출력 핀을 출력모드로 선언 void seg_ft(int segP[ ], int segD[ ]) { int i; for (i=0; i<8; i++) { digitalWrite(segP[i], segD[i]); delay(500); 세그먼트 표시 함수 void loop() { loop의 시작 int segP[8], segD[8]; for (int j=0; j<4; j++) { for (int i=0; i<8; i++) { segP[i]=segPins[i]; segD[i]=segData[j][i]; seg_ft(segP, segD); 세그먼트 함수 호출 loop의 끝

9.3 HBE-MCU-Multi FND 모듈을 이용한 제어 2개의 7-Segment LED로 구성 2개의 FND는 각각 A와 B로 구분

FND 모듈의 회로도 7-Segment LED의 구조 Common Cathode형의 FND 8개의 입력 신호선 : SA_A~SA_H, SB_A~SB_H

7-Segment에서 16진수 표시 16 진수 16진수 표현 7-세그먼트의 비트값 데이터 값 ( HEX ) H G F E D C B A 1 0X3F 0X06 2 0X5B 3 0X4F 4 0X66 5 0X6D 6 0X7D 7 0X27 8 0X7F 9 0X6F 0X77 0X7C 0X39 0X5E 0X79 0X71

예제 9.3 아두이노 Mega 보드와 FND 모듈을 사용한 제어 500ms 마다 FND 에 0~ 9 , A ~ F, '_' , '.' 순차 출력 주요개념 Mega 보드 모듈의 핀 22, 24, 26, 28, 30, 32, 34, 36번을 FND 모듈의 SA_A~SA_H과 연결

예제 9.3의 스케치 byte FND[8] = {22,24,26,28,30,32,34,36}; byte FND_DATA[]={0x3F, 0X06, 0X5B, 0X4F, 0X66, 0X6D, 0X7C, 0X07, 0X7F, 0X67, 0X77, 0X7C, 0X39, 0X5E, 0X79, 0X71, 0X08, 0X80}; byte cnt = 0; 사용할 핀을 배열 FND로 선언 배열 FND_DATA에 0~9, A~F, 밑줄, 점을표현할 18개의 FND 표현 데이터 저장 void setup() { byte z; for(z=0; z<8; z++) pinMode(FND[z], OUTPUT); } void FND_display(byte data) { for(z=0;z<8;z++) digitalWrite(FND[z], bitRead(data,z)); 함수 FND_display(int data) 선언 배열 FND_DATA의 숫자/문자 데이터 순서에 따라 출력 void loop() { FND_display(FND_DATA[cnt]); cnt++; if(cnt>17) cnt=0; delay(1000); 변수 cnt 를 17까지 증가시키면서 그 값에 해당하는 숫자/문자를 함수 FND_display()를 호출하여 출력

예제 9.3의 실행 1초 간격으로 0~9, A~F, -, dot가 순서대로 FND 표현 "byte FND[8] = {22,24,26,28,30,32,34,36};" FND 제어에 사용되는 핀을 배열로 지정, 출력모드로 설정 FND_DATA[ ]는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, F, -, dot를 FND에 표현하기 위하여 표 9.1의 FND 참조하여 작성 FND에 "0"을 표현하고 싶으면, FND_DATA[0] 사용 "9"를 표현하고 싶으면, FND_DATA[9] 사용 void FND_display(byte data) 함수 FND에 표현하려는 데이터를 배열 FND_DATA[]에서 참조하여 FND 모듈에 출력하는 함수 "if(cnt>17) cnt=0;“ FND_ DATA[cnt] 배열의 인덱스 cnt가 배열 인덱스 범위인 0~17을 벗어나지 않도록 하기 위한 명령

연습과제 세그먼트가 1초 간격으로 숫자 '0'부터 '9'까지 순차적으로 표시하며, 각 표시 후 0.5초 마다 세그먼트의 도트(dot)를 깜빡이도록 하시오. 세그먼트를 이용하여 영문으로 Goodbye나 Hello 등을 나타내시오. 다음 도형 8개를 만들고, 8bit 스위치에 의하여 표시되도록 하시오.

연습과제 SW0을 누르면 숫자 0, SW1을 누르면 세그먼트에 숫자 1, SW2를 누르면 숫자 2, SW3을 누르면 숫자 3을 각가 세그먼트에 표시하고, 스위치도 눌리지 않으면 세그먼트가 꺼져 있는 프로그램을 작성하자. 전자 주사위는 세그먼트에 1부터 6까지의 수가 빠르게 보이다가, 스위치를 누르면 정지되어 현재 보이는 숫자로 주사위 게임을 할 수 있는 게임을 만들어 보자. ① SW1을 누르면 세그먼트에 숫자를 1부터 6까지 빠르게 표시 ② SW0을 누르면 세그먼트에 숫자 변화를 멈추고 현재 숫자를 표시 ③ 다시 SW1을 누르면 세그먼트에 숫자를 빠르게 동작 ④ 이 과정(①-③번)을 계속 반복

홀짝 게임과 유사하게 주사위 값 중 2에서 5사이에 하나를 설정하고, 2개의 FND 중 하나는 S0 스위치를 누를 때마다 2에서 5까지 순환해서 증가한다. 즉, 5다음에 다시 2부터 스위치 누를 때마다 1씩 증가되는 주사위게임을 만들어 보자.