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');
}