예제 #1
0
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()
예제 #2
0
# 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)
예제 #3
0
    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")
예제 #4
0
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()
예제 #5
0
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()
예제 #6
0
    # 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)
예제 #8
0
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()
예제 #9
0
def doMoveXY():
    bd = BlueDot()
    bd.when_pressed = moveXY
    bd.when_moved = moveXY
예제 #10
0
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()
예제 #11
0
def doMoveDistance():
    bd = BlueDot()
    bd.when_pressed = moveDistance
    bd.when_moved = moveDistance
예제 #12
0
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()
예제 #13
0
    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()
예제 #14
0
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()
예제 #15
0
    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.
예제 #16
0
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