cwkwondongyang ac kr IOT 7 Segment LED 3

  • Slides: 48
Download presentation
동양미래대학교 컴퓨터공학부 권춘우(cwkwon@dongyang. ac. kr) 센서활용프로그래밍/IOT소프트웨어개발 - 7 Segment LED - 3 Digit 7

동양미래대학교 컴퓨터공학부 권춘우(cwkwon@dongyang. ac. kr) 센서활용프로그래밍/IOT소프트웨어개발 - 7 Segment LED - 3 Digit 7 Segment LED - RGB LED(3 Color)

목차 LOGO Ø 7 Segment LED § 7 Segment LED(FND) § 7 Sement LED

목차 LOGO Ø 7 Segment LED § 7 Segment LED(FND) § 7 Sement LED 응용 : 전자주사위 제작 Ø 3 Digit 7 Segment LED Ø RGB LED(3 Color) Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 2 prepared by Choon Woo Kwon

LOGO 7 세그먼트(Seven Segment) LED Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 3 prepared by Choon Woo

LOGO 7 세그먼트(Seven Segment) LED Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 3 prepared by Choon Woo Kwon

7 세그먼트(Seven Segment) LED Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 5 LOGO prepared by Choon Woo

7 세그먼트(Seven Segment) LED Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 5 LOGO prepared by Choon Woo Kwon

7 세그먼트(Seven Segment) LED 구동(1) LOGO 7 Segment Common Cathode FND (flexible numeric display)

7 세그먼트(Seven Segment) LED 구동(1) LOGO 7 Segment Common Cathode FND (flexible numeric display) 9 10 7 6 1 2 Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 6 4 5 prepared by Choon Woo Kwon

7 세그먼트(Seven Segment) LED 구동(1) 7 Segment Common Cathode FND Dongyang Mirae University LOGO

7 세그먼트(Seven Segment) LED 구동(1) 7 Segment Common Cathode FND Dongyang Mirae University LOGO (flexible numeric display) 센서활용프로그래밍/IOT소프트웨어개발 7 prepared by Choon Woo Kwon

7 세그먼트(Seven Segment) LED 구동(1) #define SEG_START 11 // 시작 글자 모양 (11번) //

7 세그먼트(Seven Segment) LED 구동(1) #define SEG_START 11 // 시작 글자 모양 (11번) // 7 Segment FND의 각 Segment 지정 : led 불이 켜지는 숫자 지정 #define #define SEG_A SEG_B SEG_C SEG_D SEG_E SEG_F SEG_G SEG_H 7 6 5 2 1 9 10 4 a // Segment a ******* // Segment b f* *b // Segment c * g * // Segment d ******* // Segment e e* *c // Segment f * * // Segment g ******* * h(DP) // Segment h d void fnd(unsigned char n) { //display_number 함수를 지정 : 숫자모양 생성 switch (n) { case 0: // Number 0 digital. Write(SEG_A, HIGH); digital. Write(SEG_B, HIGH); digital. Write(SEG_C, HIGH); digital. Write(SEG_D, HIGH); digital. Write(SEG_E, HIGH); digital. Write(SEG_F, HIGH); digital. Write(SEG_G, LOW); digital. Write(SEG_H, LOW); break; case 1: // Number 1 digital. Write(SEG_A, LOW); digital. Write(SEG_B, HIGH); digital. Write(SEG_C, HIGH); digital. Write(SEG_D, LOW); digital. Write(SEG_E, LOW); digital. Write(SEG_F, LOW); digital. Write(SEG_G, LOW); digital. Write(SEG_H, LOW); break; Dongyang Mirae University case 2: // Number 2 digital. Write(SEG_A, HIGH); digital. Write(SEG_B, HIGH); digital. Write(SEG_C, LOW); digital. Write(SEG_D, HIGH); digital. Write(SEG_E, HIGH); digital. Write(SEG_F, LOW); digital. Write(SEG_G, HIGH); digital. Write(SEG_H, LOW); break; LOGO Why? 왜 LED 숫자가 제대로 표시 안되나? How? 어떻게 해결하 지? case 3: // Number 3 digital. Write(SEG_A, HIGH); digital. Write(SEG_B, HIGH); digital. Write(SEG_C, HIGH); digital. Write(SEG_D, HIGH); digital. Write(SEG_E, LOW); digital. Write(SEG_F, LOW ); digital. Write(SEG_G, HIGH); digital. Write(SEG_H, LOW); break; case 4: // Number 4 digital. Write(SEG_A, LOW); digital. Write(SEG_B, HIGH); digital. Write(SEG_C, HIGH); digital. Write(SEG_D, LOW); digital. Write(SEG_E, LOW); digital. Write(SEG_F, HIGH ); digital. Write(SEG_G, HIGH); digital. Write(SEG_H, LOW); break; 센서활용프로그래밍/IOT소프트웨어개발 8 prepared by Choon Woo Kwon

