示例#1
0
void SensorManager::triggerMeasures()
{
	m_sensorPosition->measure();
	m_sensorPressure->measure();

	if ( m_sensorPosition->isNewDataAvailable() ||
		 m_sensorPressure->isNewDataAvailable() )
	{
		m_position = roundData(processPosition(m_sensorPosition->getData()), 0.005);
		m_pressure = roundData(processPressure(m_sensorPressure->getData()), 0.1);

		if (m_direction == INCREASING)
		{
			if (m_position > m_maxPosition)
			{
				m_diffPosition = m_position - m_maxPosition;
				m_maxPosition += m_diffPosition;
				m_sensorData.position += m_diffPosition;
			}

			if (m_position == 0.5)
			{
				m_direction = DECREASING;
			}
		}
		else
		{
			if (m_position == 0.0)
			{
				m_maxPosition = 0.0;
				m_direction = INCREASING;
			}
		}
		m_sensorData.pressure = m_pressure;

		notify();
	}
}
示例#2
0
int main() {
    pc.printf("Starting \r\n");

    setup(); //initializes all hardware sensors

    t.start();
    while(button){
        timeLastPoll = t.read_ms();
        altitude = ps.pressureToAltitudeMeters(ps.readPressureMillibars());
        acc.readFIFO();
        gyr.readFIFO();

        // pc.printf("%d Att: %2.2f \tGyr: %2.2f %2.2f %2.2f \tAcc: %2.2f %2.2f %2.2f \tT: %d\r\n",
        //     iter,
        //     altitude,
        //     gyr.g.x,gyr.g.y,gyr.g.z,
        //     acc.a.x,acc.a.y,acc.a.z,
        //     t.read_ms()-timeLastPoll);

        if (iter != 0){
            calcMotionData(a);
        }
        else{ 
            calcMotionData(1.0);
        }
        r_altitude = roundData(altitude);
        r_incline = roundData(incline);
        r_dist = roundData(tot_dist/50.0);
        r_speed = roundData(speed);

        // pc.printf("%d \t%d \t%d \t%d\r\n",r_altitude,r_incline,r_dist,r_speed);

        fprintf(fp, "%d, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %d, %d, %d \r\n",
            (t.read_ms() - timeLastPoll),
            altitude,
            gyr.g.x,gyr.g.y,gyr.g.z,
            acc.a.x,acc.a.y,acc.a.z,
            incline,tot_dist,speed,
            r_incline,
            r_dist,
            r_speed);

        static unsigned long lastSendTime = millis();
        if (lastSendTime + 250 < millis()) {
            BTModu.sendData(String("x")+packageData2String(r_altitude)+
                packageData2String(r_incline)+
                packageData2String(r_dist)+
                packageData2String(r_speed) );
            lastSendTime += 250;
        }        

        saveLastData();            
        while( (t.read_ms() - timeLastPoll) < MBED_POLLING_PERIOD_MS){
            gled = 0;
        }
        // pc.printf("LT: %d\r\n",t.read_ms()-timeLastPoll);
        gled = 1; iter++;
    }
    fclose(fp);
    pc.printf("File successfully written! \r\n");
    printf("End of Program. \r\n");
}