How to control the LED using analog sensor?
I am using an analog sensor to control the LED. I have modified two example codes (IR range sensor and blink tutorials) in rosserial/Arduino/tutorials to build the control system. the code i did was shown below. How can i get the publisher value and use it in my "If" statement. my objective is to glow the LED when analog sensor output is greater than 700
#include <ros.h>
#include <ros/time.h>
#include <sensor_msgs/Range.h>
#include <std_msgs/Empty.h>
ros::NodeHandle nh;
void messageCb( const sensor_msgs::Range& range_msg)
{
if (range_msg >= 700) {
digitalWrite(13, HIGH-digitalRead(13)); // blink the led
}
else {
digitalWrite(13, LOW-digitalRead(13));
}
}
ros::Subscriber<sensor_msgs::Range> sub("range_data", &messageCb );
sensor_msgs::Range range_msg;
ros::Publisher pub_range( "range_data", &range_msg);
const int analog_pin = 0;
unsigned long range_timer;
float getRange(int pin_num){
int sample;
sample = analogRead(pin_num);
return (sample);
}
char frameid[] = "/ir_ranger";
void setup()
{
pinMode(13, OUTPUT);
nh.initNode();
nh.subscribe(sub);
nh.initNode();
nh.advertise(pub_range);
}
void loop()
{
range_msg.range = getRange(analog_pin);
range_msg.header.stamp = nh.now();
pub_range.publish(&range_msg);
range_timer = millis() + 50;
nh.spinOnce();
}