create relais control node

This commit is contained in:
Sem van der Hoeven
2023-05-17 11:18:44 +02:00
parent fdc15dbe37
commit 7935787cec
4 changed files with 54 additions and 4 deletions

View File

@@ -3,9 +3,10 @@
<package format="3">
<name>relais_control</name>
<version>0.0.0</version>
<description>TODO: Package description</description>
<maintainer email="semmer99@gmail.com">ubuntu</maintainer>
<license>TODO: License declaration</license>
<description>package to control the relais that enables Pixhawk RX and TX communication</description>
<maintainer email="semmer99@gmail.com">ubuntu</maintainer>
<license>Apache License 2.0</license>
<exec_depend>rclpy</exec_depend>
<test_depend>ament_copyright</test_depend>
<test_depend>ament_flake8</test_depend>

View File

@@ -0,0 +1,48 @@
import rclpy
from rclpy.node import Node
try:
import RPi.GPIO as GPIO
except RuntimeError:
print("Error importing RPi.GPIO! This is probably because you need superuser privileges. You can achieve this by using 'sudo' to run your script")
class RelaisController(Node):
def __init(self):
super().__init__('relais_controller')
self.relais1_pin = 17
self.relais2_pin = 27
self.init_gpio()
self.turn_relais_on()
def init_gpio(self):
GPIO.setwarnings(False)
self.get_logger().info(GPIO.RPI_INFO)
GPIO.setmode(GPIO.BCM)
GPIO.setup(self.relais1_pin, GPIO.OUT)
GPIO.setup(self.relais2_pin, GPIO.OUT)
self.get_logger().info("GPIO initialized")
def turn_relais_on(self):
GPIO.output(self.relais1_pin, GPIO.HIGH)
GPIO.output(self.relais2_pin, GPIO.HIGH)
self.get_logger().info("Relais turned on")
def main(args=None):
rclpy.init(args=args)
relais_controller = RelaisController()
relais_controller.spin()
# Destroy the node explicitly
# (optional - otherwise it will be done automatically
# when the garbage collector destroys the node object)
relais_controller.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()

View File

@@ -20,6 +20,7 @@ setup(
tests_require=['pytest'],
entry_points={
'console_scripts': [
'relais_controller = relais_control.relais_controller:main'
],
},
)