7 세그먼트(Seven Segment) LED 구동(1) case 5: // Number 5 digital. Write(SEG_A, HIGH); digital.

7 세그먼트(Seven Segment) LED 구동(1) case 5: // Number 5 digital. Write(SEG_A, HIGH); digital. Write(SEG_B, LOW); digital. Write(SEG_C, HIGH); digital. Write(SEG_D, HIGH); digital. Write(SEG_E, LOW); digital. Write(SEG_F, HIGH); digital. Write(SEG_G, HIGH); digital. Write(SEG_H, LOW); break; case 6: // Number 6 digital. Write(SEG_A, LOW); digital. Write(SEG_B, LOW); digital. Write(SEG_C, HIGH); digital. Write(SEG_D, HIGH); digital. Write(SEG_E, HIGH); digital. Write(SEG_F, HIGH); digital. Write(SEG_G, HIGH); digital. Write(SEG_H, LOW); break; case 7: // Number 7 digital. Write(SEG_A, HIGH); digital. Write(SEG_B, HIGH); digital. Write(SEG_C, HIGH); digital. Write(SEG_D, LOW); digital. Write(SEG_E, LOW); digital. Write(SEG_F, LOW); digital. Write(SEG_G, LOW); digital. Write(SEG_H, LOW); break; Dongyang Mirae University LOGO case 8: // Number 8 digital. Write(SEG_A, HIGH); digital. Write(SEG_B, HIGH); digital. Write(SEG_C, HIGH); digital. Write(SEG_D, HIGH); digital. Write(SEG_E, HIGH); digital. Write(SEG_F, HIGH); digital. Write(SEG_G, HIGH); digital. Write(SEG_H, LOW); break; case 9: // Number 9 digital. Write(SEG_A, HIGH); digital. Write(SEG_B, HIGH); digital. Write(SEG_C, HIGH); digital. Write(SEG_D, LOW); digital. Write(SEG_E, LOW); digital. Write(SEG_F, HIGH); digital. Write(SEG_G, HIGH); digital. Write(SEG_H, LOW); break; case 10: // POINT digital. Write(SEG_A, LOW); digital. Write(SEG_B, LOW); digital. Write(SEG_C, LOW); digital. Write(SEG_D, LOW); digital. Write(SEG_E, LOW); digital. Write(SEG_F, LOW); digital. Write(SEG_G, LOW); digital. Write(SEG_H, HIGH); break; 센서활용프로그래밍/IOT소프트웨어개발 9 prepared by Choon Woo Kwon

7 세그먼트(Seven Segment) LED 구동(1) case 11: // MINUS digital. Write(SEG_A, LOW); digital. Write(SEG_B,

7 세그먼트(Seven Segment) LED 구동(1) case 11: // MINUS digital. Write(SEG_A, LOW); digital. Write(SEG_B, LOW); digital. Write(SEG_C, LOW); digital. Write(SEG_D, LOW); digital. Write(SEG_E, LOW); digital. Write(SEG_F, LOW); digital. Write(SEG_G, HIGH); digital. Write(SEG_H, LOW); break; case 12: // BLANK digital. Write(SEG_A, LOW); digital. Write(SEG_B, LOW); digital. Write(SEG_C, LOW); digital. Write(SEG_D, LOW); digital. Write(SEG_E, LOW); digital. Write(SEG_F, LOW); digital. Write(SEG_G, LOW); digital. Write(SEG_H, LOW); break; } } Dongyang Mirae University LOGO void setup() { pin. Mode(SEG_A, OUTPUT); pin. Mode(SEG_B, OUTPUT); pin. Mode(SEG_C, OUTPUT); pin. Mode(SEG_D, OUTPUT); pin. Mode(SEG_E, OUTPUT); pin. Mode(SEG_F, OUTPUT); pin. Mode(SEG_G, OUTPUT); pin. Mode(SEG_H, OUTPUT); } void loop() { int i; fnd(SEG_START ); //처음 시작은 가운데에만 빨간불을 켜 준다(11로 시작) delay(2000); } for(i = 0; i<11; i++) { fnd(i); delay(1000); } 센서활용프로그래밍/IOT소프트웨어개발 10 prepared by Choon Woo Kwon

