from bluedot import BlueDot # color zero can be installed using sudo pip3 install colorzero from colorzero import Color from signal import pause def on(pos): hue = (pos.angle + 180) / 360 c = Color(h=hue, s=1, v=pos.distance) bd.color = c.rgb_bytes def off(): bd.color = "blue" bd = BlueDot() bd.when_pressed = on bd.when_moved = on bd.when_released = off pause()
# Load BlueDot bd = BlueDot() # Follow the direction of circle def dpad(pos): if pos.top: ser.write(("F\n").encode("ascii")) elif pos.bottom: ser.write(("B\n").encode("ascii")) elif pos.left: ser.write(("L\n").encode("ascii")) elif pos.right: ser.write(("R\n").encode("ascii")) # Stop RC car def released(): ser.write(("H\n").encode("ascii")) # Run dpad function bd.when_pressed = dpad bd.when_moved = dpad bd.when_released = released # Activate while connected to application while True: read_serial = ser.readline() print(read_serial)
print("Swiped: up={} down={} left={} right={} speed={}".format(swipe.up, swipe.down, swipe.left, swipe.right, swipe.speed)) def double_presed(pos): print("Double pressed: x={} y={}".format(pos.x, pos.y)) def client_connected(): print("connected callback") def client_disconnected(): print("disconnected callback") dot.when_client_connects = client_connected dot.when_client_disconnects = client_disconnected dot.when_pressed = pressed dot.when_released = released dot.when_moved = moved dot.when_swiped = swiped dot.when_double_pressed = double_presed dot.start() dot.wait_for_press() print("wait for press") dot.wait_for_move() print("wait for move") dot.wait_for_release() print("wait for release") dot.wait_for_double_press() print("wait for double press") dot.wait_for_swipe() print("wait for swipe")
import time from signal import pause import RPi.GPIO as IO bd = BlueDot() bd.square = True def dot_is_active(pos): global p BDx = -pos.x BDy = pos.y DC = BDx * 4.5 + 6.5 p.ChangeDutyCycle(DC) print("X: {}\tY: {}".format(BDx, BDy)) IO.setwarnings(False) IO.setmode(IO.BCM) IO.setup(18, IO.OUT) p = IO.PWM(18, 50) # Pin 18 Frequency= 50 Hertz p.start(6.5) # p.ChangeDutyCycle() time.sleep(1) bd.when_pressed = dot_is_active bd.when_moved = dot_is_active pause()
from bluedot import BlueDot from signal import pause def show_percentage(pos): horizontal = ((pos.x + 1) / 2) percentage = round(horizontal * 100, 2) print("{}%".format(percentage)) bd = BlueDot() bd.when_moved = show_percentage pause()
# pusher instance pusher = pysher.Pusher('18daa371eebed30fcef8', cluster='us3') def handle_command(message): robby.handle_command(message) def connect_handler(data): print("Connected to pusher!") channel = pusher.subscribe('buggy') channel.bind('command', handle_command) pusher.connection.bind('pusher:connection_established', connect_handler) pusher.connect() position = (0, 0) def bluedot_handler(pos): global position lastPosition = position position = (clamp(round(bd.position.x * 2), -1, 1), clamp(round(bd.position.y * 2), -1, 1)) if position != lastPosition: robby.move(position[0], position[1]) bd.when_pressed = bluedot_handler bd.when_moved = bluedot_handler bd.when_released = robby.stop while True: time.sleep(1)
def bd_stop(): robot.stop() # ------------------------------------------------------------------------------------------------------ # Function for Blue Dot. Placeholder for any action we want to take on a double-press on the blue dot. # ------------------------------------------------------------------------------------------------------ def bd_double_press(): robot.stop() # ====================================================================================================== # Main program # ====================================================================================================== try: robot = RosiRobot() robot.start() robot.printSettings() bd = BlueDot() bd.when_pressed = bd_move bd.when_moved = bd_move bd.when_released = bd_stop bd.when_double_pressed = bd_double_press while running: robot.wait(0.1) except robot.RosiException as e: print(e.value)
def dpad(pos): if pos.top: command = 'echo 2=+10 > /dev/servoblaster' # Move servo one incriment on button push os.system(command) print("Servo 2 - up") # Print button result in script window elif pos.bottom: command = 'echo 2=-10 > /dev/servoblaster' os.system(command) print("Servo 2 - down") elif pos.left: command = 'echo 1=+10 > /dev/servoblaster' os.system(command) print("Servo 1 - left") elif pos.right: command = 'echo 1=-10 > /dev/servoblaster' os.system(command) print("Servo 1 - right") elif pos.middle: command = 'echo 1=50% > /dev/servoblaster' # Reset both servos to mid 'home' positions os.system(command) command = 'echo 2=50% > /dev/servoblaster' os.system(command) bd = BlueDot() bd.when_pressed = dpad bd.when_moved = dpad # Set button to work when moved not just pressed pause()
def doMoveXY(): bd = BlueDot() bd.when_pressed = moveXY bd.when_moved = moveXY
from bluedot import BlueDot from gpiozero import Robot from signal import pause bd = BlueDot() robot = Robot(left=(4, 14), right=(17, 18)) def move(pos): if pos.top: robot.forward(pos.distance) elif pos.bottom: robot.backward(pos.distance) elif pos.left: robot.left(pos.distance) elif pos.right: robot.right(pos.distance) bd.when_pressed = move bd.when_moved = move bd.when_released = robot.stop pause()
def doMoveDistance(): bd = BlueDot() bd.when_pressed = moveDistance bd.when_moved = moveDistance
toggle = 1 speed = 1560.0 pi = pigpio.pi() pi.set_servo_pulsewidth(ESC, 0) pi.set_servo_pulsewidth(servo, 0) max_servo_value = 1780 #Servo's max value min_servo_value = 980 #Servo's min value zero_value = (max_servo_value + min_servo_value) / 2 half_range = (max_servo_value - min_servo_value) / 2 max_esc_value = 2000 #ESC's max value min_esc_value = 980 #ESC's min value increase_throttle_rate = 10 decrease_throttle_rate = 10 # Video stream in one thread thread_stream = PiVideoStream() thread_carlog = car_logging() time.sleep(2) bd.rotation_segments = 180 bd.color = 'red' bd.when_double_pressed = start_stop bd.when_moved = steering pause()
elif pos.left: devastator_robot.left() elif pos.right: devastator_robot.right() elif pos.middle: os.system("sudo shutdown now") #Define the stop and record functions def stop(): devastator_robot.stop() def record(): devastator_eye.off() devastator_camera.start_recording('/home/pi/Videos/motions_%02d_%02d_%02d.mjpg' % (moment.hour, moment.minute, moment.second)) def stop_record(): devastator_eye.on() devastator_camera.stop_recording() #When the dot is pressed the robot moves #When the dot is released it stops #When pressing one button the camera turns on #When the other button is pressed the camera turns off devastator_bluedot.when_pressed = move devastator_bluedot.when_moved = move devastator_bluedot.when_released = stop record_button.when_pressed = record stop_button.when_pressed = stop_record pause()
from bluedot import BlueDot from gpiozero import PWMLED from signal import pause def set_brightness(pos): brightness = ((pos.y + 1) / 2) led.value = brightness bd = BlueDot() bd.when_moved = set_brightness led = PWMLED(17) pause()
for i in range(0, 5): # repeat the following code 5 times. robot.left() sleep(0.2) robot.right() sleep(0.2) def move( pos ): #Move by an amount that is proportional to the position of the joystick. if pos.top: robot.forward(pos.distance) elif pos.bottom: robot.backward(pos.distance) elif pos.left: robot.left(pos.distance) elif pos.right: robot.right(pos.distance) def stop(): #stop when nothing is pressed robot.stop() bd.when_pressed = move #initiate robot movement from the move function when button pressed bd.when_moved = move #again, but for when you move your finger on the blue dot bd.when_released = stop #stop moving when the bluedot is released bd.when_double_pressed = turn_around #taunt gesture added for showboating, defined above pause() #keep the script running forever.
from bluedot import BlueDot from gpiozero import Robot from signal import pause bd = BlueDot() robot = Robot(right=(27, 17), left=(24, 23)) def move(pos): if pos.top: robot.forward(pos.distance) elif pos.bottom: robot.backward(pos.distance) elif pos.left: robot.left(pos.distance) elif pos.right: robot.right(pos.distance) bd.when_pressed = move bd.when_moved = move bd.when_released = robot.stop pause()
drive = autonomousMode(False) turningLeft = False while drive: distance = getDistance() while distance <= 0.50: if not turningLeft: teslaCyber.left() turningLeft = True distance = getDistance() teslaCyber.forward() turningLeft = False drive = autonomousMode(False) teslaCyber.stop() def autonomousMode(change=True): global auto if change: auto = not auto return auto def beginSelfDrive(): autonomousMode() selfDrive() remoteControl.set_when_rotated(beginSelfDrive, True) # remoteControl.set_when_double_pressed(selfDrive, True) remoteControl.when_moved = move remoteControl.when_pressed = move remoteControl.when_released = stop