void loop()

in 02_Firmware/windturbine/windturbine.ino [95:190]


void loop() {
  if (errorCode != 0 ) {
    // keep sending the error signal
    Serial.print("Invalid Intialization. Please fix that and restart. Code: ");
    Serial.println(errorCode);
    delay(3000);
    return;
  } // if

  // read command from host
  if (Serial.available()) {
    int counter = 0;
    while (Serial.available()) {
      char b = Serial.read();
      if ( counter == 0 ) userCommand[0] = b;
      ++counter; // ignore the rest of the characters
    } // while    
  } // if

  bool has_new_data = false;
  if (millis() - last_mpu_check > MPU_CHECK_INTERVAL_MS ) {
    // read a packet from FIFO
    if (mpu.dmpGetCurrentFIFOPacket(fifoBuffer)) {
        // read a packet from FIFO
        mpu.dmpGetQuaternion(&q, fifoBuffer);
        mpu.dmpGetAccel(&aa, fifoBuffer);    
        mpu.dmpGetGravity(&gravity, &q);    
        currTemp = float(mpu.getTemperature())/340.0 + 36.53;
        last_mpu_check = millis();
        has_new_data = true;
    } // if
  } // if
      
  voltage = analogRead(VOLTAGE_PIN);
  int rot_status = digitalRead(LIGHT_PIN);
  int wind_speed_status = digitalRead(LIGHT_WIND_SPEED_PIN);

  if (prev_wind_speed_status != wind_speed_status && wind_speed_status == 0 ) {
    wind_speed_rotation_counter += 1;
  } // if
  prev_wind_speed_status = wind_speed_status;
  
  if (prev_rot_status != rot_status && rot_status == 0 ) {
    rotation_counter += 1;
  } // if
  prev_rot_status = rot_status;
  
  if ( millis() - last_rot_check > ROTATION_CHECK_INTERVAL_MS ) {
    rps = float(rotation_counter) / 16;
    wind_speed_rps = float(wind_speed_rotation_counter) / 16;
    wind_speed_rotation_counter = 0;
    rotation_counter = 0;
    last_rot_check = millis();
    has_new_data = true;
  }

  if (millis() - last_bme_check > BME_CHECK_INTERVAL_MS && bme.remainingReadingMillis() == -1) {
    last_bme_check = millis();
    bme.beginReading();    
  }

  if (bme.remainingReadingMillis() == 0) {
      bme.endReading();
      temp = bme.temperature;
      pressure = bme.pressure / 100.0;
      humidity = bme.humidity;
      gas = bme.gas_resistance / 1000.0;
      has_new_data = true;
  }

  if (!has_new_data) return;
  
  Serial.print(millis()); Serial.print(',');
  Serial.print(freeMemory()); Serial.print(',');

  Serial.print(rps);Serial.print(',');
  Serial.print(wind_speed_rps);Serial.print(',');
  Serial.print(voltage);Serial.print(',');
  Serial.print(q.w); Serial.print(',');
  Serial.print(q.x); Serial.print(',');
  Serial.print(q.y); Serial.print(',');
  Serial.print(q.z); Serial.print(',');
  Serial.print(gravity.x); Serial.print(',');
  Serial.print(gravity.y); Serial.print(',');
  Serial.print(gravity.z); Serial.print(',');
  Serial.print(aa.x); Serial.print(',');
  Serial.print(aa.y); Serial.print(',');
  Serial.print(aa.z); Serial.print(',');
  Serial.print(currTemp); Serial.print(',');  
  Serial.print(temp); Serial.print(',');
  Serial.print(humidity); Serial.print(',');
  Serial.print(pressure); Serial.print(','); 
  Serial.print(gas/100);   
  Serial.print('\n');

}