void log_printf(const char* text, ...) { char tmp[500]; va_list args; va_start(args,text); vsnprintf(tmp,500,text,args); va_end(args); if(sd_card_available == 0) { return; } char line[500]; uint32_t millis = get_systick() / 10; uint32_t seconds = millis / 1000; uint32_t fract = millis-(seconds*1000); snprintf(line,500,"[%5lu.%03lu] %s",seconds,fract,tmp); unsigned int len = strlen(line); unsigned int bw=0; unsigned int result = f_write(&file, line, len, &bw); if(result != 0) { led_fastBlink(LED_SDCARD); sd_card_available = 0; return; } if(bw != len) { led_fastBlink(LED_SDCARD); sd_card_available = 0; return; } /* result = f_sync(&file); if(result != 0) { led_fastBlink(LED_SDCARD); sd_card_available = 0; return; } */ }
void app_bitman() { char data[16]; decode_left2right("0098e41f1fe49800", data); decode_left2right("0884e43e3ee48408", data + 8); const struct Frame fr[BITMAN_MAX_PTN] = { { { 0x08, 0x84, 0xE4, 0x1E, 0x1E, 0xE4, 0x84, 0x08 }, 400 } , { { 0x00, 0x98, 0xE4, 0x1F, 0x1F, 0xE4, 0x98, 0x00 }, 600 } , { { 0x08, 0x84, 0xE4, 0x1E, 0x1E, 0xE4, 0x84, 0x08 }, 600 } , { { 0x00, 0x98, 0xE4, 0x1F, 0x1F, 0xE4, 0x98, 0x00 }, 600 } , { { 0x00, 0x84, 0xE4, 0x14, 0x1E, 0xEE, 0x84, 0x08 }, 400 } , { { 0x00, 0x42, 0x72, 0x14, 0x1E, 0xFE, 0x84, 0x18 }, 200 } , { { 0x06, 0x04, 0x04, 0x09, 0x1E, 0xEC, 0x8E, 0x36 }, 200 } , { { 0x06, 0x64, 0x24, 0x3D, 0x0D, 0x7E, 0x0C, 0x0C }, 200 } , { { 0x66, 0x24, 0x24, 0x18, 0x99, 0x7E, 0x18, 0x00 }, 400 } , { { 0x66, 0x24, 0x24, 0x5A, 0x5A, 0x3C, 0x18, 0x18 }, 600 } , { { 0x66, 0x24, 0x24, 0x18, 0x99, 0x7E, 0x18, 0x00 }, 600 } , { { 0x66, 0x24, 0x24, 0x5A, 0x5A, 0x3C, 0x18, 0x18 }, 600 } , { { 0x66, 0x24, 0x24, 0x18, 0xB0, 0x7E, 0x30, 0x00 }, 400 } , { { 0x60, 0x26, 0x24, 0xBC, 0xB0, 0x78, 0x36, 0x00 }, 200 } , { { 0x60, 0x20, 0xA0, 0x90, 0x78, 0xF7, 0xD1, 0x08 }, 200 } , { { 0x00, 0x22, 0x2E, 0x28, 0xF8, 0xFF, 0x21, 0x18 }, 200 } , { { 0x10, 0x21, 0x27, 0x78, 0x78, 0x27, 0x21, 0x10 }, 400 } , { { 0x00, 0x19, 0x27, 0xF8, 0xF8, 0x27, 0x19, 0x00 }, 600 } , { { 0x10, 0x21, 0x27, 0x78, 0x78, 0x27, 0x21, 0x10 }, 600 } , { { 0x00, 0x19, 0x27, 0xF8, 0xF8, 0x27, 0x19, 0x00 }, 600 } , { { 0x10, 0x21, 0x77, 0x78, 0x28, 0x27, 0x21, 0x00 }, 400 } , { { 0x18, 0x21, 0x7F, 0x78, 0x28, 0x4E, 0x42, 0x00 }, 200 } , { { 0x6C, 0x71, 0x37, 0x78, 0x90, 0x20, 0x20, 0x60 }, 200 } , { { 0x30, 0x30, 0x7E, 0xB0, 0xBC, 0x24, 0x26, 0x60 }, 200 } , { { 0x00, 0x18, 0x7E, 0x99, 0x18, 0x24, 0x24, 0x66 }, 400 } , { { 0x18, 0x18, 0x3C, 0x5A, 0x5A, 0x24, 0x24, 0x66 }, 600 } , { { 0x00, 0x18, 0x7E, 0x99, 0x18, 0x24, 0x24, 0x66 }, 600 } , { { 0x18, 0x18, 0x3C, 0x5A, 0x5A, 0x24, 0x24, 0x66 }, 600 } , { { 0x00, 0x0C, 0x7E, 0x0D, 0x18, 0x24, 0x24, 0x66 }, 400 } , { { 0x00, 0x6C, 0x1E, 0x0D, 0x3D, 0x24, 0x64, 0x06 }, 200 } , { { 0x10, 0x8B, 0xEF, 0x1E, 0x09, 0x05, 0x04, 0x06 }, 200 } , { { 0x18, 0x84, 0xFF, 0x1F, 0x14, 0x74, 0x44, 0x00 }, 200 } }; // int ptn = 0; int exit_triger = 0; int exit_count = 0; int nframe = 0; // 実行中のフレーム番号 int cnt = 0; // RUN時のwaitカウンタ set_matrix(data); playMML("CDE2CDE2"); // Bitman_Title added by 後田浩さん Thanks ! for (;;) { FILL("191A3C5898242466"); // title FLUSH(); if (ux_btn()) break; } set_systick(0); for (;;) { WAIT(10); if (!ux_state()) break; if (get_systick() > 10000) return; } // end_of_Bitman_Title playMML("C16"); set_systick(0); set_matrix(fr[nframe].frame); for (;;) { WAIT(1); cnt++; if (cnt >= fr[nframe].waitms) { // 待ち時間を過ぎたら cnt = 0; playMML("<C16"); // 次に接続されているマトリクスに送るデータ xprintf("MATLED SHOW "); for (int j = 0 ; j < 8 ; j++) xprintf("%02X", fr[nframe].frame[j]); xprintf("\n"); // 次のフレームに切り替え nframe++; if (nframe == BITMAN_MAX_PTN || fr[nframe].waitms == 0) nframe = 0; // ループして最初から set_matrix(fr[nframe].frame); } if (ux_state()) { // ボタンが押されていたら if (exit_count == 1) return; if (exit_triger == get_systick()) exit_count++; if (exit_triger == 0) { playMML("C16"); exit_triger = get_systick(); no_sleep(); } } if (!ux_state()) { // ボタンが離されていたら exit_triger = 0; } if (get_systick() > 10000) set_systick(0); } }