[[戻る>TinyArcade]] *30FPSで画面表示 [#kd5cdab5] 30FPSで画面表示するにはmicros()関数を使い時間を取って覚えておき~ 前回の時刻から33333μs(≒33ms)以上経っていたら画面更新する。~ そしてサウンド処理はそれよりも早く処理したいのでloop()関数の最後で毎回処理する。~ FPSの値を変えるとFPSが変わるけど処理落ちが多かったので30にしてます。~ 垂直帰線期間は取得できるのかは不明。どのサンプルも時間を待って更新してた・・・。~ *サンプルプログラム [#ecace97d] #include <TinyScreen.h> static const unsigned long FPS = 30; static const unsigned long INTERVAL_TIME = 1000000 / FPS; TinyScreen tiny_screen = TinyScreen(TinyScreenPlus); unsigned long micros_time; void setup() { tiny_screen.begin(); tiny_screen.setBitDepth(TSBitDepth8); tiny_screen.setBrightness(8); tiny_screen.setFont(liberationSansNarrow_12ptFontInfo); tiny_screen.fontColor(TS_8b_White, TS_8b_Black); micros_time = micros(); } void loop() { unsigned long interval_time = micros() - micros_time; if(interval_time > INTERVAL_TIME) { // 33ms間隔で行う処理 (画面更新、ゲーム進行など) To do : Processing done at 33 ms intervals, frame update etc char text[128]; tiny_screen.clearScreen(); tiny_screen.setCursor(0, 0); sprintf(text, "FPS %d", 1000000 / interval_time); tiny_screen.print(text); tiny_screen.setCursor(0, 12); sprintf(text, "time %lums", interval_time / 1000); tiny_screen.print(text); micros_time = micros(); } // 最速で行う処理 (サウンド処理など) To do : The fastest process. sound update etc. } *実行結果 [#tf5d1998] #ref(ScreenSample2.jpg,,,100%) 正確に30FPSにはなっていないが大体それっぽい数値になるはず。~ *サンプルプログラムのダウンロード [#j98ae5b5] #ref(ScreenSample2.zip)~