예제 #1
0
파일: car.py 프로젝트: yikang/smart_car
class RemoteCar():
    def __init__(self):
        self._backMotor = Motor(forward=BACK_PIN_1, backward=BACK_PIN_2)
        self._frontMotor = Motor(forward=FRONT_PIN_1, backward=FRONT_PIN_2)
        self.stop()

    def drive(self, dir):
        if dir == 1:
            self._backMotor.forward()
        elif dir == -1:
            self._backMotor.backward()
        else:
            self._backMotor.stop()

    def turn(self, dir):
        if dir == 1:
            # turn right
            self._frontMotor.backward()
        elif dir == -1:
            self._frontMotor.forward()
        else:
            self._frontMotor.stop()

    def stop(self):
        self.drive(0)
        self.turn(0)
예제 #2
0
class CarMotorXiaoR():
    def __init__(self):
        self.motor_lx = Motor(16, 19)
        self.motor_rx = Motor(21, 26)
        self.enable_lx = DigitalOutputDevice(13)
        self.enable_rx = DigitalOutputDevice(20)

        self.enable_lx.on()
        self.enable_rx.on()

    def forward(self):
        self.motor_rx.forward()
        self.motor_lx.forward()

    def backward(self):
        self.motor_rx.backward()
        self.motor_lx.backward()

    def stop(self):
        self.motor_rx.stop()
        self.motor_lx.stop()

    def right(self):
        self.motor_rx.forward()
        self.motor_lx.backward()

    def left(self):
        self.motor_lx.forward()
        self.motor_rx.backward()
예제 #3
0
class motor:

    def __init__(self, motorA, motorB, motorC, motorD, pwmBool = True):
        self.motorE = Motor(motorA, motorB)
        self.motorD = Motor(motorC, motorD)
        self.motorE.pwm(pwmBool)
        self.motorD.pwm(pwmBool)
        self.pwm = 0.5

    def andarFrente(self, tempo = 1):
        pwm = 0.5                   #pwm em 50%
        self.motorE.forward(pwm)
        self.motorD.forward(pwm)
        sleep(tempo)

    def andarTras(self, tempo = 1):
        self.motorE.backward(self.pwm)
        self.motorD.backward(self.pwm)
        sleep(tempo)
    
    def girarEsquerda(self, angulo = 90):
        self.motorE.backward(self.pwm)
        self.motorD.forward(self.pwm)
        sleep(angulo/360)

    def girarDireita(self, angulo = 90):
        self.motorE.forward(self.pwm)
        self.motorD.backward(self.pwm)
        sleep(angulo/360)

    def parar(self, tempo = 1):
        self.motorE.stop()
        self.motorD.stop()
        sleep(tempo)
예제 #4
0
파일: DcMotor.py 프로젝트: atipezda/Loton
class DcMotor:
    def __init__(self, name, pinForward, pinBackward, frontDuration,
                 backDuration, initialState, ee):
        self.name = name
        self.actualPosition = ''
        self.pinForward = pinForward
        self.pinBackward = pinBackward
        self.frontDuration = frontDuration
        self.backDuration = backDuration
        self.initialState = initialState
        self.ee = ee
        self.motor = Motor(pinForward, pinBackward)
        self.move(initialState)

    def move(self, position):
        if position not in ['forward', 'backward']:
            Exception("position must by either 'forward' or 'backward'")

        angle = 100 if position == 'forward' else 0
        percent = 100 if position == 'forward' else 0
        self.ee.emit('move', self.name, angle, percent)
        if position == 'forward':
            self.motor.forward()
            time.sleep(self.frontDuration)
        else:
            self.motor.backward()
            time.sleep(self.backDuration)

        self.actualPosition = position
        self.motor.stop()
예제 #5
0
class motor_driver:
    def __init__(self):
        self.speed = 0.5
        self.motor = Motor(forward=4, backward=14)
        rospy.init_node('motor_listener', anonymous=True)
        rospy.Subscriber('/cmd_vel', Twist, self.callback)

    def callback(self, data):
        rospy.loginfo(data.linear.x)
        self.speed = self.pre_process_speed(data.linear.x)
        # print(self.speed)

    def pre_process_speed(self, speed):
        if abs(speed) > 1:
            speed = speed / abs(speed)
        return round(speed, 2)

    def drive_motor(self):
        # print(self.speed)
        if self.speed > 0:
            self.motor.forward(self.speed)
        elif self.speed < 0:
            self.motor.backward(abs(self.speed))
        else:
            self.motor.stop()
