Integration of multiple sensors with ROS Serial
Dependencies: mbed HCSR04 VEML7700
Diff: main.cpp
- Revision:
- 3:c23614e6262f
- Parent:
- 2:b847309a754d
- Child:
- 4:69cd9240fd74
--- a/main.cpp Sat Oct 23 07:17:03 2021 +0000 +++ b/main.cpp Sat Oct 23 07:31:18 2021 +0000 @@ -1,9 +1,17 @@ #include <ros.h> #include <std_msgs/Float32.h> #include <std_msgs/String.h> +#include <std_msgs/Int16.h> #include "SHARPIR.h" #include "hcsr04.h" +#include "VEML7700.h" +#ifndef MSU_VEML7700_I2C_ADDRESS +#define MSU_VEML7700_I2C_ADDRESS 0x10 +#endif + +#define PIN_SCL D15 +#define PIN_SDA D14 //Sharp IR sensor analog pin defination SHARPIR Sensor(A0); @@ -14,7 +22,6 @@ ros::NodeHandle nh; - //SharpIR publisher initialization std_msgs::Float32 data_ir; ros::Publisher sharpir("sharpir", &data_ir); @@ -23,27 +30,46 @@ std_msgs::String data_ul; ros::Publisher ultrasonic("ultrasonic", &data_ul); +//Ambient Light sensor publisher initialization +std_msgs::Int16 data_als; +ros::Publisher ALS("ALS", &data_als); + +VEML7700 *veml7700 = 0 ; + int main() { float DistanceCM; //Variable to store distance in CM from SharpIR sensor char buffer[50]; // buffer for Ultrasonic sensor values + //Initialization of Ambient light sensor + uint16_t als ; + veml7700 = new VEML7700(PIN_SDA, PIN_SCL, MSU_VEML7700_I2C_ADDRESS) ; + veml7700->setALSConf(0x0000) ; + veml7700->setPowerSaving(0x0000) ; + //Initalizing and advertising topics nh.initNode(); nh.advertise(sharpir); //SharpIR sensor nh.advertise(ultrasonic); //Ultrasonic Sensor + nh.advertise(ALS); //Ambient Light Sensor while (1) { //creates an eternal loop DistanceCM=Sensor.cm(); //Reading SharpIR sensor value from analog pin + long distance = sensor.distance(); //Reading ultrasonic sensor value sprintf (buffer, "%d", distance); //converting value into string + als = veml7700->getALS(); //Readinng ALS sensor value + data_ir.data = DistanceCM; sharpir.publish( &data_ir ); data_ul.data = buffer; ultrasonic.publish( &data_ul ); + data_als.data = als; + ALS.publish( &data_als ); + nh.spinOnce(); wait_ms(1000); }