Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <MsTimer2.h>
- int sw[5] ={2,3,4,5,6};
- int LED[8] = {22, 24, 26, 28, 30, 32, 34, 36};
- int pin_FND_DATA[8] = {23, 25, 27, 29, 31, 33, 35, 37};
- int pin_FND_SELECT[6] = {39, 41, 43, 45, 47, 49};
- //uint8_t FND_data[16] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x27, 0x7F, 0x6F,0x77, 0x7C, 0x39, 0x5E, 0x79, 0x1};
- uint8_t FND_data[16] = {63,6,91,79,102,109,125,39,127,111,119,124,57,94,121,1};
- uint8_t data_Cipher[6] = {9,0,9,0,9,0};
- void setup()
- {
- int i;
- for(i=0; i<8; i++)
- {
- pinMode(LED[i],OUTPUT);
- digitalWrite(LED[i], LOW);
- }
- for(i=0; i<5; i++)
- pinMode(sw[i],INPUT_PULLUP);
- for(i=0; i<8; i++)
- pinMode(pin_FND_DATA[i], OUTPUT);
- for(i=0; i<6; i++)
- pinMode(pin_FND_SELECT[i], OUTPUT);
- FND_select(0x3F);
- MsTimer2::set(2, FND_ISR);
- MsTimer2::start();
- }
- void loop()
- {
- long sec = 0, temp_num; //int로 선언하면 대략 4만이후로 값이 이상하게 출력
- int stc=0, str=0, stl=1;
- int cntled, sv_cntled; //컨트롤용 변수
- if (digitalRead(sw[4]) == HIGH) {clear(); delay(1000);}
- if (digitalRead(sw[3]) == HIGH)
- {
- while(1)
- {
- if (digitalRead(sw[2]) == HIGH) {str=1; stc=1; delay(1000);}
- if (digitalRead(sw[3]) == HIGH) {str=0; stc=0; delay(1000);}
- if (digitalRead(sw[4]) == HIGH) {clear(); stl=256; stc=0; sec=0; delay(1000);}
- //led_cnt(&stl,str);
- if(stc==1)
- {
- LED_control(0);
- continue;
- }
- else if(stc==0)
- {
- sec++; //Timer Num
- temp_num = sec; data_Cipher[0] = sec/100000;
- temp_num = temp_num%100000; data_Cipher[1] = temp_num/10000;
- temp_num = temp_num%10000; data_Cipher[2] = temp_num/1000;
- temp_num = temp_num%1000; data_Cipher[3] = temp_num/100;
- temp_num = temp_num%100; data_Cipher[4] = temp_num/10;
- //temp_num = sec%10; //6번째번호는 그냥 %10만 하면되니....
- data_Cipher[5] = temp_num%10;
- if(stl>128) stl=1;
- else stl+=stl;
- }
- delay(1000);
- LED_control(stl);
- if(sec==999999) break; //만약에 999999초 이면 타임머 정지.
- }
- }
- }
- int clear(void) //값을 시원하게 클리어
- {
- data_Cipher[0] = 0;
- data_Cipher[1] = 0;
- data_Cipher[2] = 0;
- data_Cipher[3] = 0;
- data_Cipher[4] = 0;
- data_Cipher[5] = 0;
- }
- void LED_control(uint8_t da)
- {
- for(int i=0; i<8; i++)
- {
- digitalWrite(LED[i], (da >> i) & 0x1);
- }
- }
- void FND_select(uint8_t da)
- {
- for(int i=0; i<6; i++)
- digitalWrite(pin_FND_SELECT[i], (da>>i) & 0x01);
- }
- void FND_data_out(uint8_t da)
- {
- for(int i=0; i<8; i++)
- digitalWrite(pin_FND_DATA[i], (da>>i) & 0x01);
- }
- void FND_ISR(void)
- {
- static int i=0;
- FND_data_out(0);
- FND_select(~(0x001<<i));
- FND_data_out(FND_data[data_Cipher[i]]);
- if(i==5){i=0;}
- else{i++;}
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement