Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
00001 #include "mbed.h" 00002 #include "patterns.cpp" 00003 00004 DigitalOut RCK(D10);// 74595 00005 DigitalOut G(D9); // 74595 00006 DigitalOut SER(D8); // 74164 00007 DigitalOut CLK(D7); // 74164 00008 DigitalIn BUTTON(USER_BUTTON); // 点灯・消灯ボタン 00009 //Serial pc(USBTX, USBRX); // USBシリアル通信 00010 Timer timer; // 経過時間のカウンター 00011 const unsigned char HI = 0; 00012 const unsigned char LO = 1; 00013 const unsigned char MODE = 2; //SPI 00014 00015 char scan = 16; // 点灯中の行 00016 //int round = 0; // スキャンを何周したか 00017 //int scroll = 0; // 左スクロールした量 00018 char speed = 30-29; // スクロール進段ミリ秒 00019 int t = 0; // 経過時間 00020 00021 void receive() { // シリアル受信割り込み 00022 // if(pc.getc() == 0b00000001) pc.printf("received!\r\n"); 00023 // pc.putc(pc.getc() + 1); // echo 00024 } 00025 00026 //unsigned char getPattern(char const *p, char x, char y, bool s) { 00027 // unsigned char r; 00028 // r = (unsigned char)p[x][4*11-1-y%(4*11)]; 00029 // return r; 00030 //} 00031 00032 int main() { 00033 SPI spi(D11, D12, D13); // SPIピン mosi, miso, sclk 00034 spi.format(8, MODE); // 74595へ~ビットずつ送る //立ち下りクロック 00035 spi.frequency(1*1000*1000); // 74595へのクロック周波数 最高96 初期1 00036 // pc.attach(receive, Serial::RxIrq); // シリアル受信割り込み 00037 // pc.baud(9600); // シリアル通信のクロックレート デフォルト9600 00038 timer.start(); // 経過時間のカウントを開始 00039 timer.reset(); // 経過時間0秒 00040 00041 spi.write(pattern2[0][0] 00042 + pattern5[0][0] 00043 + pattern_bus1[0][0] 00044 + pattern_bus2[0][0] 00045 + pattern_bus3[0][0] 00046 + pattern_bus4[0][0] 00047 + pattern_bus5[0][0] 00048 + pattern_bus6[0][0] 00049 + pattern_8k_kaisoku_sho[0][0] 00050 + pattern_8k_yayoi_tsugi[0][0] 00051 + pattern_8k_yayoi_next[0][0] 00052 + pattern_8k_izu_tsugi[0][0] 00053 + pattern_8k_izu_next[0][0] 00054 + pattern_8k_izuchi_tsugi[0][0] 00055 + pattern_8k_izuchi_next[0][0] 00056 + pattern_8k_yume_tsugi[0][0] 00057 + pattern_8k_yume_next[0][0] 00058 + pattern_8k_sho_tsugi[0][0] 00059 + pattern_8k_sho_next[0][0] 00060 + pattern_8k_shin_ya[0][0] 00061 + pattern_8k_green_pocket[0][0] 00062 + pattern_8k_yayoi_mamonaku[0][0] 00063 + pattern_8k_izu_mamonaku[0][0] 00064 + pattern_8k_izuchi_mamonaku[0][0] 00065 + pattern_8k_yume_mamonaku[0][0] 00066 + pattern_8k_sho_mamonaku[0][0] 00067 + pattern_8k_door_this[0][0] 00068 + pattern_8k_door_another[0][0] 00069 + pattern_8k_door_both[0][0] 00070 + pattern_8k_yayoi_jp[0][0] 00071 + pattern_8k_yayoi_en[0][0] 00072 + pattern_8k_izu_jp[0][0] 00073 + pattern_8k_izu_en[0][0] 00074 + pattern_8k_izuchi_jp[0][0] 00075 + pattern_8k_izuchi_en[0][0] 00076 ); 00077 00078 while(1) { 00079 // 行選択 00080 scan++; // 一行進む 00081 if(scan == 17+0) { // 16行目の次 00082 SER = LO; // 点灯 00083 scan = 1; // 1行目に戻る 00084 // round++; // スキャンが1周した 00085 // t = timer.read_ms(); 00086 t += 1; 00087 } else if(scan == 2) { // 2行目 00088 SER = HI; // 消灯 00089 } 00090 00091 // 表示パターン送り込み 00092 // int t = scroll; 00093 for(int i=0; i<4*11; i++){ // iは最大で~*11文字 00094 if(true) { 00095 if(t/8/speed*2 < 4*(166+11)) { 00096 unsigned char p; 00097 char y = scan-1; 00098 char x = 4*11-1-i%(4*11); 00099 if(t/8/speed*2 <= i) { 00100 p = (unsigned char)~0b00000000 >> ( (t/speed)%8); 00101 } else if(t/8/speed*2 <= 4*166+i) { 00102 p = (unsigned char)~pattern_8k_green_pocket[y][x+(t/8/speed*2-4*11)] >> ( (t/speed)%8); 00103 } else { 00104 p = (unsigned char)~0b00000000 >> ( (t/speed)%8); 00105 } 00106 if(t/8/speed*2 <= i-4) { 00107 p += (unsigned char)~0b00000000 << (8-(t/speed)%8); 00108 } else if(t/8/speed*2 <= 4*166+i-4) { 00109 p += (unsigned char)~pattern_8k_green_pocket[y][x+(t/8/speed*2)+2-4*11] << (8-(t/speed)%8); 00110 } else { 00111 p += (unsigned char)~0b00000000 << (8-(t/speed)%8); 00112 } 00113 spi.write(p); 00114 } else { 00115 spi.write((unsigned char)~pattern5[scan-1][4*11-1-i%(4*11)]); 00116 // spi.write((unsigned char)~0b00000000); //消灯 00117 } 00118 } 00119 // spi.write((unsigned char)~pattern2[scan-1][4*11-1-i%(4*11)]); 00120 //spi.write(0); 00121 //spi.write(0b10101010); 00122 //spi.write(0b11111111); 00123 } 00124 00125 // スクロール 00126 // if(round > speed) { // スクロール速度 00127 // scroll++; // 1ドットスクロールする 00128 // round = 0; // スキャン周回カウントリセット 00129 // } 00130 // if(scroll > 200) { // スクロール幅 00131 // scroll = 0; // スクロール数リセット 00132 // } 00133 00134 wait_us(10); 00135 RCK = LO; 00136 CLK = LO; 00137 // G = HI; // 消灯 00138 wait_us(10); 00139 RCK = HI; 00140 CLK = HI; 00141 00142 // ここまでの処理時間が長いほど明るくなる 00143 // while(timer.read_us()<0) { // 数字のぶんだけ暗くする 00144 // wait_us(10); 00145 // } 00146 00147 if(!BUTTON) G = LO; // ボタン押せば点灯 00148 00149 // ダイナミック点灯のパルス幅を決める 00150 // while(timer.read_us()<100) { // 100*2500でゆっくり 00151 // wait_us(10); 00152 // } 00153 // pc.printf("%d\r\n", timer.read_us()); 00154 // pc.printf("%d\r\n", round/100); 00155 } 00156 }
Generated on Tue Jul 26 2022 13:19:07 by
1.7.2