예제 #6
0
class Rudder:

    scale = 10

    def __init__(self):
        from gpiozero import Motor
        self.motor = Motor(17, 27)
        self._value = 0

    def register(self, vechicle):
        vechicle.commands['rudder'].append(self.rudder)
        vechicle.commands['stop'].append(self.stop)
        vechicle.sensors['rudder'] = self.value

    def value(self):
        return self._value

    def rudder(self, delta):
        value = self._value + delta
        if value > self.scale or value < -self.scale:
            return

        self._value = value
        if value > 0:
            self.motor.forward(value / self.scale)
        elif value < 0:
            self.motor.backward(-value / self.scale)
        else:
            self.motor.stop()

    def stop(self, *args):
        self._value = 0
        self.motor.stop()
예제 #7
0
class Car:
    def __init__(self):
        self.drive_motor = Motor(9, 10)
        self.turn_motor = Motor(8, 7)

    def forward(self, value=1):
        self.drive_motor.forward(value)

    def backward(self, value=1):
        self.drive_motor.backward(value)

    def left(self, value=1):
        self.turn_motor.forward(value)

    def right(self, value=1):
        self.turn_motor.backward(value)

    def drive(self, x, y):
        x = min(max(-1, x), 1) # cap X between -1 and 1
        y = min(max(-1, y), 1) # cap Y between -1 and 1
        if y > 0:
            self.forward(y)
        else:
            self.backward(-y)

        if x > 0:
            self.right(x)
        else:
            self.left(-x)

    def stop(self):
        self.drive_motor.stop()
        self.turn_motor.stop()
class GamePad:
    """ゲームパッドに割り振る操作を入れるクラス"""
    def __init__(self) -> None:
        self.front_motor = Motor(11, 12)
        self.right_motor = Motor(13, 15)
        self.left_motor = Motor(16, 18)

    def fork_lift_up(self, analog_input: float) -> None:
        """
        (アナログ入力)フォークリフトを入力した速度で上昇させる

        Args:
            analog_input(float): ゲームパッドのアナログ入力値
        """
        self.front_motor.forward(analog_input)

    def fork_lift_down(self, analog_input: float) -> None:
        """
        (アナログ入力)フォークリフトを入力した速度で下降させる

        Args:
            analog_input(float): ゲームパッドのアナログ入力値
        """
        self.front_motor.backward(-analog_input)

    def axis_vertical_right(self, stick_input: float, margin: float) -> None:
        """
        (スティック入力)入力した速度で右モータでの前後移動
        アナログスティックは完全な (0, 0) 座標を返さないので入力にマージンを持たせる

        Args:
            stick_input(float): ゲームスティックのアナログ入力値 (-1.0 ~ 1.0)
            margin(float): 入力を無視する閾値
        """
        if stick_input > margin:
            self.right_motor.forward(stick_input)
        elif stick_input < -margin:
            self.right_motor.backward(-stick_input)
        else:
            self.right_motor.stop()

    def axis_vertical_left(self, stick_input: float, margin: float) -> None:
        """
        (スティック入力)入力した速度で左モータでの前後移動
        アナログスティックは完全な (0, 0) 座標を返さないので入力にマージンを持たせる

        Args:
            stick_input(float): ゲームスティックのアナログ入力値 (-1.0 ~ 1.0)
            margin(float): 入力を無視する閾値
        """
        if stick_input > margin:
            self.left_motor.forward(stick_input)
        elif stick_input < -margin:
            self.left_motor.backward(-stick_input)
        else:
            self.left_motor.stop()
예제 #9
0
class Throttle:

    scale = 10

    def __init__(self):
        from gpiozero import Motor
        self.motor = Motor(23, 24)
        self._value = 0
        self._damping_task = None

    def register(self, vechicle):
        self._loop = vechicle.loop
        vechicle.commands['throttle'].append(self.throttle)
        vechicle.commands['stop'].append(self.stop)
        vechicle.sensors['throttle'] = self.value

    def value(self):
        return self._value

    def throttle(self, delta):
        if self._damping_task:
            self._damping_task.cancel()
            self._damping_task = None

        value = self._value + delta
        if value > self.scale or value < -self.scale:
            return

        if value >= 0:
            if delta > 0 and value > 0:
                self._damping_task = DampingForward(self)
                asyncio.ensure_future(self._damping_task.run(value, 5),
                                      loop=self._loop)
            else:
                self._value = value
                self.motor.forward(value / self.scale)
        elif value < 0:
            self._value = value
            self.motor.backward(-value / self.scale)
        else:
            self.motor.stop()

    def stop(self, *args):
        if self._damping_task:
            self._damping_task.cancel()
            self._damping_task = None

        if self._value > 0:
            self._value = -1
            self.motor.backward(1)
        else:
            self._value = 1
            self.motor.forward(1)
        time.sleep(0.1)
        self._value = 0
        self.motor.stop()
