mirror of
https://github.com/modelec/modelec-marcel-ROS.git
synced 2026-01-19 00:57:37 +01:00
Add PCA9685 clear publisher and update button handling in game controller
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include <rclcpp/publisher.hpp>
|
||||
#include <std_msgs/msg/string.hpp>
|
||||
#include <std_msgs/msg/empty.hpp>
|
||||
#include <rclcpp/rclcpp.hpp>
|
||||
#include <sensor_msgs/msg/joy.hpp>
|
||||
#include <modelec_interface/msg/servo_mode.hpp>
|
||||
@@ -27,6 +29,7 @@ namespace Modelec {
|
||||
rclcpp::Subscription<sensor_msgs::msg::Joy>::SharedPtr subscription_;
|
||||
rclcpp::Publisher<ServoMode>::SharedPtr servo_publisher_;
|
||||
rclcpp::Publisher<std_msgs::msg::String>::SharedPtr arduino_publisher_;
|
||||
rclcpp::Publisher<std_msgs::msg::Empty>::SharedPtr clear_pca_publisher_;
|
||||
|
||||
void CheckButton(const sensor_msgs::msg::Joy::SharedPtr msg);
|
||||
void CheckAxis(const sensor_msgs::msg::Joy::SharedPtr msg);
|
||||
@@ -36,7 +39,7 @@ namespace Modelec {
|
||||
bool button_1_was_pressed = false;
|
||||
bool button_0_was_pressed = false;
|
||||
bool button_9_was_pressed = false;
|
||||
bool button_8_was_pressed = false;
|
||||
bool button_10_was_pressed = false;
|
||||
|
||||
int last_speed = 0;
|
||||
int last_rotation = 0;
|
||||
|
||||
@@ -12,11 +12,14 @@ namespace Modelec {
|
||||
servo_publisher_ = this->create_publisher<ServoMode>("arm_control", 10);
|
||||
|
||||
arduino_publisher_ = this->create_publisher<std_msgs::msg::String>("send_to_arduino", 10);
|
||||
|
||||
clear_pca_publisher_ = this->create_publisher<std_msgs::msg::Empty>("clear_pca9685", 10);
|
||||
}
|
||||
|
||||
void ControllerListener::joy_callback(const sensor_msgs::msg::Joy::SharedPtr msg)
|
||||
{
|
||||
// to check mapping : https://index.ros.org//p/joy/
|
||||
// bon en fait la doc dit de la merde pour voir les bon checker directement en loggant le topic joy
|
||||
CheckButton(msg);
|
||||
CheckAxis(msg);
|
||||
}
|
||||
@@ -94,16 +97,26 @@ namespace Modelec {
|
||||
button_0_was_pressed = false;
|
||||
}
|
||||
|
||||
if (msg->buttons[9] || msg->buttons[10]) {
|
||||
if (button_9_was_pressed || button_8_was_pressed) {
|
||||
if (msg->buttons[9]) {
|
||||
if (button_9_was_pressed) {
|
||||
return;
|
||||
}
|
||||
auto message = std_msgs::msg::String();
|
||||
message.data = "W\n";
|
||||
arduino_publisher_->publish(message);
|
||||
button_9_was_pressed = true;
|
||||
} else {
|
||||
button_9_was_pressed = false;
|
||||
button_8_was_pressed = false;
|
||||
}
|
||||
|
||||
if (msg->buttons[10]) {
|
||||
if (button_10_was_pressed) {
|
||||
return;
|
||||
}
|
||||
clear_pca_publisher_->publish(std_msgs::msg::Empty());
|
||||
button_10_was_pressed = true;
|
||||
} else {
|
||||
button_10_was_pressed = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user