Adding a neopixel light control node
parent
2b9dffcdb1
commit
3e43bfc16b
@ -0,0 +1,55 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import random
|
||||||
|
import rospy
|
||||||
|
from simple_example.msg import Neopixel, Neopixels
|
||||||
|
|
||||||
|
COLORS = {
|
||||||
|
"red": Neopixel(r=255, b=0, g=0, w=0),
|
||||||
|
"blue": Neopixel(r=125, b=204, g=223, w=0),
|
||||||
|
"yellow": Neopixel(r=120, b=153, g=23, w=0),
|
||||||
|
"purple": Neopixel(r=255, b=0, g=153, w=0),
|
||||||
|
}
|
||||||
|
|
||||||
|
last_color = Neopixel()
|
||||||
|
|
||||||
|
msg = """
|
||||||
|
Starting Light Control.
|
||||||
|
|
||||||
|
This example is intended to work with a esp32 connected
|
||||||
|
with via usb uart. It is listening for stdin lines of
|
||||||
|
this format:
|
||||||
|
|
||||||
|
"<pixel number: int>,<red: int>,<blue int>,<green: int>;\n"
|
||||||
|
------------------------------------------------------------
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
def broadcaster():
|
||||||
|
|
||||||
|
pub = rospy.Publisher("/neopixel", Neopixels, queue_size=1)
|
||||||
|
rospy.init_node("light_control", anonymous=True, log_level=rospy.INFO)
|
||||||
|
|
||||||
|
print(msg)
|
||||||
|
|
||||||
|
while not rospy.is_shutdown():
|
||||||
|
neo_pixel = pick_color()
|
||||||
|
pub.publish(Neopixel(pixels=[neo_pixel]))
|
||||||
|
rospy.sleep(2)
|
||||||
|
|
||||||
|
|
||||||
|
def pick_color():
|
||||||
|
"""Picks a random color from the color map"""
|
||||||
|
global last_color
|
||||||
|
|
||||||
|
color = random.choice(list(COLORS.keys()))
|
||||||
|
while last_color == color:
|
||||||
|
color = random.choice(list(COLORS.keys()))
|
||||||
|
rospy.loginfo(f"Selected: {color}")
|
||||||
|
return COLORS[color]
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
try:
|
||||||
|
broadcaster()
|
||||||
|
except rospy.ROSInterruptException:
|
||||||
|
pass
|
Loading…
Reference in New Issue