예제 #10
0
파일: dc_moto.py 프로젝트: NelsonIg/Raspi
def main():
    motor = Motor(26, 20)
    button = Button(6)
    button.when_pressed = callback_rpm

    for _ in range(3):
        speed = float(input('speed: '))
        motor.forward(speed)
        for _ in range(61):
            print(rpm())
            time.sleep(1)
    motor.stop()
예제 #11
0
class Pump_Control:
    def __init__(self):
        self.pump = Motor(17, 18)
        self.State = False

    def start_pump(self):
        self.State = True
        self.pump.forward()

    def stop_pump(self):
        self.State = False
        self.pump.stop()
예제 #12
0
class Robot(object):
    """
    Lowest possible abstraction of our robots.
    """
    def __init__(self, left_a_pin, left_b_pin, right_a_pin, right_b_pin):
        self.left_a_pin = left_a_pin
        self.left_b_pin = left_b_pin
        self.right_a_pin = right_a_pin
        self.right_b_pin = right_b_pin
        self.left_motor = Motor(self.left_a_pin, self.left_b_pin, pwm=True)
        self.right_motor = Motor(self.right_a_pin, self.right_b_pin, pwm=True)
        self.left_motor.stop()
        self.right_motor.stop()

    def move(self, left_drive, right_drive):
        LOGGER.debug("left_drive: {}; right_drive: {}".format(
            left_drive, right_drive))
        if left_drive >= 0:
            self.left_motor.forward(left_drive)
        else:
            self.left_motor.backward(-left_drive)
        if right_drive >= 0:
            self.right_motor.forward(right_drive)
        else:
            self.right_motor.backward(-right_drive)

    def stop(self):
        self.left_motor.stop()
        self.right_motor.stop()
예제 #13
0
class MotorControl:
    def __init__(self, motor1Pin1, motor1Pin2, motor2Pin1, motor2Pin2):
        self.motor1 = Motor(forward=motor1Pin1, backward=motor1Pin2)
        self.motor2 = Motor(forward=motor2Pin1, backward=motor2Pin2)

    def moveForward(self):
        self.motor2.forward()
        self.motor1.forward()

    def moveBackward(self):
        self.motor2.backward()
        self.motor1.backward()

    def stop(self):
        self.motor1.stop()
        self.motor2.stop()

    def turnLeft(self):
        self.motor1.stop()
        self.motor2.forward()

    def turnReft(self):
        self.motor2.stop()
        self.motor1.forward()

    def turnLeftHard(self):
        self.motor1.backward()
        self.motor2.forward()

    def turnReftHard(self):
        self.motor2.backward()
        self.motor1.forward()
예제 #14
0
파일: car.py 프로젝트: ZaalDz/Sheila
class Car:
    def __init__(self, speed: float = 1):
        self.speed = speed
        self.diff = 0.04

        self.forward_right_motor = Motor(forward=12, backward=16)
        self.backward_right_motor = Motor(forward=21, backward=20)

        self.forward_left_motor = Motor(forward=23, backward=18)
        self.backward_left_motor = Motor(forward=24, backward=25)

        self.sensor = DistanceSensor(13, 6)

    def stop(self):
        self.forward_left_motor.stop()
        self.forward_right_motor.stop()
        self.backward_left_motor.stop()
        self.backward_right_motor.stop()

    def not_in_safe_distance(self, distance_threshold=SAFE_DISTANCE_THRESHOLD):
        distance = round(self.sensor.distance * 100, 4)
        return distance > distance_threshold

    def forward(self, speed: float = None):
        speed = max(min(speed if speed else self.speed, 1), 0)
        right_speed = max(0.0, speed - self.diff)

        self.forward_left_motor.forward(speed=speed)
        self.forward_right_motor.forward(speed=right_speed)
        self.backward_left_motor.forward(speed=speed)
        self.backward_right_motor.forward(speed=right_speed)

    def backward(self, speed: float = None):
        speed = max(min(speed if speed else self.speed, 1), 0)
        right_speed = max(0.0, speed - self.diff)

        self.forward_left_motor.backward(speed=speed)
        self.forward_right_motor.backward(speed=right_speed)
        self.backward_left_motor.backward(speed=speed)
        self.backward_right_motor.backward(speed=right_speed)

    def left(self, speed: float = None):
        speed = max(min(speed if speed else self.speed, 1), 0)
        right_speed = max(0.0, speed - self.diff)

        self.forward_left_motor.backward(speed=speed)
        self.forward_right_motor.forward(speed=right_speed)
        self.backward_left_motor.backward(speed=speed)
        self.backward_right_motor.forward(speed=right_speed)

    def right(self, speed: float = None):
        speed = max(min(speed if speed else self.speed, 1), 0)
        right_speed = max(0.0, speed - self.diff)

        self.forward_left_motor.forward(speed=speed)
        self.forward_right_motor.backward(speed=right_speed)
        self.backward_left_motor.forward(speed=speed)
        self.backward_right_motor.backward(speed=right_speed)
