コード例 #1
0
ファイル: l298n.py プロジェクト: oatmeal3000/qupy
 def __init__(self):
     self.in1 = GPIOPin(23)
     self.in1.setFunction(gpio.OUT, 0)
     self.in2 = GPIOPin(24)
     self.in2.setFunction(gpio.OUT, 0)
     self.enA = GPIOPin(18)
     self.enA.pwmInit(10)  # Frequency is set to 10
     self.enA.pwmStart(0)  # Initial duty cycle is 0
     self.in3 = GPIOPin(21)
     self.in3.setFunction(gpio.OUT, 0)
     self.in4 = GPIOPin(20)
     self.in4.setFunction(gpio.OUT, 0)
     self.enB = GPIOPin(16)
     self.enB.pwmInit(10)
     self.enB.pwmStart(0)
     self.speed = 0
コード例 #2
0
ファイル: l298n.py プロジェクト: oatmeal3000/qupy
class MotorControllor:
    _instance = None

    @staticmethod
    def getInstance():
        if MotorControllor._instance is None:
            MotorControllor._instance = MotorControllor()
        return MotorControllor._instance

    def __init__(self):
        self.in1 = GPIOPin(23)
        self.in1.setFunction(gpio.OUT, 0)
        self.in2 = GPIOPin(24)
        self.in2.setFunction(gpio.OUT, 0)
        self.enA = GPIOPin(18)
        self.enA.pwmInit(10)  # Frequency is set to 10
        self.enA.pwmStart(0)  # Initial duty cycle is 0
        self.in3 = GPIOPin(21)
        self.in3.setFunction(gpio.OUT, 0)
        self.in4 = GPIOPin(20)
        self.in4.setFunction(gpio.OUT, 0)
        self.enB = GPIOPin(16)
        self.enB.pwmInit(10)
        self.enB.pwmStart(0)
        self.speed = 0

    def runMotor(self, motorId, direction, speed=1, freq=DEFAULT_PWM_FREQ):
        if speed > MAX_SPEED:
            speed = MAX_SPEED
        self.speed = abs(speed)
        if motorId == FRONT_LEFT:
            self.enA.pwmChangeDutyCycle(speed * 10.0)
            if direction == FORWD:
                self.in1.output(gpio.HIGH)
                self.in2.output(gpio.LOW)
            else:
                self.in1.output(gpio.LOW)
                self.in2.output(gpio.HIGH)
        elif motorId == FRONT_RIGHT:
            self.enB.pwmChangeDutyCycle(speed * 10.0)
            if direction == FORWD:
                self.in3.output(gpio.HIGH)
                self.in4.output(gpio.LOW)
            else:
                self.in3.output(gpio.LOW)
                self.in4.output(gpio.HIGH)

    def stopMotor(self, motorId):
        if motorId == FRONT_LEFT:
            self.in1.output(gpio.HIGH)
            self.in2.output(gpio.HIGH)
        elif motorId == FRONT_RIGHT:
            self.in3.output(gpio.HIGH)
            self.in4.output(gpio.HIGH)

    def runFrontLeft(self, speed=1):
        direction = FORWD if speed > 0 else BACKW
        self.runMotor(FRONT_LEFT, direction, abs(speed))
        self.speed = abs(speed)

    def runFrontRight(self, speed=1):
        direction = FORWD if speed > 0 else BACKW
        self.runMotor(FRONT_RIGHT, direction, abs(speed))
        self.speed = abs(speed)

    def stopFrontLeft(self):
        self.stopMotor(FRONT_LEFT)

    def stopFrontRight(self):
        self.stopMotor(FRONT_RIGHT)

    def shutDownAll(self):
        self.stopMotor(FRONT_LEFT)
        self.stopMotor(FRONT_RIGHT)
        self.speed = 0