kohacraft Lab
/
kc_matrixclock_withRTC
Dot Matrix LED clock with RTC ver1.0
main.cpp@0:c872b97ce7ea, 2015-08-11 (annotated)
- Committer:
- kohacraft
- Date:
- Tue Aug 11 00:56:37 2015 +0000
- Revision:
- 0:c872b97ce7ea
- Child:
- 1:5577d93280da
only 1:00 indicate
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kohacraft | 0:c872b97ce7ea | 1 | #include "mbed.h" |
kohacraft | 0:c872b97ce7ea | 2 | #include "font.h" |
kohacraft | 0:c872b97ce7ea | 3 | |
kohacraft | 0:c872b97ce7ea | 4 | #include "TLC5940.h" |
kohacraft | 0:c872b97ce7ea | 5 | int num_ics = 1; //何個TLC5940がつながっているか |
kohacraft | 0:c872b97ce7ea | 6 | |
kohacraft | 0:c872b97ce7ea | 7 | DigitalOut col1 = dp11; |
kohacraft | 0:c872b97ce7ea | 8 | DigitalOut col2 = dp13; |
kohacraft | 0:c872b97ce7ea | 9 | DigitalOut col3 = dp14; |
kohacraft | 0:c872b97ce7ea | 10 | DigitalOut col4 = dp15; |
kohacraft | 0:c872b97ce7ea | 11 | DigitalOut col5 = dp16; |
kohacraft | 0:c872b97ce7ea | 12 | DigitalOut col6 = dp17; |
kohacraft | 0:c872b97ce7ea | 13 | DigitalOut col7 = dp18; |
kohacraft | 0:c872b97ce7ea | 14 | DigitalOut col8 = dp26; |
kohacraft | 0:c872b97ce7ea | 15 | |
kohacraft | 0:c872b97ce7ea | 16 | DigitalIn fastSw = dp28; |
kohacraft | 0:c872b97ce7ea | 17 | DigitalIn slowSw = dp25; |
kohacraft | 0:c872b97ce7ea | 18 | |
kohacraft | 0:c872b97ce7ea | 19 | #define brightMax 4095 |
kohacraft | 0:c872b97ce7ea | 20 | |
kohacraft | 0:c872b97ce7ea | 21 | DigitalOut led = dp28; |
kohacraft | 0:c872b97ce7ea | 22 | |
kohacraft | 0:c872b97ce7ea | 23 | int sec = 0; |
kohacraft | 0:c872b97ce7ea | 24 | int min = 0;// |
kohacraft | 0:c872b97ce7ea | 25 | int hour =1;// |
kohacraft | 0:c872b97ce7ea | 26 | |
kohacraft | 0:c872b97ce7ea | 27 | //時間の数字をドッドの数字に変換 |
kohacraft | 0:c872b97ce7ea | 28 | unsigned char hourDecfont( int num , int colm ) |
kohacraft | 0:c872b97ce7ea | 29 | { |
kohacraft | 0:c872b97ce7ea | 30 | unsigned char fontTemp = 0; |
kohacraft | 0:c872b97ce7ea | 31 | unsigned char fontTemp2 = 0; |
kohacraft | 0:c872b97ce7ea | 32 | int numTemp = 0 ; |
kohacraft | 0:c872b97ce7ea | 33 | numTemp = num / 10; |
kohacraft | 0:c872b97ce7ea | 34 | if( numTemp >0 ) |
kohacraft | 0:c872b97ce7ea | 35 | { |
kohacraft | 0:c872b97ce7ea | 36 | fontTemp = numFont[ numTemp ][ colm ]; |
kohacraft | 0:c872b97ce7ea | 37 | fontTemp = fontTemp << 5; |
kohacraft | 0:c872b97ce7ea | 38 | } |
kohacraft | 0:c872b97ce7ea | 39 | numTemp = num - numTemp*10; |
kohacraft | 0:c872b97ce7ea | 40 | fontTemp2 = numFont[ numTemp ][ colm ]; |
kohacraft | 0:c872b97ce7ea | 41 | fontTemp2 = fontTemp2 << 2; |
kohacraft | 0:c872b97ce7ea | 42 | fontTemp = fontTemp | fontTemp2 | numFont[ 10 ][ colm ]; |
kohacraft | 0:c872b97ce7ea | 43 | |
kohacraft | 0:c872b97ce7ea | 44 | return fontTemp; |
kohacraft | 0:c872b97ce7ea | 45 | } |
kohacraft | 0:c872b97ce7ea | 46 | |
kohacraft | 0:c872b97ce7ea | 47 | //数字をドッドの数字に変換 |
kohacraft | 0:c872b97ce7ea | 48 | unsigned char decfont( int num , int colm ) |
kohacraft | 0:c872b97ce7ea | 49 | { |
kohacraft | 0:c872b97ce7ea | 50 | unsigned char fontTemp = 0; |
kohacraft | 0:c872b97ce7ea | 51 | int numTemp = 0 ; |
kohacraft | 0:c872b97ce7ea | 52 | numTemp = num / 10; |
kohacraft | 0:c872b97ce7ea | 53 | fontTemp = numFont[ numTemp ][ colm ]; |
kohacraft | 0:c872b97ce7ea | 54 | fontTemp = fontTemp << 4; |
kohacraft | 0:c872b97ce7ea | 55 | numTemp = num - numTemp*10; |
kohacraft | 0:c872b97ce7ea | 56 | fontTemp = fontTemp | numFont[ numTemp ][ colm ]; |
kohacraft | 0:c872b97ce7ea | 57 | |
kohacraft | 0:c872b97ce7ea | 58 | return fontTemp; |
kohacraft | 0:c872b97ce7ea | 59 | } |
kohacraft | 0:c872b97ce7ea | 60 | |
kohacraft | 0:c872b97ce7ea | 61 | //指定したフォントの、それぞれの行のピンをONOFFする |
kohacraft | 0:c872b97ce7ea | 62 | void fontOut( unsigned char font ) |
kohacraft | 0:c872b97ce7ea | 63 | { |
kohacraft | 0:c872b97ce7ea | 64 | unsigned char mask = 0x01; |
kohacraft | 0:c872b97ce7ea | 65 | unsigned char temp = font; |
kohacraft | 0:c872b97ce7ea | 66 | if( ( temp & mask ) !=0 ) |
kohacraft | 0:c872b97ce7ea | 67 | col1 = 1; |
kohacraft | 0:c872b97ce7ea | 68 | else |
kohacraft | 0:c872b97ce7ea | 69 | col1 = 0; |
kohacraft | 0:c872b97ce7ea | 70 | mask = mask << 1; |
kohacraft | 0:c872b97ce7ea | 71 | |
kohacraft | 0:c872b97ce7ea | 72 | if( ( temp & mask ) !=0 ) |
kohacraft | 0:c872b97ce7ea | 73 | col2 = 1; |
kohacraft | 0:c872b97ce7ea | 74 | else |
kohacraft | 0:c872b97ce7ea | 75 | col2 = 0; |
kohacraft | 0:c872b97ce7ea | 76 | mask = mask << 1; |
kohacraft | 0:c872b97ce7ea | 77 | |
kohacraft | 0:c872b97ce7ea | 78 | if( ( temp & mask ) !=0 ) |
kohacraft | 0:c872b97ce7ea | 79 | col3 = 1; |
kohacraft | 0:c872b97ce7ea | 80 | else |
kohacraft | 0:c872b97ce7ea | 81 | col3 = 0; |
kohacraft | 0:c872b97ce7ea | 82 | mask = mask << 1; |
kohacraft | 0:c872b97ce7ea | 83 | |
kohacraft | 0:c872b97ce7ea | 84 | if( ( temp & mask ) !=0 ) |
kohacraft | 0:c872b97ce7ea | 85 | col4 = 1; |
kohacraft | 0:c872b97ce7ea | 86 | else |
kohacraft | 0:c872b97ce7ea | 87 | col4 = 0; |
kohacraft | 0:c872b97ce7ea | 88 | mask = mask << 1; |
kohacraft | 0:c872b97ce7ea | 89 | |
kohacraft | 0:c872b97ce7ea | 90 | if( ( temp & mask ) !=0 ) |
kohacraft | 0:c872b97ce7ea | 91 | col5 = 1; |
kohacraft | 0:c872b97ce7ea | 92 | else |
kohacraft | 0:c872b97ce7ea | 93 | col5 = 0; |
kohacraft | 0:c872b97ce7ea | 94 | mask = mask << 1; |
kohacraft | 0:c872b97ce7ea | 95 | |
kohacraft | 0:c872b97ce7ea | 96 | if( ( temp & mask ) !=0 ) |
kohacraft | 0:c872b97ce7ea | 97 | col6 = 1; |
kohacraft | 0:c872b97ce7ea | 98 | else |
kohacraft | 0:c872b97ce7ea | 99 | col6 = 0; |
kohacraft | 0:c872b97ce7ea | 100 | mask = mask << 1; |
kohacraft | 0:c872b97ce7ea | 101 | |
kohacraft | 0:c872b97ce7ea | 102 | if( ( temp & mask ) !=0 ) |
kohacraft | 0:c872b97ce7ea | 103 | col7 = 1; |
kohacraft | 0:c872b97ce7ea | 104 | else |
kohacraft | 0:c872b97ce7ea | 105 | col7 = 0; |
kohacraft | 0:c872b97ce7ea | 106 | mask = mask << 1; |
kohacraft | 0:c872b97ce7ea | 107 | |
kohacraft | 0:c872b97ce7ea | 108 | if( ( temp & mask ) !=0 ) |
kohacraft | 0:c872b97ce7ea | 109 | col8 = 1; |
kohacraft | 0:c872b97ce7ea | 110 | else |
kohacraft | 0:c872b97ce7ea | 111 | col8 = 0; |
kohacraft | 0:c872b97ce7ea | 112 | |
kohacraft | 0:c872b97ce7ea | 113 | |
kohacraft | 0:c872b97ce7ea | 114 | |
kohacraft | 0:c872b97ce7ea | 115 | } |
kohacraft | 0:c872b97ce7ea | 116 | |
kohacraft | 0:c872b97ce7ea | 117 | int main() { |
kohacraft | 0:c872b97ce7ea | 118 | |
kohacraft | 0:c872b97ce7ea | 119 | led = 0; |
kohacraft | 0:c872b97ce7ea | 120 | initFont(); |
kohacraft | 0:c872b97ce7ea | 121 | setup ( num_ics ); |
kohacraft | 0:c872b97ce7ea | 122 | led = 1; |
kohacraft | 0:c872b97ce7ea | 123 | |
kohacraft | 0:c872b97ce7ea | 124 | unsigned short LEDS[16]; |
kohacraft | 0:c872b97ce7ea | 125 | |
kohacraft | 0:c872b97ce7ea | 126 | while(1) { |
kohacraft | 0:c872b97ce7ea | 127 | if( led == 1 ) |
kohacraft | 0:c872b97ce7ea | 128 | led = 0; |
kohacraft | 0:c872b97ce7ea | 129 | else |
kohacraft | 0:c872b97ce7ea | 130 | led = 1; |
kohacraft | 0:c872b97ce7ea | 131 | |
kohacraft | 0:c872b97ce7ea | 132 | //16行分ダイナミック点灯させる |
kohacraft | 0:c872b97ce7ea | 133 | for( int colmn=0 ; colmn<16 ; colmn++ ) |
kohacraft | 0:c872b97ce7ea | 134 | { |
kohacraft | 0:c872b97ce7ea | 135 | |
kohacraft | 0:c872b97ce7ea | 136 | |
kohacraft | 0:c872b97ce7ea | 137 | for( int h=0; h<16 ; h++ ) |
kohacraft | 0:c872b97ce7ea | 138 | LEDS[h] = 0; |
kohacraft | 0:c872b97ce7ea | 139 | LEDS[colmn] = (unsigned short)brightMax; |
kohacraft | 0:c872b97ce7ea | 140 | if( colmn<8 ) |
kohacraft | 0:c872b97ce7ea | 141 | fontOut( decfont( min , colmn ) ); |
kohacraft | 0:c872b97ce7ea | 142 | else |
kohacraft | 0:c872b97ce7ea | 143 | fontOut( hourDecfont( hour , colmn-8 ) ); |
kohacraft | 0:c872b97ce7ea | 144 | |
kohacraft | 0:c872b97ce7ea | 145 | update_led ( LEDS); |
kohacraft | 0:c872b97ce7ea | 146 | |
kohacraft | 0:c872b97ce7ea | 147 | } |
kohacraft | 0:c872b97ce7ea | 148 | |
kohacraft | 0:c872b97ce7ea | 149 | } |
kohacraft | 0:c872b97ce7ea | 150 | } |