   // **************** FOR GROVE SENSOR ****************
   pinMode(8, INPUT);
   pinMode(13, OUTPUT);
+  grove_start_time=millis();
 
   // **************** FOR MQ7 SENSOR ****************
   pinMode(CO_PWR_SEL_PIN, OUTPUT);

  // **************** SENSOR READING STAMP TIME ****************
  now = rtc.now();

  // **************** FOR SHARP SENSOR ****************
  digitalWrite(SHARP_LED_PIN, LOW); // power on the LED
  delay(SHARP_DELAY_TIME);  // wait 280ms
  sharp_dust_val = analogRead(SHARP_READ_PIN); // read the dust value via pin 5 on the sensor
  digitalWrite(SHARP_LED_PIN, HIGH); // turn the LED off
  sharp_voltage = sharp_dust_val*4.9/1024;   // convert to voltage
  sharp_voltage = (sharp_voltage - 0.0356) * 120000; // convert to particles / .01 ft^3
  if( sharp_voltage < 0 )
    sharp_voltage = 0;

  // **************** FOR GROVE SENSOR ****************
  ratio = lowpulseoccupancy / (grove_sample_time*10.0);  // Integer percentage 0=>100
  // using spec sheet curve, gives particles per 0.01 cubic foot
  concentration = 1.1*pow(ratio, 3) - 3.8*pow(ratio, 2) + 520 * ratio + 0.62;
  lowpulseoccupancy = 0;  // reset


  // **************** FOR MQ7 SENSOR ****************
    if (millis() > CO_switch_time) {         // time to switch
      if (heaterInHighPhase) { 
        digitalWrite(CO_PWR_SEL_PIN, HIGH);  // 1.4v phase
        heaterInHighPhase = false;
        CO_switch_time = millis() + CO_READ_TIME;
      } else {                               // switch to 5V phase
        digitalWrite(CO_PWR_SEL_PIN, LOW);   // 5v phase
        heaterInHighPhase = true;
        CO_switch_time = millis() + CO_HEAT_TIME;

  // **************** FOR GROVE SENSOR ****************
  // continuous reading
  grove_duration = pulseIn(GROVE_READ_PIN, LOW);
  lowpulseoccupancy += grove_duration;
  grove_stop_time=millis();  
  
  // **************** FOR MQ7 SENSOR ****************
  // nothing

