cwkwondongyang ac kr 7 Segment LED 3 Digit
- Slides: 49
동양미래대학교 컴퓨터공학부 권춘우(cwkwon@dongyang. ac. kr) 센서활용프로그래밍 - 7 Segment LED - 3 Digit 7 Segment LED - RGB LED(3 Color)
목차 LOGO Ø 7 Segment LED § 7 Segment LED(FND) § 7 Segment LED 응용 : 전자주사위 제작 Ø 3 Digit 7 Segment LED Ø RGB LED(3 Color) Dongyang Mirae University 센서활용프로그래밍 2 prepared by Choon Woo Kwon
LOGO 7 세그먼트(Seven Segment) LED Dongyang Mirae University 센서활용프로그래밍 3 prepared by Choon Woo Kwon
7 세그먼트(Seven Segment) LED Dongyang Mirae University 센서활용프로그래밍 LOGO 5 prepared by Choon Woo Kwon
7 세그먼트(Seven Segment) LED 구동(1) LOGO 7 Segment Common Cathode FND (flexible numeric display) 9 10 7 6 1 2 Dongyang Mirae University 센서활용프로그래밍 6 4 5 prepared by Choon Woo Kwon
7 세그먼트(Seven Segment) LED 구동(1) 7 Segment Common Cathode FND Dongyang Mirae University 센서활용프로그래밍 LOGO (flexible numeric display) 7 prepared by Choon Woo Kwon
7 세그먼트(Seven Segment) LED 구동(1) #define SEG_START 11 // 시작 글자 모양 (11번) 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; // 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 4 2 1 9 10 5 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 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; 센서활용프로그래밍 8 prepared by Choon Woo Kwon
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; 센서활용프로그래밍 9 prepared by Choon Woo Kwon
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); } 센서활용프로그래밍 10 prepared by Choon Woo Kwon
7 세그먼트(Seven Segment) LED 구동(2) LOGO 7 Segment Common Anode FND (flexible numeric display) Common Anode FND 배선은 Common Cathode FND 경우 와 어떤 차이가 있지? FND의 Common Pin 연결 § Common Anode : +5 V(Vcc) § Common Cathode : 0 V Dongyang Mirae University 센서활용프로그래밍 11 prepared by Choon Woo Kwon
7 세그먼트(Seven Segment) LED 구동(2) 7 Segment Common Anode FND Dongyang Mirae University 센서활용프로그래밍 12 LOGO (flexible numeric display) prepared by Choon Woo Kwon
LOGO 7 Segment LED 응용 - 전자 주사위 - Dongyang Mirae University 센서활용프로그래밍 15 prepared by Choon Woo Kwon
※ 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); millis()함수 값의 하위 자리 3개 수치를 random. Seed() 함수 적용 int r = random(100); (예) millis() 값이 459384 일 경우 ⇒ 384를 random Seed 변수로 사용 Serial. println(r, DEC); delay(200); random() 함수로 최대 100인 random number 생성 // // for (i = 0; i<50; i++) { fnd(r%6+1); r++; delay(10+i*i/5); } } } Dongyang Mirae University 센서활용프로그래밍 17 prepared by Choon Woo Kwon
전자 주사위 제작 – 배선도 LOGO 배선도 : Common Anode FND 사용 Common Cathode FND 사용 하는 경우에는 어떻게 배선을 하여야 하는가? 아두이노 핀 #2는 직렬통신의 tx 신 호를 생성하는 목 적으로도 사용됨 에 유의!! FND의 Common Pin 연결 § Common Anode : +5 V(Vcc) § Common Cathode : 0 V Common Anode Type 7 Segment LED 기준 Dongyang Mirae University 센서활용프로그래밍 20 prepared by Choon Woo Kwon
전자 주사위 제작 – 회로도(Schematic) LOGO FND의 Common Pin 연결 § Common Anode : +5 V(Vcc) § Common Cathode : 0 V Common Anode Type 7 Segment LED 기준 Dongyang Mirae University 센서활용프로그래밍 21 prepared by Choon Woo Kwon
전자 주사위 제작 – 스케치(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 #define SEG_A #define SEG_B #define SEG_C #define SEG_D #define SEG_E #define SEG_F #define SEG_G #define SEG_H a 2 3 4 5 6 7 8 9 Dongyang Mirae University // Segment a // Segment b // Segment c // Segment d // Segment e // Segment f // Segment g // Segment h <스케치 소스> Common Anode Type 7 Segment LED 기준 ******* f* *b * g * ******* e* *c * * ******* * h d 센서활용프로그래밍 22 prepared by Choon Woo Kwon
전자 주사위 제작 – 스케치(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 센서활용프로그래밍 23 prepared by Choon Woo Kwon
전자 주사위 제작 – 스케치(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 센서활용프로그래밍 24 prepared by Choon Woo Kwon
전자 주사위 제작 – 스케치(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 센서활용프로그래밍 25 prepared by Choon Woo Kwon
전자 주사위 제작 – 스케치(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 센서활용프로그래밍 26 prepared by Choon Woo Kwon
전자 주사위 제작 – 스케치(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 센서활용프로그래밍 27 prepared by Choon Woo Kwon
전자 주사위 제작 – 스케치(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 센서활용프로그래밍 28 prepared by Choon Woo Kwon
LOGO 3 Digit 7 Segment LED Dongyang Mirae University 센서활용프로그래밍 29 prepared by Choon Woo Kwon
3 Digit 7 Segment LED - Data Sheet Dongyang Mirae University 센서활용프로그래밍 LOGO prepared by Choon Woo Kwon
3 Digit 7 Segment LED – 핀 번호 & 세그먼트 LOGO 3 Digit 7 Segment LED 핀 번호 12 11 10 9 8 7 1 2 3 4 5 6 NC (연결 없음) 3 Digit 7 Segment LED 핀 번호 Dongyang Mirae University 센서활용프로그래밍 prepared by Choon Woo Kwon
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 LED #3 LED #5 LED #10 LED #1 LED #2 LED #4 LED #7 LED #11 3 Digit 7 Segment LED 핀 번호 Dongyang Mirae University 센서활용프로그래밍 [Connection] LED #9 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 부품 내부 Dongyang Mirae University 센서활용프로그래밍 prepared by Choon Woo Kwon
(실습-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); } } 센서활용프로그래밍 prepared by Choon Woo Kwon
(실습-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 센서활용프로그래밍 prepared by Choon Woo Kwon
(실습-3) 시리얼 모니터 이용 숫자 표시(두자리) 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} }; 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); //0 //1 //2 //3 //4 //5 //6 //7 //8 //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); } 센서활용프로그래밍 prepared by Choon Woo Kwon
(실습-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 }; LOGO 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 void setup() { for(int i=3; i<=13; i++) pin. Mode(i, OUTPUT); 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); for(int i=5; i<12; i++) { digital. Write(i, digits[num 1][i-5]); //몫을 첫 번째 넣는다 } // 백의자리 보인다 } Dongyang Mirae University 센서활용프로그래밍 prepared by Choon Woo Kwon
(실습-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 센서활용프로그래밍 prepared by Choon Woo Kwon
(실습-5) 3 Digit 7 Segment LED : 000~999 표시(세자리)LOGO //Millis 함수로 999초 나타내기(3 Digit 7 Segment LED) // Arduino I/O Pin number for enabling left/center/right Digit #define Dig 1 13 // Arduino pin # for Digit 1(left) #define Dig 2 3 // Arduino pin # for Digit 2(center) #define Dig 3 4 // Arduino pin # for Digit 3(right) 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 int left, center, right; int digits[10][7]= { {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, 1, 0, 0} }; center=millis()/1000%10; //1초 //숫자 0 -9에 대한 모양 데이터 //숫자 //숫자 //숫자 0 1 2 3 4 5 6 7 8 9 Dongyang Mirae University for(int i=0; i<=center; i++) { for(int a=5; a<12; a++) { digital. Write(a, digits[center][a-5]); } Serial. println(center); } } 센서활용프로그래밍 prepared by Choon Woo Kwon
(실습-5) 3 Digit 7 Segment LED : 000~999 표시(세자리)LOGO void left. 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, LOW); //3 digital. Write(pin. Num 2, HIGH); //2 digit for(int i=0; i<=right; i++) { for(int a=5; a<12; a++) { digital. Write(a, digits[right][a-5]); } Serial. println(right); } 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); } } 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 } void setup() { for(int i=2; i<=13; i++) { pin. Mode(i, OUTPUT); } Serial. begin(9600); digital. Write(12, 1); //DP(decimal point: dot) OFF } void loop() { right. Digit(Dig 1, Dig 2, Dig 3); center. Digit(Dig 1, Dig 2, Dig 3); left. Digit(Dig 1, Dig 2, Dig 3); } right=millis()/100%10; //0. 1초 Dongyang Mirae University 센서활용프로그래밍 prepared by Choon Woo Kwon
LOGO RGB LED(3 Color) Dongyang Mirae University 센서활용프로그래밍 44 prepared by Choon Woo Kwon
RGB LED(3 Color) 활용 준비물 (Type-1) LOGO (Type-2) Common Cathode RGB LED Dongyang Mirae University 센서활용프로그래밍 45 prepared by Choon Woo Kwon
RGB LED(3 Color) 활용 - 배선도 LOGO B G Dongyang Mirae University 센서활용프로그래밍 46 R prepared by Choon Woo Kwon
RGB LED(3 Color) 활용 – 회로도(Schematic) Dongyang Mirae University 센서활용프로그래밍 47 LOGO prepared by Choon Woo Kwon
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 센서활용프로그래밍 48 prepared by Choon Woo Kwon
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 센서활용프로그래밍 49 prepared by Choon Woo Kwon
LOGO Dongyang Mirae University 센서활용프로그래밍 50 prepared by Choon Woo Kwon
- Multiplication 3 digit by 2 digit
- How to divide 3 digit numbers by 1 digit numbers
- 3 digit addition and subtraction jeopardy
- Multi digit division word problems
- 7 segment 회로도
- Segment invasion plan
- Pada komunikasi satelit, yang termasuk segmen bumi adalah
- Last 4 digits of nric example
- Formula masa dan waktu
- Any digit that is not zero is significant
- Map with grid coordinates
- Doubtful digit
- Rounding jeopardy
- Digit banja luka
- Write the multiplicative inverse of 2/5
- Mod11 check digit
- Mid-square hashing
- 10 digit number money
- Convert from decimal number system to binary digit : 201
- All non zero digits are significant
- Digit ratio
- Allegra james
- Random number table
- Partitioning numbers to 100
- Digit symbol coding wais
- Single digit whole number
- Dividing by 1 digit divisors
- Xxxv99
- Chapter 3 compute with multi digit numbers
- What is the value of the underlined digit 891
- 4 or less let it rest 5 or more raise the score
- In 5700m significant digits are
- (84-2-1) code for decimal digit 3 is
- Binary digit
- Terminal digit filing
- Terminal digit
- How to divide 2 digit numbers
- Digit amputation cow
- Dg digit
- Evaluation of bahrick et al 1975
- Place value of 5 digit numbers
- Significant
- Determine which of the two numbers 3111 or 1714 is larger.
- Rules for counting significant figures
- Divide 3 digits by 1 digit
- All non zero digits are significant
- Round off the underlined digit
- 5th digit finger
- Rounding rhyme look next door