9
9
10
10
#include < std_msgs/msg/int16_multi_array.h>
11
11
#include < std_msgs/msg/float32.h>
12
+ #include < std_msgs/msg/float32_multi_array.h>
12
13
13
14
#define LED_PIN 13
14
15
@@ -22,41 +23,86 @@ void propulsion_microseconds_callback(const void *msgin) {
22
23
}
23
24
}
24
25
25
- Publisher power_board_temprature_publisher = micro_ros.createPublisher(
26
- " /power/board/temperature" ,
27
- ROSIDL_GET_MSG_TYPE_SUPPORT (std_msgs, msg, Float32));
28
-
29
- std_msgs__msg__Float32 power_board_temperature_msg;
30
-
31
26
Subscriber propulsion_microseconds_subscriber = micro_ros.createSubscriber(
32
27
" /propulsion/microseconds" ,
33
28
ROSIDL_GET_MSG_TYPE_SUPPORT (std_msgs, msg, Int16MultiArray),
34
29
propulsion_microseconds_callback);
35
30
36
31
std_msgs__msg__Int16MultiArray propulsion_microseconds_msg;
37
32
33
+ Publisher power_thrusters_current_publisher = micro_ros.createPublisher(
34
+ " /power/thrusters/current" ,
35
+ ROSIDL_GET_MSG_TYPE_SUPPORT (std_msgs, msg, Float32MultiArray));
36
+
37
+ std_msgs__msg__Float32MultiArray power_thrusters_current_msg;
38
+
39
+ Publisher power_batteries_voltage_publisher = micro_ros.createPublisher(
40
+ " /power/batteries/voltage" ,
41
+ ROSIDL_GET_MSG_TYPE_SUPPORT (std_msgs, msg, Float32MultiArray));
42
+
43
+ std_msgs__msg__Float32MultiArray power_batteries_voltage_msg;
44
+
45
+ Publisher power_board_temprature_publisher = micro_ros.createPublisher(
46
+ " /power/board/temperature" ,
47
+ ROSIDL_GET_MSG_TYPE_SUPPORT (std_msgs, msg, Float32));
48
+
49
+ std_msgs__msg__Float32 power_board_temperature_msg;
50
+
51
+ Publisher power_teensy_temprature_publisher = micro_ros.createPublisher(
52
+ " /power/teensy/temperature" ,
53
+ ROSIDL_GET_MSG_TYPE_SUPPORT (std_msgs, msg, Float32));
54
+
55
+ std_msgs__msg__Float32 power_teensy_temperature_msg;
56
+
38
57
TMP36 temperatureSensor (23 , 3.3 );
58
+ ADCSensors adcSensors;
39
59
40
60
void power_setup () {
41
61
pinMode (LED_PIN, OUTPUT);
42
62
digitalWrite (LED_PIN, HIGH);
43
-
63
+
44
64
initThrusters ();
45
65
46
66
// init all messages
47
67
power_board_temperature_msg.data = 0.0 ;
48
68
69
+ power_teensy_temperature_msg.data = 0.0 ;
70
+
71
+ power_thrusters_current_msg.data .data = (float *)malloc (8 * sizeof (float ));
72
+ propulsion_microseconds_msg.data .size = 8 ;
73
+ propulsion_microseconds_msg.data .capacity = 8 ;
74
+
75
+ power_batteries_voltage_msg.data .data = (float *)malloc (2 * sizeof (float ));
76
+ power_batteries_voltage_msg.data .size = 2 ;
77
+ power_batteries_voltage_msg.data .capacity = 2 ;
78
+
49
79
propulsion_microseconds_msg.data .data = (int16_t *)malloc (8 * sizeof (int16_t ));
50
80
propulsion_microseconds_msg.data .size = 8 ;
51
81
propulsion_microseconds_msg.data .capacity = 8 ;
52
82
53
83
temperatureSensor.begin ();
84
+ adcSensors.begin (true , true , &Wire1);
54
85
}
55
86
56
87
void power_loop () {
57
88
power_board_temperature_msg.data = temperatureSensor.readTemperature ();
58
89
power_board_temprature_publisher.publish (&power_board_temperature_msg);
59
90
91
+ power_teensy_temperature_msg.data = tempmonGetTemp ();
92
+ power_teensy_temprature_publisher.publish (&power_teensy_temperature_msg);
93
+
94
+ float * current_data = adcSensors.senseCurrent ();
95
+ for (size_t i = 0 ; i < 8 ; i++) {
96
+ power_thrusters_current_msg.data .data [i] = current_data[i];
97
+ }
98
+ power_thrusters_current_publisher.publish (&power_thrusters_current_msg);
99
+
100
+ float * voltage_data = adcSensors.senseVoltage ();
101
+ for (size_t i = 0 ; i < 2 ; i++) {
102
+ power_batteries_voltage_msg.data .data [i] = voltage_data[i];
103
+ }
104
+ power_batteries_voltage_publisher.publish (&power_batteries_voltage_msg);
105
+
60
106
updateThrusters (microseconds);
61
107
62
108
micro_ros.spin ();
0 commit comments