This commit is contained in:
2025-10-15 00:02:22 +03:00
commit 76caee16da
593 changed files with 33407 additions and 0 deletions

View 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')())

View File

@@ -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

View File

@@ -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

View File

@@ -0,0 +1,3 @@
[console_scripts]
arduino_bridge = arduino_bridge.arduino_bridge:main

View File

@@ -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()