Skip to content

Commit 8be7360

Browse files
committed
added publishers for voltage sense, current sense, and internal temp
1 parent b1b8198 commit 8be7360

File tree

1 file changed

+53
-7
lines changed

1 file changed

+53
-7
lines changed

pio_workspace/src/power_main.cpp

Lines changed: 53 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
#include <std_msgs/msg/int16_multi_array.h>
1111
#include <std_msgs/msg/float32.h>
12+
#include <std_msgs/msg/float32_multi_array.h>
1213

1314
#define LED_PIN 13
1415

@@ -22,41 +23,86 @@ void propulsion_microseconds_callback(const void *msgin) {
2223
}
2324
}
2425

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-
3126
Subscriber propulsion_microseconds_subscriber = micro_ros.createSubscriber(
3227
"/propulsion/microseconds",
3328
ROSIDL_GET_MSG_TYPE_SUPPORT(std_msgs, msg, Int16MultiArray),
3429
propulsion_microseconds_callback);
3530

3631
std_msgs__msg__Int16MultiArray propulsion_microseconds_msg;
3732

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+
3857
TMP36 temperatureSensor(23, 3.3);
58+
ADCSensors adcSensors;
3959

4060
void power_setup() {
4161
pinMode(LED_PIN, OUTPUT);
4262
digitalWrite(LED_PIN, HIGH);
43-
63+
4464
initThrusters();
4565

4666
// init all messages
4767
power_board_temperature_msg.data = 0.0;
4868

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+
4979
propulsion_microseconds_msg.data.data = (int16_t *)malloc(8 * sizeof(int16_t));
5080
propulsion_microseconds_msg.data.size = 8;
5181
propulsion_microseconds_msg.data.capacity = 8;
5282

5383
temperatureSensor.begin();
84+
adcSensors.begin(true, true, &Wire1);
5485
}
5586

5687
void power_loop() {
5788
power_board_temperature_msg.data = temperatureSensor.readTemperature();
5889
power_board_temprature_publisher.publish(&power_board_temperature_msg);
5990

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+
60106
updateThrusters(microseconds);
61107

62108
micro_ros.spin();

0 commit comments

Comments
 (0)