surface
This commit is contained in:
33
ros2_ws/install/arduino_bridge/lib/arduino_bridge/arduino_bridge
Executable file
33
ros2_ws/install/arduino_bridge/lib/arduino_bridge/arduino_bridge
Executable file
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/python3
|
||||
# EASY-INSTALL-ENTRY-SCRIPT: 'arduino-bridge==0.0.0','console_scripts','arduino_bridge'
|
||||
import re
|
||||
import sys
|
||||
|
||||
# for compatibility with easy_install; see #2198
|
||||
__requires__ = 'arduino-bridge==0.0.0'
|
||||
|
||||
try:
|
||||
from importlib.metadata import distribution
|
||||
except ImportError:
|
||||
try:
|
||||
from importlib_metadata import distribution
|
||||
except ImportError:
|
||||
from pkg_resources import load_entry_point
|
||||
|
||||
|
||||
def importlib_load_entry_point(spec, group, name):
|
||||
dist_name, _, _ = spec.partition('==')
|
||||
matches = (
|
||||
entry_point
|
||||
for entry_point in distribution(dist_name).entry_points
|
||||
if entry_point.group == group and entry_point.name == name
|
||||
)
|
||||
return next(matches).load()
|
||||
|
||||
|
||||
globals().setdefault('load_entry_point', importlib_load_entry_point)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(load_entry_point('arduino-bridge==0.0.0', 'console_scripts', 'arduino_bridge')())
|
||||
@@ -0,0 +1,12 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: arduino-bridge
|
||||
Version: 0.0.0
|
||||
Summary: TODO: Package description
|
||||
Home-page: UNKNOWN
|
||||
Maintainer: koray
|
||||
Maintainer-email: koray@todo.todo
|
||||
License: TODO: License declaration
|
||||
Platform: UNKNOWN
|
||||
|
||||
UNKNOWN
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package.xml
|
||||
setup.cfg
|
||||
setup.py
|
||||
../../build/arduino_bridge/arduino_bridge.egg-info/PKG-INFO
|
||||
../../build/arduino_bridge/arduino_bridge.egg-info/SOURCES.txt
|
||||
../../build/arduino_bridge/arduino_bridge.egg-info/dependency_links.txt
|
||||
../../build/arduino_bridge/arduino_bridge.egg-info/entry_points.txt
|
||||
../../build/arduino_bridge/arduino_bridge.egg-info/requires.txt
|
||||
../../build/arduino_bridge/arduino_bridge.egg-info/top_level.txt
|
||||
../../build/arduino_bridge/arduino_bridge.egg-info/zip-safe
|
||||
arduino_bridge/__init__.py
|
||||
arduino_bridge/arduino_bridge.py
|
||||
resource/arduino_bridge
|
||||
test/test_copyright.py
|
||||
test/test_flake8.py
|
||||
test/test_pep257.py
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
[console_scripts]
|
||||
arduino_bridge = arduino_bridge.arduino_bridge:main
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
setuptools
|
||||
@@ -0,0 +1 @@
|
||||
arduino_bridge
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,45 @@
|
||||
import rclpy
|
||||
from rclpy.node import Node
|
||||
from std_msgs.msg import Int32
|
||||
import serial
|
||||
|
||||
class ArduinoBridge(Node):
|
||||
def __init__(self):
|
||||
super().__init__('arduino_bridge')
|
||||
|
||||
self.publisher_ = self.create_publisher(Int32, 'water_level', 10)
|
||||
self.subscription = self.create_subscription(
|
||||
Int32,
|
||||
'servo_angle',
|
||||
self.servo_callback,
|
||||
10)
|
||||
|
||||
self.ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)
|
||||
|
||||
self.create_timer(0.5, self.read_sensor)
|
||||
|
||||
def read_sensor(self):
|
||||
if self.ser.in_waiting > 0:
|
||||
line = self.ser.readline().decode().strip()
|
||||
if line.startswith('WATER:'):
|
||||
level = int(line.split(':')[1])
|
||||
msg = Int32()
|
||||
msg.data = level
|
||||
self.publisher_.publish(msg)
|
||||
self.get_logger().info(f'Water level: {level}')
|
||||
|
||||
def servo_callback(self, msg):
|
||||
angle = str(msg.data) + '\n'
|
||||
self.ser.write(angle.encode())
|
||||
self.get_logger().info(f'Sent servo angle: {msg.data}')
|
||||
|
||||
def main(args=None):
|
||||
rclpy.init(args=args)
|
||||
node = ArduinoBridge()
|
||||
rclpy.spin(node)
|
||||
node.destroy_node()
|
||||
rclpy.shutdown()
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user