예제 #15
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--model_name',
                        default='test_model',
                        help='Model identifier.')
    parser.add_argument('--model_path',
                        required=True,
                        help='Path to model file.')
    parser.add_argument('--speed',
                        default=0.5,
                        type=float,
                        help='Reduction factor on speed')
    args = parser.parse_args()

    model = ModelDescriptor(name=args.model_name,
                            input_shape=(1, 192, 192, 3),
                            input_normalizer=(0, 1),
                            compute_graph=utils.load_compute_graph(
                                args.model_path))

    left = Motor(PIN_A, PIN_B)
    right = Motor(PIN_C, PIN_D)
    print('spinning')

    try:
        with PiCamera(sensor_mode=4, framerate=30):
            with CameraInference(model) as inference:
                for result in inference.run():
                    data = [
                        tensor.data for _, tensor in result.tensors.items()
                    ]
                    lspeed, rspeed = data[0]
                    print('#%05d (%5.2f fps): %1.2f/%1.2f' %
                          (inference.count, inference.rate, lspeed, rspeed))
                    if lspeed < 0:
                        left.reverse(-max(-1, lspeed) * args.speed)
                    else:
                        left.forward(min(1, lspeed) * args.speed)
                    if rspeed < 0:
                        right.reverse(-max(-1, rspeed) * args.speed)
                    else:
                        right.forward(min(1, rspeed) * args.speed)

    except Exception as e:
        left.stop()
        right.stop()
        print(e)
예제 #16
0
class MotorCtrlService(object):
    """FB Service"""

    def __init__(self, topic, event_emitter=EventEmitter()):
        logging.debug("initializing motor control!")
        event_emitter.on(topic, self.act)
        self.motor_right = Motor(17, 18)
        self.motor_left = Motor(6, 12)
        self.start()

    def start(self):
        self.full_spin()

    def full_spin(self):
        logging.debug("full spin maneuver!")
        self.stop()
        self.motor_left.forward(1)
        self.motor_right.backward(1)
        time.sleep(2)
        self.stop()

    def forward(self, speed=1):
        self.move()

    def backward(self, speed=1):
        self.move(-1, -1)

    def move(self, speed_right=1, speed_left=1):
        logging.debug(
            "Moving motor: %(speed_right)s  | %(speed_left)s" % locals())
        self.stop()
        if speed_right > 0:
            self.motor_right.forward(speed_right)
            pass
        elif speed_right < 0:
            self.motor_right.backward(math.fabs(speed_right))
        else:
            self.motor_right.stop()

        if speed_left > 0:
            self.motor_left.forward(speed_left)
        elif speed_left < 0:
            self.motor_left.backward(math.fabs(speed_left))
        else:
            self.motor_left.stop()

    def stop(self):
        self.motor_right.stop()
        self.motor_left.stop()

    def act(self, msg):
        """perform motor move"""
        logging.debug("acting !!! -> " + str(msg) + " left:" +
                      str(msg["speed_left"]))
        self.move(
            speed_left=float(msg["speed_left"]),
            speed_right=float(msg["speed_right"]))
예제 #17
0
 class MecRobot():
 
     def __init__(self):
         self.frontLeft = Motor(6, 13)
         self.frontRight = Motor(9, 11)
         self.rearLeft = Motor(20, 21)
         self.rearRight = Motor(17, 27)
         # Motors are reversed. If you find your robot going backwards, set this to 1
         self.motor_multiplier = -1
         self.red = LED(16)
         self.red.blink()
         self.LineFollowingError = -1
 
 
     def set_speeds(self,power_left, power_right):
        
     
         # If one wants to see the 'raw' 0-100 values coming in
         # print("source left: {}".format(power_left))
         # print("source right: {}".format(power_right))
     
         # Take the 0-100 inputs down to 0-1 and reverse them if necessary
         power_left = (self.motor_multiplier * power_left) / 100
         power_right = (self.motor_multiplier * power_right) / 100
     
         # Print the converted values out for debug
         # print("left: {}".format(power_left))
         # print("right: {}".format(power_right))
     
         # If power is less than 0, we want to turn the motor backwards, otherwise turn it forwards
         
         if power_left < 0:
             #print("power_left ",power_left)
             self.frontLeft.forward(-power_left)
             self.rearLeft.forward(-power_left) 
         else:
             #print("power_left ",power_left)
             self.frontLeft.backward(power_left)
             self.rearLeft.backward(power_left)
     
         if power_right < 0:
             self.frontRight.forward(-power_right)
             self.rearRight.forward(-power_right)
         else:
             self.frontRight.backward(power_right)
             self.rearRight.backward(power_right)
     
     def stop_motors(self):
         """
         As we have a motor hat, stop the motors using their motors call
         """
         # Turn both motors off
         self.frontLeft.stop()
         self.frontRight.stop()
         self.rearLeft.stop()
         self.rearRight.stop()
