#define BAT_SAMPLES (8) // vzorky pro průměrování napětí z baterie
#define CAL_ANALOG_PINJ (A3) // Jemne
#define CAL_ANALOG_PIN (A2) // Hrube
#define BAT_ANALOG_PIN (A1)
#define EKG_ANALOG_PIN (A0)
#define COMMAND_BAT ('B') // příkaz pro baterii
#define COMMAND_CAL ('C') // příkaz pro kalibraci
int PIN_NUMBER = 6; // Kalibrační pin
int CAL_VOLTAGE = 50; //  úroveň kalibračního napětí
int BT_PIN = 2; // připojení napáujení BT moudulu
int jemne = 0;
int hrube = 0;
int celkem = 0;

#include <MsTimer2.h>

uint8_t SerialCommand;

void hand(); // hand shake 
void ekg();  // akvizice EKG 

void setup()
{
  pinMode(BT_PIN, OUTPUT);
  delay(1000);
  digitalWrite(BT_PIN,HIGH);
  // put your setup code here, to run once:
  while(!Serial) {}
  Serial.begin(57600);
  analogReference(EXTERNAL);
  pinMode(PIN_NUMBER, OUTPUT);
  hand();
  MsTimer2::set(1,ekg); // fvz! // (ms,void)
  MsTimer2::start();
}

void loop() 
{
  if (Serial.available()) 
  {
      SerialCommand = Serial.read();
  }  
}

void ekg() 
{
  switch (SerialCommand)
  {
    case COMMAND_BAT:
    {
      long int avr = 0;
      for (int i = 0; i < BAT_SAMPLES; i++)
      {
        avr += analogRead(BAT_ANALOG_PIN);
      }

      Serial.println("BATERRY");
      Serial.println(avr/BAT_SAMPLES);
      //Prepocet osy y na grafu
      hrube = analogRead(CAL_ANALOG_PIN); // potenciometr 25k
      jemne = analogRead(CAL_ANALOG_PINJ)/25;// potenciometr 1k
      celkem = hrube + jemne;
      Serial.println(celkem); //celkem
      // konec programu pro prepocet osy
      SerialCommand = 0;     
    } 
    case COMMAND_CAL:
    {
      //analogWrite(PIN_NUMBER,CAL_VOLTAGE);
      //CAL_VOLTAGE = 0;
      //SerialCommand = 0;
    }
      
    default:
    {
       
       Serial.println(analogRead(EKG_ANALOG_PIN));
   
    }
  } 
} 

void hand() 
{
  
  while(Serial.available() == 0)
  {
    Serial.println("Wait");
    delay(300);
  } 
}
