SensorFusion::SensorFusion() : mSensorDevice(SensorDevice::getInstance()), mEnabled(false), mGyroTime(0) { sensor_t const* list; Sensor uncalibratedGyro; ssize_t count = mSensorDevice.getSensorList(&list); if (count > 0) { for (size_t i=0 ; i<size_t(count) ; i++) { if (list[i].type == SENSOR_TYPE_ACCELEROMETER) { mAcc = Sensor(list + i); } if (list[i].type == SENSOR_TYPE_MAGNETIC_FIELD) { mMag = Sensor(list + i); } if (list[i].type == SENSOR_TYPE_GYROSCOPE) { mGyro = Sensor(list + i); } if (list[i].type == SENSOR_TYPE_GYROSCOPE_UNCALIBRATED) { uncalibratedGyro = Sensor(list + i); } } // Use the uncalibrated gyroscope for sensor fusion when available if (uncalibratedGyro.getType() == SENSOR_TYPE_GYROSCOPE_UNCALIBRATED) { mGyro = uncalibratedGyro; } // 200 Hz for gyro events is a good compromise between precision // and power/cpu usage. mEstimatedGyroRate = 200; mTargetDelayNs = 1000000000LL/mEstimatedGyroRate; mFusion.init(); } }
void GUIServer::getAllSensors() { //errorcode 0 m_UdpServer.write((uint8_t) 0); //num of sensors m_UdpServer.write((uint8_t) __aquaduino->getNrOfSensors()); //Serial.println("NrOfSensors()"); // Serial.println(__aquaduino->getNrOfSensors()); //sensor information Sensor* sensor; __aquaduino->resetSensorIterator(); while (__aquaduino->getNextSensor(&sensor) != -1) { m_UdpServer.write(__aquaduino->getSensorID(sensor)); //Name:String m_UdpServer.write(strlen(sensor->getName())); m_UdpServer.write(sensor->getName()); //Type:int m_UdpServer.write(sensor->getType()); //Unit:String m_UdpServer.write((uint8_t) 8); m_UdpServer.write("TestUnit"); //visible:Boolean m_UdpServer.write(true); //calibrationInterval(days):int m_UdpServer.write((uint8_t) 0); } }
/** * \brief Returns the value of the digital input * * \returns 1 if input is HIGH or 0 if input is LOW. */ double SerialAtlasEC::read() { Sensor* sensor; // Serial.println("EC"); // Serial.println(actualEC); // init Sensor if (initCounter < 10000) initCounter++; if (initCounter == 10000) { __aquaduino->resetSensorIterator(); while (__aquaduino->getNextSensor(&sensor) != -1) { if (sensor->getType() == SENSOR_DS18S20) { tempSensorID=__aquaduino->getSensorID(sensor); } } Serial1.print("25.00,C\r"); Serial.println("EC set to send continuous data"); initCounter++; } //set Temperature every Minute if (minute() != curMin) { curMin = minute(); Serial.print(__aquaduino->getSensorValue(tempSensorID)); Serial.println((" Set new Temperature to EC")); Serial1.print(__aquaduino->getSensorValue(tempSensorID)); Serial1.print(",C\r"); } return actualEC; }
// get the type of this feature int getType() { return sensor->getType(); }