Beispiel #1
0
static void send_update(size_t pos, char *buf)
{
	uint32_t pressure;
    uint16_t rawtemp, rawhum;
    int temp, hum, temp_abs, hum_abs, pressure_abs;
	uint8_t status;
	tcs37727_data_t light_data;

	hdc1000_read(&th_dev, &rawtemp, &rawhum);
	hdc1000_convert(rawtemp, rawhum,  &temp, &hum);
    temp_abs = temp / 100;
    hum_abs = hum / 100;
    temp -= temp_abs * 100;
    hum -= hum_abs * 100;

	mpl3115a2_read_pressure(&p_dev, &pressure, &status);
    pressure_abs = pressure / 100000;
    pressure -= pressure_abs * 100000;
	//mpl3115a2_read_temp(&p_dev, &temp);

	tcs37727_read(&light_dev, &light_data);

    pos += sprintf(&buf[pos], "{\"n\":\"s:temp\", \"u\":\"°C\", \"v\":\"%2i.%03i\"},",
                   temp_abs, temp);
    pos += sprintf(&buf[pos], "{\"n\":\"s:hum\", \"u\":\"%%RH\", \"v\":\"%2i.%03i\"},",
                   hum_abs, hum);
    pos += sprintf(&buf[pos], "{\"n\":\"s:pres\", \"u\":\"bar\", \"v\":\"%2i.%03i\"},",
                   pressure_abs, (unsigned int) pressure);
    pos += sprintf(&buf[pos], "{\"n\":\"s:rgb\", \"u\":\"RGB\", \"v\":\"[%"PRIu32", %"PRIu32", %"PRIu32"]\"}]",
                   light_data.red, light_data.green, light_data.blue);

    hdc1000_startmeasure(&th_dev);

    send_coap_post((uint8_t *)buf, pos);
}
Beispiel #2
0
int main(void)
{
    puts("MPL3115A2 pressure sensor driver test application\n");
    printf("Initializing MPL3115A2 sensor at I2C_%i... ", mpl3115a2_params[0].i2c);

    if (mpl3115a2_init(&dev, &mpl3115a2_params[0]) != MPL3115A2_OK) {
        puts("[FAILED] init device!");
        return 1;
    }

    if (mpl3115a2_set_active(&dev) != MPL3115A2_OK) {
        puts("[FAILED] activate measurement!");
        return 2;
    }
    puts("[SUCCESS]");

    while (1) {
        uint32_t pressure;
        int16_t temp;
        uint8_t status;
        xtimer_usleep(SLEEP);
        if ((mpl3115a2_read_pressure(&dev, &pressure, &status) |
             mpl3115a2_read_temp(&dev, &temp)) != MPL3115A2_OK) {
            puts("[FAILED] read values!");
        }
        else {
            printf("Pressure: %u Pa, Temperature: %3d.%d C, State: %#02x\n",
                   (unsigned int)pressure, temp/10, abs(temp%10), status);
        }
    }

    return 0;
}