Ms Timer 2 h ifndef Ms Timer 2h
- Slides: 22
Ms. Timer 2. h의 구성 #ifndef Ms. Timer 2_h #define Ms. Timer 2_h #include <avr/interrupt. h> namespace Ms. Timer 2 { extern unsigned long msecs; extern void (*func)(); extern volatile unsigned long count; extern volatile char overflowing; extern volatile unsigned int tcnt 2; void set(unsigned long ms, void (*f)()); void start(); void stop(); void _overflow(); } #endif 12
예제 14. 2의 스케치 #include <Ms. Timer 2. h> byte LED[8] = {22, 24, 26, 28, 30, 32, 34, 36}; byte i = 0; void flash() { LED_display(i++); } void setup() { byte k; for(k=0; k<8; k++) pin. Mode(LED[k], OUTPUT); Ms. Timer 2: : set(1000, flash); Ms. Timer 2: : start(); } void LED_display(byte data) { byte k; for(k=0; k<8; k++) digital. Write(LED[k], bit. Read(data, k)); } void loop() { } flash()는 타이머 2 오버플로우 인터럽트 발생시 실행되는 함수 LED[8]를 출력모드로 선언 타이머 2를 사용하여 1000 ms 마다 flash()함수를 실행하도록 설정 LED_display( )함수 선언 입력받은 변수 값으로 LED에 표시 14
아두이노 Mega보드와 Array-FND 모듈 연결 Mega 보드 디지털입출력 핀 연결 모듈 22 24 26 28 30 32 34 36 38 40 42 44 A B C D E F G H C 0 C 1 C 2 C 3 Array-FND 모듈 16
예제 14. 3의 스케치 1 #include <Ms. Timer 2. h> enum {C 0, C 1, C 2, C 3}; byte FND[8] = {22, 24, 26, 28, 30, 32, 34, 36}; byte FND_CON[4] = {38, 40, 42, 44}; byte FND_DATA_TBL[]= {0 x 3 F, 0 X 06, 0 X 5 B, 0 X 4 F, 0 X 66, 0 X 6 D, 0 X 7 C, 0 X 07, 0 X 7 F, 0 X 67, 0 X 7 C, 0 X 39, 0 X 5 E, 0 X 79, 0 X 71, 0 X 08, 0 X 80}; volatile byte time_s = 0, time_m = 0; void flash(){ if (time_s >= 59) { time_m++; time_s =0; } else time_s++; if (time_m > 59) { time_m =0; } } flash()는 타이머 2 오버플로우 인터럽트 발 생시 실행되는 함수 17
예제 14. 3의 스케치 2 void setup() { byte z; for(z=0; z<8; z++) pin. Mode(FND[z], OUTPUT); for(z=0; z<4; z++) pin. Mode(FND_CON[z], OUTPUT); Ms. Timer 2: : set(1000, flash); Ms. Timer 2: : start(); } 1000 ms period 1000 ms 마다 flash()함수를 실행하도록 설 정 void print_FND(byte sel. Cx, byte data){ byte z, temp; temp = FND_DATA_TBL[data]; if(sel. Cx == C 1) temp |= 0 x 80; for(z=0; z<4; z++) { if(z == sel. Cx) digital. Write(FND_CON[z], LOW); else digital. Write(FND_CON[z], HIGH); } for(z=0; z<8; z++){ digital. Write(FND[z], bit. Read(temp, z)); } 출력할 숫자를 불러온다. 숫자에 점을 추가 } 18
예제 14. 3의 스케치 3 void loop() { print_FND(C 0, time_m/10); delay(1); print_FND(C 1, time_m%10); delay(1); print_FND(C 2, time_s/10); delay(1); print_FND(C 3, time_s%10); delay(1); } C 0: 10분단위 출력, 왼쪽 첫번째 FND C 1에 1분단위 출력, 왼쪽 두번째 FND C 2에 10초단위 출력, 왼쪽 세번째 FND C 3에 1초단위 출력, 왼쪽 네번째 FND 19
예제 14. 4의 스케치 #include <Ms. Timer 2. h> byte Piezo = 7; void setup() { Ms. Timer 2: : set(3000, alarm); Ms. Timer 2: : start(); } 타이머 2를 사용하여 3000 ms마다 alarm()함수를 실행하도록 설정 void alarm() { long ra=440; for (long i=0; i<=100000; i=i+ra) { digital. Write(Piezo, HIGH); delay. Microseconds(ra); digital. Write(Piezo, LOW); delay. Microseconds(ra); } delay(200); } 타이머 2 오버플로우 인터럽트 발생시 alarm() 실행 void loop() { } 21
- Android studio timer example
- Arduino mega interrupt pin
- 3 minute timer
- Notc contact
- Pwm using 555
- Układ 555
- Zoom timer background
- Chris csb biodata
- Optivisum
- 20 minute timer
- Robotc timer
- 555 control pin
- Glut timer
- Pic 18 timers are ........bit wide
- Upon receipt of a bad segment, udp?
- Tcp tw
- 2h timer
- Shared data problem in embedded system
- 1timer
- Sunpharma office timer
- Dagpenge som 60 årig
- 8051 timers
- Club-231