kohacraft Lab
/
kc_matrixclock_withRTC
Dot Matrix LED clock with RTC ver1.0
Diff: main.cpp
- Revision:
- 0:c872b97ce7ea
- Child:
- 1:5577d93280da
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Aug 11 00:56:37 2015 +0000 @@ -0,0 +1,150 @@ +#include "mbed.h" +#include "font.h" + +#include "TLC5940.h" +int num_ics = 1; //何個TLC5940がつながっているか + +DigitalOut col1 = dp11; +DigitalOut col2 = dp13; +DigitalOut col3 = dp14; +DigitalOut col4 = dp15; +DigitalOut col5 = dp16; +DigitalOut col6 = dp17; +DigitalOut col7 = dp18; +DigitalOut col8 = dp26; + +DigitalIn fastSw = dp28; +DigitalIn slowSw = dp25; + +#define brightMax 4095 + +DigitalOut led = dp28; + +int sec = 0; +int min = 0;// +int hour =1;// + +//時間の数字をドッドの数字に変換 +unsigned char hourDecfont( int num , int colm ) +{ + unsigned char fontTemp = 0; + unsigned char fontTemp2 = 0; + int numTemp = 0 ; + numTemp = num / 10; + if( numTemp >0 ) + { + fontTemp = numFont[ numTemp ][ colm ]; + fontTemp = fontTemp << 5; + } + numTemp = num - numTemp*10; + fontTemp2 = numFont[ numTemp ][ colm ]; + fontTemp2 = fontTemp2 << 2; + fontTemp = fontTemp | fontTemp2 | numFont[ 10 ][ colm ]; + + return fontTemp; +} + +//数字をドッドの数字に変換 +unsigned char decfont( int num , int colm ) +{ + unsigned char fontTemp = 0; + int numTemp = 0 ; + numTemp = num / 10; + fontTemp = numFont[ numTemp ][ colm ]; + fontTemp = fontTemp << 4; + numTemp = num - numTemp*10; + fontTemp = fontTemp | numFont[ numTemp ][ colm ]; + + return fontTemp; +} + +//指定したフォントの、それぞれの行のピンをONOFFする +void fontOut( unsigned char font ) +{ + unsigned char mask = 0x01; + unsigned char temp = font; + if( ( temp & mask ) !=0 ) + col1 = 1; + else + col1 = 0; + mask = mask << 1; + + if( ( temp & mask ) !=0 ) + col2 = 1; + else + col2 = 0; + mask = mask << 1; + + if( ( temp & mask ) !=0 ) + col3 = 1; + else + col3 = 0; + mask = mask << 1; + + if( ( temp & mask ) !=0 ) + col4 = 1; + else + col4 = 0; + mask = mask << 1; + + if( ( temp & mask ) !=0 ) + col5 = 1; + else + col5 = 0; + mask = mask << 1; + + if( ( temp & mask ) !=0 ) + col6 = 1; + else + col6 = 0; + mask = mask << 1; + + if( ( temp & mask ) !=0 ) + col7 = 1; + else + col7 = 0; + mask = mask << 1; + + if( ( temp & mask ) !=0 ) + col8 = 1; + else + col8 = 0; + + + +} + +int main() { + + led = 0; + initFont(); + setup ( num_ics ); + led = 1; + + unsigned short LEDS[16]; + + while(1) { + if( led == 1 ) + led = 0; + else + led = 1; + + //16行分ダイナミック点灯させる + for( int colmn=0 ; colmn<16 ; colmn++ ) + { + + + for( int h=0; h<16 ; h++ ) + LEDS[h] = 0; + LEDS[colmn] = (unsigned short)brightMax; + if( colmn<8 ) + fontOut( decfont( min , colmn ) ); + else + fontOut( hourDecfont( hour , colmn-8 ) ); + + update_led ( LEDS); + + } + + } +}