#include <Wire.h>
#include <TM1650.h>
#include "FS.h"
#include "SPIFFS.h"
size_t TimeTotle =0;
size_t timebegin;
TM1650 d;
File timefile;

TickType_t xLastWakeTime;
  const TickType_t xFrequency = 1000; 
  bool flashdot=true;
  void showtime(char a[4],int dot=1)
{
  char b[4];
  for (size_t i = 0; i < 4; i++)
  {
    b[i]=a[3-i];
    /* code */
  }
  d.displayString(b);
   d.setDot(dot,flashdot);
   flashdot=!flashdot;
      
}
void showtime(double second)
{
   char bb[4];
  int a=second;
  int b=a%3600;
  b=b*10/3600;
  bb[0]=String(b).charAt(0);
  int c=a/3600;
  b=c%10;
  bb[1]=String(b).charAt(0);
  c=c/10;
  b=c%10;
  bb[2]=String(b).charAt(0);
  c=c/10;
  b=c%10;
  bb[3]=String(b).charAt(0);

   

  d.displayString(bb);
   d.setDot(1,flashdot);
   flashdot=!flashdot;
  //Serial.println(bb);

}
int iiii=10;
void setup() 
{
  pinMode(34,INPUT);
  pinMode(4,INPUT_PULLUP);
  timebegin=millis();
   
    bool ok = SPIFFS.begin();
    if(!ok)
    {
          SPIFFS.format();
          ok = SPIFFS.begin();

    }
  
  bool exist = SPIFFS.exists("/time.txt");
  if (exist)
      {
            // Serial.println("The file exists!");

            File f = SPIFFS.open("/time.txt", "r");
            if (!f)
            {
                // 在打弢�过程中出现问题f就会为空
                // Serial.println("Some thing went wrong trying to open the file...");
            }
            else
            {
                int s = f.size();
                // Serial.printf("Size=%d\r\n", s);

                //读取index.html的文本内宄1�7
                String data = f.readString();
                TimeTotle=data.toInt();
                // Serial.println(data);

                //关闭文件
                f.close();
            }
        }
        else
        {
            // Serial.println("No such file found.");
        }
  Wire.setPins(26,25);
  Wire.begin(); //Join the bus as master

  Serial.begin(115200); //Start serial communication at 9600 for debug statements
  Serial.println("TM1650 Example Code");
  d.init();
  xLastWakeTime = xTaskGetTickCount();
      size_t timenow=millis();
    if (TimeTotle<999.8*3600)
    {
          TimeTotle=TimeTotle+(timenow-timebegin);
          timebegin=timenow;
    }
        showtime(TimeTotle*1.0/1000);
   
}

void loop() 
{

  //Serial.println(digitalRead(4));

    vTaskDelayUntil(&xLastWakeTime, xFrequency);

    if (/* condition */digitalRead(4)==0)
    {
      Serial.println("you have put the butten reset");
      iiii--;
      
      if (iiii==0)
      {           TimeTotle=0;
                  timefile= SPIFFS.open("/time.txt", "w");
                  timefile.println(TimeTotle);
                  timefile.flush();
                  timefile.close();
        /* code */
      }
      
      /* code */
    }else
    {
      iiii=10;
    }
    
    //Serial.println("TM1650 Example Code");
   // showtime("4000",1);
  //  delay(2000);
    //showtime("8000",2);
    //delay(2000);
    size_t timenow=millis();
    if (TimeTotle<999.8*3600)
    {
          TimeTotle=TimeTotle+(timenow-timebegin);
          timebegin=timenow;
    }
    

    int a=digitalRead(34);
    if (a!=0)
    {
          timefile= SPIFFS.open("/time.txt", "w");
    timefile.println(TimeTotle);
    timefile.flush();
    timefile.close();
      /* code */
    }
    else{
      showtime(0.0);
      delay(10000);
    }
    

    Serial.println(String(TimeTotle*1.0/1000));
    showtime(TimeTotle*1.0/1000);
   // delay(1000);
    timefile.close();

  
}