예제 #18
0
class CoopDoor():

    def __init__(self, motor_forward, motor_backward, open_sensor,
                 close_sensor, max_time_open=60, max_time_close=45):
        self.max_time_open = max_time_open
        self.max_time_close = max_time_close
        self.motor = Motor(motor_forward, motor_backward)
        self.open_sensor = DigitalInputDevice(open_sensor)
        self.close_sensor = DigitalInputDevice(close_sensor)
        self.determine_state()

    def close(self):
        start = perf_counter()
        self.determine_state()
        log.debug(f"door.close() state: {self.state}")
        if self.state != State.CLOSE:
            while (self.state != State.CLOSE) \
                    & ((perf_counter() - start) < self.max_time_close):
                self.motor.forward()
                self.determine_state()
            else:
                self.motor.stop()
        return self.state

    def open(self):
        start = perf_counter()
        self.determine_state()
        log.debug(f"door.open() state: {self.state}")
        if self.state != State.OPEN:
            while (self.state != State.OPEN) \
                    & ((perf_counter() - start) < self.max_time_open):
                self.motor.backward()
                self.determine_state()
            else:
                self.motor.stop()
        return self.state

    def determine_state(self):
        if self.open_sensor.value == 0:
            self.state = State.OPEN
        elif self.close_sensor.value == 0:
            self.state = State.CLOSE
        else:
            self.state = State.INTERMEDIATE
        return self.state
예제 #19
0
    def test_backward(self):
        """ 後退テスト """
        # 接続ピン
        PIN_AIN1 = 6
        PIN_AIN2 = 5

        # 期待値
        valueAIN1BwExpctd = 0  # low
        valueAIN2BwExpctd = 1  # high
        valueAIN1NuExpctd = 0  # low
        valueAIN2NuExpctd = 0  # low

        # ターゲット生成
        motor = Motor(PIN_AIN1, PIN_AIN2, pwm=False)
        ain1_pin = Device.pin_factory.pin(PIN_AIN1)
        ain2_pin = Device.pin_factory.pin(PIN_AIN2)

        # 実際値
        motor.backward()
        sleep(0.1)
        valueAIN1Actual = ain1_pin.state
        valueAIN2Actual = ain2_pin.state

        try:
            # 評価
            self.assertEqual(valueAIN1Actual, valueAIN1BwExpctd)
            self.assertEqual(valueAIN2Actual, valueAIN2BwExpctd)

            # 実際値
            motor.stop()
            sleep(0.1)
            valueAIN1Actual = ain1_pin.state
            valueAIN2Actual = ain2_pin.state

            # 評価
            self.assertEqual(valueAIN1Actual, valueAIN1NuExpctd)
            self.assertEqual(valueAIN2Actual, valueAIN2NuExpctd)
            sleep(0.1)
        finally:
            # 終了
            motor.close()
예제 #20
0
class Car():
    def __init__(self):
        self.motorright = Motor(24, 27)
        self.motorright_enable = OutputDevice(5, initial_value=1)
        self.motorleft = Motor(6, 22)
        self.motorleft_enable = OutputDevice(17, initial_value=1)

    def forward(self):
        self.motorleft.backward()
        self.motorright.backward()

    def backward(self):
        self.motorleft.forward()
        self.motorright.forward()

    def left(self):
        self.motorleft.forward()
        self.motorright.backward()

    def right(self):
        self.motorleft.backward()
        self.motorright.forward()

    def stop(self):
        self.motorleft.stop()
        self.motorright.stop()

    def test(self):
        self.forward()
        sleep(1)
        self.backward()
        sleep(1)
        self.left()
        sleep(1)
        self.right()
        sleep(1)
        self.stop()
예제 #21
0
class Autobot(object):
    def __init__(self, left=None, right=None):
        self.left_motor = Motor(*left)
        self.right_motor = Motor(*right)

    def forward(self, speed=0.52):
        self.left_motor.forward(speed)
        self.right_motor.forward(speed)

    def backwards(self, speed=0.52):
        self.left_motor.backward(speed)
        self.right_motor.backward(speed)

    def left(self, speed=0.55):
        self.right_motor.forward(0.15)
        self.left_motor.forward(speed)

    def right(self, speed=0.55):
        self.right_motor.forward(speed)
        self.left_motor.forward(0.15)

    def stop(self):
        self.left_motor.stop()
        self.right_motor.stop()
