#include "Free_Fonts.h" 
#include <TFT_eSPI.h>
#include <SPI.h>       // this is needed for display


// The display also uses hardware SPI, plus #9 & #10
#define TFT_CS 15
#define TFT_DC 2
#define TFT_MOSI 23
#define TFT_SCLK 18

#define ROTATE_PIN  34

float dispTemp = 22.3;

TFT_eSPI tft = TFT_eSPI(); // Invoke custom library with default width and height

void setup(void) {
  tft.begin();
  tft.setRotation(0);

  Serial.begin(115200);
}

void loop() { 

  getRotateEvent();

 }


int rotate_state = 0;
int rotateCounter = 0;
int rotateDebounceTime = 100;
long previousRotateTime = 0;
bool rotateMeasurement = true;

float rpmMeasurement = 0;
float burningCalories = 0;
float burningCaloriesDisplay = 0;
double approximateBurningPerMinutes = 9;


void getRotateEvent()
{
    rotate_state = digitalRead(ROTATE_PIN);

    if (rotate_state == LOW && millis()-previousRotateTime >= rotateDebounceTime && rotateMeasurement)       
    {
      rotateCounter += 1;
      rotateMeasurement = false;

      rpmMeasurement = round(60000/(millis()-previousRotateTime));

      burningCalories = burningCalories + ((rpmMeasurement/60)*approximateBurningPerMinutes)/100;

      previousRotateTime = millis();

      Serial.println(rotateCounter);
      Serial.println(rpmMeasurement);
      Serial.println(burningCalories);
    }

    if (rotate_state == HIGH)
    {
      rotateMeasurement = true;
    }

    
}