7 세그먼트(Seven Segment) LED 구동(2) 7 Segment Common Anode FND Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발

7 세그먼트(Seven Segment) LED 구동(2) 7 Segment Common Anode FND Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 11 LOGO (flexible numeric display) prepared by Choon Woo Kwon

7 세그먼트(Seven Segment) LED 구동(2) 7 Segment Common Anode FND Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발

7 세그먼트(Seven Segment) LED 구동(2) 7 Segment Common Anode FND Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 12 LOGO (flexible numeric display) prepared by Choon Woo Kwon

LOGO 7 Segment LED 응용 - 전자 주사위 - Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 14

LOGO 7 Segment LED 응용 - 전자 주사위 - Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 14 prepared by Choon Woo Kwon

※ random number 생성 방법 LOGO // 사용 함수 : millis(), random. Seed(), random()

※ random number 생성 방법 LOGO // 사용 함수 : millis(), random. Seed(), random() #define START_BUTTON 11 void setup() { Serial. begin(9600); pin. Mode(START_BUTTON, INPUT); } void loop() { int i, r; while(1) { while(!digital. Read(START_BUTTON)); random. Seed(millis()%1000); int r = random(100); Serial. println(r, DEC); delay(200); // for (i = 0; i<50; i++) { // fnd(r%6+1); r++; // delay(10+i*i/5); // } } } Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 16 prepared by Choon Woo Kwon

전자 주사위 제작 – 회로도(Schematic) LOGO Common Anode Type 7 Segment LED 기준 Dongyang

전자 주사위 제작 – 회로도(Schematic) LOGO Common Anode Type 7 Segment LED 기준 Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 20 prepared by Choon Woo Kwon

전자 주사위 제작 – 스케치(1/7) LOGO (실습 내용) 전자 주사위 예제 (1) Common Anode

전자 주사위 제작 – 스케치(1/7) LOGO (실습 내용) 전자 주사위 예제 (1) Common Anode 7 Segment LED를 구성한 다음 Display를 확인한다. (2) 버튼 스위치를 누르면 1, 2, 3, 4, 5, 6 중의 랜덤(random) 한 숫자를 Segment FND에 표시 (3) 전자주사위의 동작 프로그램을 분석한다. (4) 전자주사위의 동작을 동영상으로 제출한다. ※ (참조 자료 출처) www. Arduino. PLUS. cc #define START_BUTTON 11 // 7 Segment a #define SEG_A 2 // Segment a ******* #define SEG_B 3 // Segment b f * * b #define SEG_C 4 // Segment c * g * #define SEG_D 5 // Segment d ******* #define SEG_E 6 // Segment e e * * c #define SEG_F 7 // Segment f * * #define SEG_G 8 // Segment g ******* * h #define SEG_H 9 // Segment h d Dongyang Mirae University <스케치 소스> Common Anode Type 7 Segment LED 기준 센서활용프로그래밍/IOT소프트웨어개발 21 prepared by Choon Woo Kwon