예제 #22
0
class CarMotorHJduino():
    def __init__(self):
        self.motor_lx = Motor(18, 24)
        self.motor_rx = Motor(23, 25)

    def forward(self):
        self.motor_rx.forward()
        self.motor_lx.forward()

    def backward(self):
        self.motor_rx.backward()
        self.motor_lx.backward()

    def stop(self):
        self.motor_rx.stop()
        self.motor_lx.stop()

    def right(self):
        self.motor_lx.forward()
        self.motor_rx.backward()

    def left(self):
        self.motor_rx.forward()
        self.motor_lx.backward()
예제 #23
0
class Car():
    def __init__(self, front_left_pins, front_right_pins, back_left_pins,
                 back_right_pins):
        self.direction = None
        self.front_left = Motor(front_left_pins[0], front_left_pins[1])
        self.front_right = Motor(front_right_pins[0], front_right_pins[1])
        self.back_left = Motor(back_left_pins[0], back_left_pins[1])
        self.back_right = Motor(back_right_pins[0], back_right_pins[1])

    def go_forward(self):
        print("go forward")
        self.front_left.forward()
        self.front_right.forward()
        self.back_left.forward()
        self.back_right.forward()

    def go_backward(self):
        print("go backward")
        self.front_left.backward()
        self.front_right.backward()
        self.back_left.backward()
        self.back_right.backward()

    def stop(self):
        print("stop")
        self.front_left.stop()
        self.front_right.stop()
        self.back_left.stop()
        self.back_right.stop()

    def turn_left(self):
        print("turn left")
        self.front_left.backward()
        self.front_right.forward()
        self.back_left.backward()
        self.back_right.forward()

    def turn_right(self):
        print("turn right")
        self.front_left.forward()
        self.front_right.backward()
        self.back_left.forward()
        self.back_right.backward()
예제 #24
0
파일: wheelie.py 프로젝트: marcidy/wheelie
class Car:
    def __init__(self, devices=devices):
        self._speed = .5
        self._turn = .5
        if devices:
            self.devices = devices
            self.connect(devices)

    def connect(self, devices):
        self.front = Motor(*devices['front'])
        self.back = Motor(*devices['back'])
        self.steer = Motor(*devices['turn'])

    def forward(self):
        self.front.forward(self._speed)
        self.back.forward(self._speed)

    def reverse(self):
        self.front.backward(self._speed)
        self.back.backward(self._speed)

    def stop(self):
        self.front.stop()
        self.back.stop()
        self.steer.stop()

    def turn_right(self):
        self.steer.forward(self._turn)

    def turn_left(self):
        self.steer.backward(self._turn)

    def straight(self):
        self.steer.stop()

    def speed(self, value):
        if 0 <= value and value <= 1:
            self._speed = value

    def turn_speed(self, value):
        if 0 <= value and value <= 1:
            self._turn = value
예제 #25
0
class RaspberryRobot(object):
    def __init__(self):
        self.front_left_motor = Motor(7, 8)
        self.front_right_motor = Motor(10, 9)
        self.rear_left_motor = Motor(6, 13)
        self.rear_right_motor = Motor(26, 19)

    def stop(self):
        print("stop")
        self.front_left_motor.stop()
        self.front_right_motor.stop()
        self.rear_left_motor.stop()
        self.rear_right_motor.stop()

    def forward(self):
        print("go forward")
        self.front_left_motor.forward()
        self.front_right_motor.forward()
        self.rear_left_motor.forward()
        self.rear_right_motor.forward()

    def backward(self):
        print("go backward")
        self.front_left_motor.backward()
        self.front_right_motor.backward()
        self.rear_left_motor.backward()
        self.rear_right_motor.backward()

    def left(self):
        print("left")
        self.front_left_motor.forward(0)
        self.front_right_motor.forward()
        self.rear_left_motor.forward(0)
        self.rear_right_motor.forward()

    def right(self):
        print("right")
        self.front_left_motor.forward()
        self.front_right_motor.forward(0)
        self.rear_left_motor.forward()
        self.rear_right_motor.forward(0)
예제 #26
0
                    tcpCliSock, addr = tcpSerSock.accept()
                    print("...connected from : ", addr)
                    try:
                        while True:
                            data = tcpCliSock.recv(BUFSIZE)
                            #print(data)
                            #print(type(data))
                            data = data.decode("utf-8")

                            #ldr = LightSensor(26)

                            if data == cccmd[0]:
                                #time.sleep(1)
                                a.forward(0.5)
                                time.sleep(0.8)
                                a.stop()
                                print('Curtain ON')

                            if data == cccmd[1]:
                                #time.sleep(1)
                                a.backward(0.3)
                                time.sleep(0.8)
                                a.stop()
                                print('Curtain OFF')

                            if data == cccmd[2]:
                                flag4 = 0
                                #flag=0

                            if not data:
                                print('hello')
예제 #27
0
파일: vrcar.py 프로젝트: BitForceStudio/pi
    backward()    
