10秒間数えて±1秒、つまり9秒~11秒なら合格でそれ以外の記録なら不合格というゲームです。

有機ELのSSD13331と一般的なタクトスイッチを使用しました。

プログラムは以下の通りです。

 

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1331.h>
#include <SPI.h>

#define sclk 13
#define mosi 11
#define cs   10
#define rst  9
#define dc   8

// Color definitions
#define  BLACK           0x0000
#define  RED             0xF800

Adafruit_SSD1331 display = Adafruit_SSD1331(&SPI, cs, dc, rst);

//STOPWATCHのための変数定義
unsigned long time_mil; //変数定義
unsigned long time_mic; //変数定義
unsigned long time_1; //変数定義
int mode_flg = 0;   //フラグでモードを設定
float count_s;      //計算した秒数

void setup(void) {
  pinMode(2,INPUT_PULLUP);//スイッチの番号とプルップ設定
   
  display.begin();    //ディスプレイの開始

  display.fillScreen(BLACK);
  display.setCursor(20,20);
  display.setTextSize(2);
  display.print("PUSH");

}

void loop() {
  time_mil = millis(); //millis()関数の戻り値を変数に格納

      //フラグが0でボタンが押されたらSTART
     if(digitalRead(2) == LOW  && mode_flg == 0){
  
     time_1 =millis(); //STARTの時間というか時刻を代入
     
        display.fillScreen(BLACK);
        display.setTextSize(2);
        display.setTextColor(RED);
        display.setCursor(20,20);
        display.print("????");
        
     mode_flg =1;//フラグを1にする
     
    delay(300);     
     }


  //2回目はSTOP、フラグを1で押されたとき  
 if(digitalRead(2) == LOW  && mode_flg == 1){
    
        time_mil =  millis()- time_1; //STARTからの時間を計算
        count_s = (float)time_mil/1000; //秒に表示するために行う計算  
       
    if(count_s >= 9 && count_s <= 11){
        //合格の時
        display.fillScreen(BLACK);
        display.setTextSize(2);
        display.setTextColor(RED);
        display.setCursor(10,10);
        display.print("GOOD!!");
         display.setCursor(10,35);
          display.print(count_s);
        
      }else
        {
          //不合格のとき
           display.fillScreen(BLACK);
           display.setTextSize(2);
          display.setTextColor(RED);
          display.setCursor(10,10);
          display.print("NO GOOD");
           display.setCursor(10,35);
          display.print(count_s);
      }
    
    mode_flg =0;  //フラグを戻す
     
    delay(3000);
   

   //最初の画面にする
  display.fillScreen(BLACK);
  display.setCursor(20,20);
  display.setTextSize(2);
  display.setTextColor(0xffffff);
  display.print("PUSH");
  
     }

}