전자 주사위 제작 – 스케치(2/7) LOGO void fnd(unsigned char n) { switch (n) {

전자 주사위 제작 – 스케치(2/7) LOGO void fnd(unsigned char n) { switch (n) { case 0: // Number 0 digital. Write(SEG_A, LOW); digital. Write(SEG_B, LOW); digital. Write(SEG_C, LOW); digital. Write(SEG_D, LOW); digital. Write(SEG_E, LOW); digital. Write(SEG_F, LOW); digital. Write(SEG_G, HIGH); digital. Write(SEG_H, HIGH); break; case 1: // Number 1 digital. Write(SEG_A, HIGH); digital. Write(SEG_B, LOW); digital. Write(SEG_C, LOW); digital. Write(SEG_D, HIGH); digital. Write(SEG_E, HIGH); digital. Write(SEG_F, HIGH); digital. Write(SEG_G, HIGH); digital. Write(SEG_H, HIGH); break; case 2: // Number 2 digital. Write(SEG_A, LOW); digital. Write(SEG_B, LOW); digital. Write(SEG_C, HIGH); digital. Write(SEG_D, LOW); digital. Write(SEG_E, LOW); digital. Write(SEG_F, HIGH); digital. Write(SEG_G, LOW); digital. Write(SEG_H, HIGH); break; Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 22 prepared by Choon Woo Kwon

전자 주사위 제작 – 스케치(3/7) LOGO case 3: // Number 3 digital. Write(SEG_A, LOW);

전자 주사위 제작 – 스케치(3/7) LOGO case 3: // Number 3 digital. Write(SEG_A, LOW); digital. Write(SEG_B, LOW); digital. Write(SEG_C, LOW); digital. Write(SEG_D, LOW); digital. Write(SEG_E, HIGH); digital. Write(SEG_F, HIGH ); digital. Write(SEG_G, LOW); digital. Write(SEG_H, HIGH); break; case 4: // Number 4 digital. Write(SEG_A, HIGH); digital. Write(SEG_B, LOW); digital. Write(SEG_C, LOW); digital. Write(SEG_D, HIGH); digital. Write(SEG_E, HIGH); digital. Write(SEG_F, LOW ); digital. Write(SEG_G, LOW); digital. Write(SEG_H, HIGH); break; case 5: // Number 5 digital. Write(SEG_A, LOW); digital. Write(SEG_B, HIGH); digital. Write(SEG_C, LOW); digital. Write(SEG_D, LOW); digital. Write(SEG_E, HIGH); digital. Write(SEG_F, LOW); digital. Write(SEG_G, LOW); digital. Write(SEG_H, HIGH); break; Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 23 prepared by Choon Woo Kwon

전자 주사위 제작 – 스케치(4/7) LOGO case 6: // Number 6 digital. Write(SEG_A, HIGH);

전자 주사위 제작 – 스케치(4/7) LOGO case 6: // Number 6 digital. Write(SEG_A, HIGH); digital. Write(SEG_B, HIGH); digital. Write(SEG_C, LOW); digital. Write(SEG_D, LOW); digital. Write(SEG_E, LOW); digital. Write(SEG_F, LOW); digital. Write(SEG_G, LOW); digital. Write(SEG_H, HIGH); break; case 7: // Number 7 digital. Write(SEG_A, LOW); digital. Write(SEG_B, LOW); digital. Write(SEG_C, LOW); digital. Write(SEG_D, HIGH); digital. Write(SEG_E, HIGH); digital. Write(SEG_F, HIGH); digital. Write(SEG_G, HIGH); digital. Write(SEG_H, HIGH); break; case 8: // Number 8 digital. Write(SEG_A, LOW); digital. Write(SEG_B, LOW); digital. Write(SEG_C, LOW); digital. Write(SEG_D, LOW); digital. Write(SEG_E, LOW); digital. Write(SEG_F, LOW); digital. Write(SEG_G, LOW); digital. Write(SEG_H, HIGH); break; Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 24 prepared by Choon Woo Kwon

전자 주사위 제작 – 스케치(5/7) LOGO case 9: // Number 9 digital. Write(SEG_A, LOW);

전자 주사위 제작 – 스케치(5/7) LOGO case 9: // Number 9 digital. Write(SEG_A, LOW); digital. Write(SEG_B, LOW); digital. Write(SEG_C, LOW); digital. Write(SEG_D, HIGH); digital. Write(SEG_E, HIGH); digital. Write(SEG_F, LOW); digital. Write(SEG_G, LOW); digital. Write(SEG_H, HIGH); break; case 10: // POINT digital. Write(SEG_A, HIGH); digital. Write(SEG_B, HIGH); digital. Write(SEG_C, HIGH); digital. Write(SEG_D, HIGH); digital. Write(SEG_E, HIGH); digital. Write(SEG_F, HIGH); digital. Write(SEG_G, HIGH); digital. Write(SEG_H, LOW); break; case 11: // MINUS digital. Write(SEG_A, HIGH); digital. Write(SEG_B, HIGH); digital. Write(SEG_C, HIGH); digital. Write(SEG_D, HIGH); digital. Write(SEG_E, HIGH); digital. Write(SEG_F, HIGH); digital. Write(SEG_G, LOW); digital. Write(SEG_H, HIGH); break; Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 25 prepared by Choon Woo Kwon

전자 주사위 제작 – 스케치(6/7) LOGO case 12: // BLANK digital. Write(SEG_A, HIGH); digital.

전자 주사위 제작 – 스케치(6/7) LOGO case 12: // BLANK digital. Write(SEG_A, HIGH); digital. Write(SEG_B, HIGH); digital. Write(SEG_C, HIGH); digital. Write(SEG_D, HIGH); digital. Write(SEG_E, HIGH); digital. Write(SEG_F, HIGH); digital. Write(SEG_G, HIGH); digital. Write(SEG_H, HIGH); break; } } void setup() { pin. Mode(SEG_A, OUTPUT); pin. Mode(SEG_B, OUTPUT); pin. Mode(SEG_C, OUTPUT); pin. Mode(SEG_D, OUTPUT); pin. Mode(SEG_E, OUTPUT); pin. Mode(SEG_F, OUTPUT); pin. Mode(SEG_G, OUTPUT); pin. Mode(SEG_H, OUTPUT); } Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 26 prepared by Choon Woo Kwon

전자 주사위 제작 – 스케치(7/7) LOGO void loop() { int i, r; fnd(11); while(1)

전자 주사위 제작 – 스케치(7/7) LOGO void loop() { int i, r; fnd(11); while(1) { while(!digital. Read(START_BUTTON)) ; random. Seed(millis()%1000); int r = random(100); for (i = 0; i<50; i++) { fnd(r%6+1); r++; delay(10+i*i/5); } } } Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 27 prepared by Choon Woo Kwon

LOGO 3 Digit 7 Segment LED Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 28 prepared by Choon

LOGO 3 Digit 7 Segment LED Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 28 prepared by Choon Woo Kwon

3 Digit 7 Segment LED - Data Sheet Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 LOGO prepared

3 Digit 7 Segment LED - Data Sheet Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 LOGO prepared by Choon Woo Kwon

3 Digit 7 Segment LED – 핀 번호 & 세그먼트 LOGO 3 Digit 7

3 Digit 7 Segment LED – 핀 번호 & 세그먼트 LOGO 3 Digit 7 Segment LED 핀 번호 Dongyang Mirae University 12 11 10 9 8 7 1 2 3 4 5 6 NC (연결 없음) 센서활용프로그래밍/IOT소프트웨어개발 prepared by Choon Woo Kwon

3 Digit 7 Segment LED - 배선도 Auduino 출력 핀 번호 LOGO 3 Digit

3 Digit 7 Segment LED - 배선도 Auduino 출력 핀 번호 LOGO 3 Digit 7 Segment LED 핀 번호 13 12 11 9 10 7 8 5 6 3 4 12 11 10 9 8 7 1 2 3 4 5 6 NC (연결 없음) 3 Digit 7 Segment LED 핀 번호 LED #8 LED #12 [Connection] LED #9 LED #3 LED #5 LED #10 LED #1 LED #2 LED #4 LED #7 LED #11 3 Digit 7 Segment LED 핀 번호 Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 3 DIGIT LED 세그 먼트 아두 이노 1 e 9 2 d 8 3 DP 12 4 c 7 5 g 11 6 NC NC 7 b 6 8 Dig-3 4 9 Dig-2 3 10 f 10 11 a 5 12 Dig-1 13 prepared by Choon Woo Kwon

3 Digit 7 Segment LED - 회로도 LOGO 3 Digit 7 Segment LED 부품

3 Digit 7 Segment LED - 회로도 LOGO 3 Digit 7 Segment LED 부품 내부 Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 prepared by Choon Woo Kwon

(실습-1) 3 Digit 7 Segment LED // 1 digit에 0~9까지 출력하기 int digits[10][7]= {

(실습-1) 3 Digit 7 Segment LED // 1 digit에 0~9까지 출력하기 int digits[10][7]= { //a. b. c. d. e. f. g {0, 0, 0, 1}, //0 {1, 0, 0, 1, 1}, //1 {0, 0, 1, 0}, //2 {0, 0, 1, 1, 0}, //3 {1, 0, 0, 1, 1, 0, 0}, //4 {0, 1, 0, 0}, //5 {0, 1, 0, 0, 0}, //6 {0, 0, 0, 1, 1}, //7 {0, 0, 0, 0}, //8 {0, 0, 0, 1, 1, 0, 0}//9 }; Dongyang Mirae University LOGO void setup() { for(int i=3; i<=13; i++) { pin. Mode(i, OUTPUT); } digital. Write(13, HIGH); //digit-1 digital. Write(3, LOW); //digit-2 digital. Write(4, LOW); //digit-3 digital. Write(12, 0); //DP pin high 대신 low 면 도트가 켜진다 } int num=0; void loop() { for(int j=0; j<10; j++) // 세그먼트 숫자표현 { for(int i=5; i<12; i++) { //핀번호 digital. Write(i, digits[j][i-5]); // 시작위치 [0][0]으로 맞춘다 } delay(1000); } } 센서활용프로그래밍/IOT소프트웨어개발 prepared by Choon Woo Kwon

(실습-2) 시리얼 모니터 이용 숫자 표시(한자리) int digits[10][7]= { //a. b. c. d. e.

(실습-2) 시리얼 모니터 이용 숫자 표시(한자리) int digits[10][7]= { //a. b. c. d. e. f. g {0, 0, 0, 1}, {1, 0, 0, 1, 1}, {0, 0, 1, 0}, {0, 0, 1, 1, 0}, {1, 0, 0, 1, 1, 0, 0}, {0, 1, 0, 0, 0}, {0, 0, 0, 1, 1}, {0, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 0} }; LOGO void setup() { for(int i=3; i<=13; i++) { pin. Mode(i, OUTPUT); } //0 //1 //2 //3 //4 //5 //6 //7 //8 digital. Write(13, HIGH); //digit-1 digital. Write(3, LOW); //digit-2 digital. Write(4, LOW); //digit-3 digital. Write(12, HIGH); //DP pin high 대신 low 면 도트가 켜진다 //9 Serial. begin(9600); } int num=1; void loop() { int count=0; if(Serial. available()) { num=Serial. parse. Int(); } for(int i=5; i<12; i++) { digital. Write(i, digits[num][i-5]); } } Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 prepared by Choon Woo Kwon

(실습-3) 시리얼 모니터 이용 숫자 표시(두자리) int num=00; //초기숫자 int num 1=0; int num

(실습-3) 시리얼 모니터 이용 숫자 표시(두자리) int num=00; //초기숫자 int num 1=0; int num 2=0; void loop() { if(Serial. available()) { num=Serial. parse. Int(); } num 1=num/10; // 몫 num 2=num%10; //나머지 digital. Write(3, LOW); digital. Write(13, HIGH); for(int i=5; i<12; i++) { digital. Write(i, digits[num 1][i-5]); //몫을 첫번째 넣는다 } delay(10); int digits[10][7]= { //a. b. c. d. e. f. g {0, 0, 0, 1}, //0 {1, 0, 0, 1, 1}, //1 {0, 0, 1, 0}, //2 {0, 0, 1, 1, 0}, //3 {1, 0, 0, 1, 1, 0, 0}, //4 {0, 1, 0, 0}, //5 {0, 1, 0, 0, 0}, //6 {0, 0, 0, 1, 1}, //7 {0, 0, 0, 0}, //8 {0, 0, 0, 1, 1, 0, 0} //9 }; void setup() { for(int i=3; i<=13; i++) pin. Mode(i, OUTPUT); digital. Write(13, HIGH); //digit-1 digital. Write(3, HIGH); //digit-2 digital. Write(4, LOW); //digit-3 digital. Write(12, HIGH); //DP pin high 대신 low 면 도트가 켜진다 Serial. begin(9600); } Dongyang Mirae University LOGO digital. Write(3, HIGH); digital. Write(13, LOW); for(int i=5; i<12; i++) { digital. Write(i, digits[num 2][i-5]); //나머지를 두번째 넣는다 } delay(10); digital. Write(3, LOW); } 센서활용프로그래밍/IOT소프트웨어개발 prepared by Choon Woo Kwon

(실습-4) 시리얼 모니터 이용 숫자 표시(세자리) int digits[10][7]= //digits[표시숫자][LED segment] { //a. b. c.

(실습-4) 시리얼 모니터 이용 숫자 표시(세자리) int digits[10][7]= //digits[표시숫자][LED segment] { //a. b. c. d. e. f. g 표시숫자에 따른 LED segment 값 {0, 0, 0, 1}, //0 {1, 0, 0, 1, 1}, //1 {0, 0, 1, 0}, //2 {0, 0, 1, 1, 0}, //3 {1, 0, 0, 1, 1, 0, 0}, //4 {0, 1, 0, 0}, //5 {0, 1, 0, 0, 0}, //6 {0, 0, 0, 1, 1}, //7 {0, 0, 0, 0}, //8 {0, 0, 0, 1, 1, 0, 0} //9 }; void setup() { for(int i=3; i<=13; i++) pin. Mode(i, OUTPUT); int num=127; //초기값 int num 1=0; //몫 int num 2=0; //나머지 int num 3=0; //나머지의 몫 int num 4=0; //나머지의 나머지 void loop() { if(Serial. available()) num=Serial. parse. Int(); // num이 127 경우 예시 num 1=num/100; //1 num 2=num%100; //27 num 3=num 2/10; //2 num 4=num 2%10; //7 digital. Write(3, LOW); digital. Write(4, LOW); digital. Write(13, HIGH); //몫 digital. Write(13, HIGH); //digit-1 digital. Write(3, HIGH); //digit-2 digital. Write(4, HIGH); //digit-3 digital. Write(12, HIGH); //DP pin high 대신 low 면 도트가 켜진다 Serial. begin(9600); } Dongyang Mirae University LOGO for(int i=5; i<12; i++) { digital. Write(i, digits[num 1][i-5]); //몫을 첫 번째 넣는다 } // 백의자리 보인다 센서활용프로그래밍/IOT소프트웨어개발 prepared by Choon Woo Kwon

(실습-4) 시리얼 모니터 이용 숫자 표시(세자리) LOGO delay(5); digital. Write(4, LOW); digital. Write(3, HIGH);

(실습-4) 시리얼 모니터 이용 숫자 표시(세자리) LOGO delay(5); digital. Write(4, LOW); digital. Write(3, HIGH); digital. Write(13, LOW); for(int i=5; i<12; i++) { digital. Write(i, digits[num 3][i-5]); //나머지의 몫 } // 십의 자리 보인다 delay(5); digital. Write(4, HIGH); digital. Write(3, LOW); digital. Write(13, LOW); for(int i=5; i<12; i++) { digital. Write(i, digits[num 4][i-5]); //나머지의 나머지 } //1의자리 보인다 delay(5); digital. Write(4, LOW); } Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 prepared by Choon Woo Kwon

(실습-5) 3 Digit 7 Segment LED : 000~999 표시(세자리)LOGO //Millis 함수로 999초 나타내기 unsigned

(실습-5) 3 Digit 7 Segment LED : 000~999 표시(세자리)LOGO //Millis 함수로 999초 나타내기 unsigned long my. Time; int left, center, right; int digits[10][7]= { {0, 0, 0, 1}, //0 {1, 0, 0, 1, 1}, //1 {0, 0, 1, 0}, //2 {0, 0, 1, 1, 0}, //3 {1, 0, 0, 1, 1, 0, 0}, //4 {0, 1, 0, 0}, //5 {0, 1, 0, 0, 0}, //6 {0, 0, 0, 1, 1}, //7 {0, 0, 0, 0}, //8 {0, 0, 1, 0, 0}//9 }; void setup() { for(int i=2; i<=13; i++) { pin. Mode(i, OUTPUT); } Serial. begin(9600); digital. Write(12, 1); //dot off } Dongyang Mirae University void loop() { right. Digit(13, 3, 4); delay(9); // 추가 ? center. Digit(13, 3, 4); delay(9); // 추가 ? left. Digit(13, 3, 4); delay(9); // 추가 ? } void right. Digit(int pin. Num 2, int pin. Num 3, int pin. Num 4) { digital. Write(pin. Num 4, HIGH); //4 digital. Write(pin. Num 3, LOW); //3 digital. Write(pin. Num 2, LOW); //2 digit right=millis()/100%10; //0. 1초 for(int i=0; i<=right; i++) { for(int a=5; a<12; a++) { digital. Write(a, digits[right][a-5]); } Serial. println(right); } } 센서활용프로그래밍/IOT소프트웨어개발 prepared by Choon Woo Kwon

(실습-5) 3 Digit 7 Segment LED : 000~999 표시(세자리)LOGO void center. Digit(int pin. Num

(실습-5) 3 Digit 7 Segment LED : 000~999 표시(세자리)LOGO void center. Digit(int pin. Num 2, int pin. Num 3, int pin. Num 4) { digital. Write(pin. Num 4, LOW); //4 digital. Write(pin. Num 3, HIGH); //3 digital. Write(pin. Num 2, LOW); //2 digit center=millis()/1000%10; //1초 for(int i=0; i<=center; i++) { for(int a=5; a<12; a++) { digital. Write(a, digits[center][a-5]); } Serial. println(center); } } Dongyang Mirae University void left. Digit(int pin. Num 2, int pin. Num 3, int pin. Num 4) { digital. Write(pin. Num 4, LOW); //4 digit digital. Write(pin. Num 3, LOW); //3 digit digital. Write(pin. Num 2, HIGH); //2 digit left=millis()/10000%10; //10초 for(int i=0; i<=left; i++) { for(int a=5; a<12; a++) { digital. Write(a, digits[left][a-5]); } Serial. println(left); } } 센서활용프로그래밍/IOT소프트웨어개발 prepared by Choon Woo Kwon

LOGO RGB LED(3 Color) Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 43 prepared by Choon Woo Kwon

LOGO RGB LED(3 Color) Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 43 prepared by Choon Woo Kwon

RGB LED(3 Color) 활용 준비물 (Type-1) LOGO (Type-2) Common Cathode RGB LED Dongyang Mirae

RGB LED(3 Color) 활용 준비물 (Type-1) LOGO (Type-2) Common Cathode RGB LED Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 44 prepared by Choon Woo Kwon

RGB LED(3 Color) 활용 - 배선도 LOGO B G Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 45

RGB LED(3 Color) 활용 - 배선도 LOGO B G Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 45 R prepared by Choon Woo Kwon

RGB LED(3 Color) 활용 – 회로도(Schematic) Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 46 LOGO prepared by

RGB LED(3 Color) 활용 – 회로도(Schematic) Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 46 LOGO prepared by Choon Woo Kwon

RGB LED(3 Color) 활용 – 스케치(1/2) LOGO // 펄스폭 변조(PWM) 이용 RGB Color LED의

RGB LED(3 Color) 활용 – 스케치(1/2) LOGO // 펄스폭 변조(PWM) 이용 RGB Color LED의 색상을 순차적으로 변경 int ledpin. Red = 11; int ledpin. Green = 9; int ledpin. Blue = 10; unsigned int tr, tg, tb; unsigned int p = 0; void wheel(unsigned int i) { unsigned int k; unsigned int m; i = i%0 x 300; m = i&0 x. FF; k = i&0 x 300; switch(k) { case 0 x 0000: tr = 0 x. FF - m; // Red Decrement tg = m; // Green Increment tb = 0; // Blue Off break; case 0 x 0100: tr = 0; // Red Off tg = 0 x. FF - m; // Green Decrement tb = m; // Blue Increment break; case 0 x 0200: tr = m; // Red Increment tg = 0; // Green Off tb = 0 x. FF - m; // Blue Decrement break; } } Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 47 prepared by Choon Woo Kwon

RGB LED(3 Color) 활용 – 스케치(2/2) LOGO // …………… 계속 ……………. . void setup()

RGB LED(3 Color) 활용 – 스케치(2/2) LOGO // …………… 계속 ……………. . void setup() { // put your setup code here, to run once: } void loop() { wheel(p); analog. Write(ledpin. Red, tr); analog. Write(ledpin. Green, tg); analog. Write(ledpin. Blue, tb); delay(15); p++; p %= 0 x 300; } (실습 내용) (1) loop() 에서 delay() 값을 5, 500, 1000으로 수정하여 동작을 확인하라. (2) Red와 Blue 색만 변경하도록 프로그램을 수정하라. -> (동작을 동영상으로 제출) (3) 이 프로그램의 동작을 분석하라. -> (보고서 작성 후 제출) Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 48 prepared by Choon Woo Kwon

LOGO Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 49 prepared by Choon Woo Kwon

LOGO Dongyang Mirae University 센서활용프로그래밍/IOT소프트웨어개발 49 prepared by Choon Woo Kwon