S-ROV main board firmware

Dependencies:   mbed pca9685 ros_lib_kinetic ads1015

Committer:
YJ_Kim
Date:
Mon Jan 16 05:24:30 2017 +0000
Revision:
1:2062e7a67afd
Parent:
0:75ecba0f12ed
Child:
2:666847c29d89
change rx/tx port

Who changed what in which revision?

UserRevisionLine numberNew contents of line
YJ_Kim 0:75ecba0f12ed 1 #include "mbed.h"
YJ_Kim 0:75ecba0f12ed 2 #include <ros.h>
YJ_Kim 0:75ecba0f12ed 3 #include <std_msgs/Float32.h>
YJ_Kim 0:75ecba0f12ed 4 #include <pca9685/pca9685.h>
YJ_Kim 0:75ecba0f12ed 5
YJ_Kim 1:2062e7a67afd 6 class NewHardware : public MbedHardware{
YJ_Kim 1:2062e7a67afd 7 public:
YJ_Kim 1:2062e7a67afd 8 NewHardware():MbedHardware(PA_9, PA_10, 57600){};
YJ_Kim 1:2062e7a67afd 9 };
YJ_Kim 1:2062e7a67afd 10 ros::NodeHandle_<NewHardware> nh;
YJ_Kim 1:2062e7a67afd 11
YJ_Kim 0:75ecba0f12ed 12 I2C i2c(PB_11, PB_10); // sda, scl
YJ_Kim 0:75ecba0f12ed 13 PCA9685 pwm(0x40, i2c, 50);
YJ_Kim 0:75ecba0f12ed 14
YJ_Kim 0:75ecba0f12ed 15 void messageCb(const std_msgs::Float32& angle){
YJ_Kim 0:75ecba0f12ed 16 pwm.set_servo_angle(CH_6, angle.data);
YJ_Kim 0:75ecba0f12ed 17 }
YJ_Kim 0:75ecba0f12ed 18
YJ_Kim 0:75ecba0f12ed 19 ros::Subscriber<std_msgs::Float32> sub("servo", &messageCb);
YJ_Kim 0:75ecba0f12ed 20
YJ_Kim 0:75ecba0f12ed 21 int main() {
YJ_Kim 0:75ecba0f12ed 22 nh.initNode();
YJ_Kim 0:75ecba0f12ed 23 nh.subscribe(sub);
YJ_Kim 0:75ecba0f12ed 24 pwm.init();
YJ_Kim 0:75ecba0f12ed 25
YJ_Kim 0:75ecba0f12ed 26 while (1) {
YJ_Kim 0:75ecba0f12ed 27 nh.spinOnce();
YJ_Kim 0:75ecba0f12ed 28 wait_ms(1);
YJ_Kim 0:75ecba0f12ed 29 }
YJ_Kim 0:75ecba0f12ed 30 }