# 
if __name__ == '__main__':
    cmd=''
    while cmd is not 'e':
        cmd=raw_input('Cmd:')
        if cmd=='w':
            print "forword 2 sec"
            motor2.forward() # full speed forwards
            motor3.forward() # full speed forwards
            sleep(2)          
        elif cmd=='s':
            print "backword 2 sec"
            motor2.backward() # full speed backwards
            motor3.backward() # full speed backwards
            sleep(2)
        elif cmd=='a':
            print "left turn"
            left_turn()
        elif cmd=='d':
            print "right turn"
            right_turn()
        elif cmd=='8':
            print "run 8"
            eight()
        elif cmd=='e':
            break
        motor2.stop()
        motor3.stop()

예제 #28
0
from gpiozero import Motor
import time
Fright=Motor(9,10)
Fleft=Motor(22,27)
Bright=Motor(3,2)
for i in range(0,4):
    Fright.forward()
    Fleft.forward()
    Bleft.forward()
    Bright.forward()
    time.sleep(5)
    Fright.stop()
    Bleft.stop()
    Fleft.stop()
    Bright.stop()
    Fright.forward() #acually fleft
    Bright.backward()
    Fleft.backward() #actually fright
    Bleft.forward()
    time.sleep(0.9)
    Fright.stop()
    Bleft.stop()
    Fleft.stop()
    Bright.stop()

예제 #29
0
class RoPiMotor:

    # initialize
    def __init__(self, remote_address):

        # set PINs on BOARD
        log.debug("Initializing Motors...")
        log.debug("> back left PIN: " + str(_conf['motor_back_left_pin']))
        log.debug("> back right PIN: " + str(_conf['motor_back_right_pin']))
        log.debug("> front left PIN: " + str(_conf['motor_front_left_pin']))
        log.debug("> front right PIN: " + str(_conf['motor_front_right_pin']))

        # using Motor
        rem_pi = PiGPIOFactory(host=remote_address)
        self.motor1 = Motor(_conf['motor_front_left_pin'],
                            _conf['motor_back_left_pin'],
                            pin_factory=rem_pi)
        self.motor2 = Motor(_conf['motor_front_right_pin'],
                            _conf['motor_back_right_pin'],
                            pin_factory=rem_pi)

        # directions
        self.motor1_direction = Value("i", 0)
        self.motor2_direction = Value("i", 0)

        # queues and processes
        log.debug("Initializing Motors queues and processes...")
        self.queue1 = Queue()
        self.queue2 = Queue()
        self.process1 = Process(target=self.M1)
        self.process2 = Process(target=self.M2)
        self.process1.start()
        self.process2.start()
        log.debug("...init done!")

    # clean a queue
    def clearQueue(self, q):
        while not q.empty():
            q.get()

    # clean all queues
    def cleanQueues(self):
        log.debug("Cleaning queues...")
        self.clearQueue(self.queue1)
        self.clearQueue(self.queue2)

    # stop the motors
    def stop(self):
        self.cleanQueues()
        self.motor1.stop()
        self.motor2.stop()

    # control motor process 1
    def M1(self):
        self.worker(self.motor1, self.queue1)

    # control motor process 2
    def M2(self):
        self.worker(self.motor2, self.queue2)

    # worker
    def worker(self, motor, queue):
        try:
            while True:

                if not queue.empty():
                    direction = queue.get().split("|")
                    acceleration = float(direction[2])
                    speed = float(direction[1])
                    direction = direction[0]
                    log.debug("Going direction [" + str(direction) + "] at [" +
                              str(speed) + "] speed for " + str(acceleration) +
                              "s")
                    if direction == "f":
                        motor.forward(speed=speed)
                    elif direction == "b":
                        motor.backward(speed=speed)
                    sleep(acceleration)
                    motor.stop()

        except KeyboardInterrupt:
            pass

    # go forward
    def forward(self, speed=1, duration=_conf['ACCELERATION_TIME']):
        if not self.motor1_direction.value == 1:
            self.clearQueue(self.queue1)
        self.motor1_direction.value = 1
        if not self.motor2_direction.value == 1:
            self.clearQueue(self.queue2)
        self.motor2_direction.value = 1
        self.queue1.put("f|" + str(speed) + "|" + str(duration))
        self.queue2.put("f|" + str(speed) + "|" + str(duration))

    # go backward
    def backward(self, speed=1, duration=_conf['ACCELERATION_TIME']):
        if not self.motor1_direction.value == -1:
            self.clearQueue(self.queue1)
        self.motor1_direction.value = -1
        if not self.motor2_direction.value == -1:
            self.clearQueue(self.queue2)
        self.motor2_direction.value = -1
        self.queue1.put("b|" + str(speed) + "|" + str(duration))
        self.queue2.put("b|" + str(speed) + "|" + str(duration))

    # go forward LEFT
    def forwardleft(self, speed=1, duration=_conf['ACCELERATION_TIME']):
        self.clearQueue(self.queue2)
        if not self.motor1_direction.value == 1:
            self.clearQueue(self.queue1)
        self.motor1_direction.value = 1
        self.queue1.put("f|" + str(speed) + "|" + str(duration))

    # go forward RIGHT
    def forwardright(self, speed=1, duration=_conf['ACCELERATION_TIME']):
        self.clearQueue(self.queue1)
        if not self.motor2_direction == 1:
            self.clearQueue(self.queue2)
        self.motor2_direction.value = 1
        self.queue2.put("f|" + str(speed) + "|" + str(duration))

    # go backward LEFT
    def backwardleft(self, speed=1, duration=_conf['ACCELERATION_TIME']):
        self.clearQueue(self.queue2)
        if not self.motor1_direction.value == -1:
            self.clearQueue(self.queue1)
        self.motor1_direction.value = -1
        self.queue1.put("b|" + str(speed) + "|" + str(duration))

    # go backward RIGHT
    def backwardright(self, speed=1, duration=_conf['ACCELERATION_TIME']):
        self.clearQueue(self.queue1)
        if not self.motor2_direction.value == -1:
            self.clearQueue(self.queue2)
        self.motor2_direction.value = -1
        self.queue2.put("b|" + str(speed) + "|" + str(duration))

    # terminate
    def terminate(self):
        log.debug("Motors termination...")
        self.process1.terminate()
        self.process2.terminate()
        self.stop()
        self.queue1.close()
        self.queue1.join_thread()
        self.queue2.close()
        self.queue2.join_thread()
        self.motor1.close()
        self.motor2.close()
