int main(void) { // Create IP connection IPConnection ipcon; ipcon_create(&ipcon); // Create device object AmbientLight al; ambient_light_create(&al, UID, &ipcon); // Connect to brickd if(ipcon_connect(&ipcon, HOST, PORT) < 0) { fprintf(stderr, "Could not connect\n"); return 1; } // Don't use device before ipcon is connected // Get current illuminance (unit is Lux/10) uint16_t illuminance; if(ambient_light_get_illuminance(&al, &illuminance) < 0) { fprintf(stderr, "Could not get illuminance, probably timeout\n"); return 1; } printf("Illuminance: %f Lux\n", illuminance/10.0); printf("Press key to exit\n"); getchar(); ambient_light_destroy(&al); ipcon_destroy(&ipcon); // Calls ipcon_disconnect internally return 0; }
/*---------------------------------------------------------------------- * publishIlluminanceMessage() * Publish the Illuminance message. *--------------------------------------------------------------------*/ void TinkerforgeSensors::publishIlluminanceMessage(SensorDevice *sensor) { if (sensor != NULL) { uint32_t illuminance = 0; // for the conversions look at rep 103 http://www.ros.org/reps/rep-0103.html // for Ambient Light v1 http://www.tinkerforge.com/de/doc/Software/Bricklets/AmbientLight_Bricklet_C.html // for Ambient Light v2 http://www.tinkerforge.com/de/doc/Software/Bricklets/AmbientLightV2_Bricklet_C.html if (sensor->getType() == AMBIENT_LIGHT_DEVICE_IDENTIFIER) { uint16_t ill = 0; // get current illuminance (unit is Lux/10) if(ambient_light_get_illuminance((AmbientLight*)sensor->getDev(), &ill) < 0) { ROS_ERROR_STREAM("Could not get illuminance from " << sensor->getUID() << ", probably timeout"); return; } illuminance = (uint32_t)ill / 10.0; } else if (sensor->getType() == AMBIENT_LIGHT_V2_DEVICE_IDENTIFIER) { // get current illuminance (unit is Lux/100) if (ambient_light_v2_get_illuminance((AmbientLightV2*)sensor->getDev(), &illuminance) < 0) { ROS_ERROR_STREAM("Could not get illuminance from " << sensor->getUID() << ", probably timeout"); return; } illuminance = illuminance / 100.0; } else { return; } // generate Illuminance message from Ambient Light sensor sensor_msgs::Illuminance illum_msg; // message header illum_msg.header.seq = sensor->getSeq(); illum_msg.header.stamp = ros::Time::now(); illum_msg.header.frame_id = sensor->getFrame(); illum_msg.illuminance = illuminance; illum_msg.variance = 0; // publish Temperature msg to ros sensor->getPub().publish(illum_msg); } }