motor1 = Motor(23, 24)
print("Motor 1 forward")
motor1.forward()
sleep(2)
print("Motor 1 backward")
motor1.backward()
sleep(2)
print("Motor 1 forward slow")
motor1.forward(0.20)
sleep(2)
print("Motor 1 backward slow")
motor1.backward(0.20)
sleep(2)
print("Motor 1 stop")
motor1.stop()

motor2 = Motor(20, 21)
print("Motor 2 forward")
motor2.forward()
sleep(2)
print("Motor 2 backward")
motor2.backward()
sleep(2)
print("Motor 2 forward slow")
motor2.forward(0.20)
sleep(2)
print("Motor 2 backward slow")
motor2.backward(0.20)
sleep(2)
print("Motor 2 stop")
예제 #31
0
from gpiozero import Motor
from time import sleep
m1 = Motor(14,15)

speed = 0.5

m1.forward(speed)
sleep(1)
m1.stop()
speed = 1
m1.backward(speed)
sleep(1)
m1.stop()
예제 #32
0
class Remote_GPIO:
    def __init__(self):
        self.run = True
        self.rem_pi = PiGPIOFactory()
        self.motor_left = Motor(20, 21)
        self.motor_right = Motor(19, 26)

    def remote_gpio_init(self):
        print("connected to pi")
        while self.run:
            print("testing forward")
            self.motor_left.forward()
            self.motor_right.forward()
            sleep(2)
            self.motor_right.stop()
            self.motor_left.stop()
            print("testing backward")
            self.motor_left.backward()
            self.motor_right.backward()
            sleep(2)
            self.motor_right.stop()
            self.motor_left.stop()
            print("testing left")
            self.motor_left.forward()
            sleep(2)
            self.motor_left.stop()
            print("testing right")
            self.motor_right.forward()
            sleep(2)
            self.motor_right.stop()
            print("finished tests")
            self.motor_left.stop()
            self.motor_right.stop()
            self.close_connection()

    def close_connection(self):
        self.run = False
예제 #33
0
import explorerhat
from gpiozero import Button, LED, Motor
from time import sleep


button = Button(9)
led1 = LED(10)

motor1 = Motor(forward=19 , backward=20)
motor2 = Motor(forward=21 , backward=26)




while True:
        if button.is_pressed:
                print("Button pressed")
                led1.on()
                motor1.forward()
                motor2.forward()
        else:
        		print("Button is not pressed")
        		led1.off()
        		motor1.stop()
        		motor2.stop()
from gpiozero import Motor
import time
#from gpiozero.Pin import
#import RPi.GPIO as GPIO

mr = Motor(3, 2)
ml = Motor(15, 14)
ml.stop()
mr.stop()

try:

    def forward():
        ml.forward(0.3)
        mr.forward(0.3)

    def backward():
        ml.backward(0.3)
        mr.backward(0.3)
        
    def sstop():
        ml.stop()
        mr.stop()

while(True):
    while(raw_input()=='w'):
        print "forward"
        forward()
        time.sleep(1)

    while(raw_input()=='s'):