Source code for DesignSpark.Pmod.HB3

# -*- coding: utf-8 -*-
# Copyright (c) 2017 RS Components Ltd
# SPDX-License-Identifier: MIT License

"""
Interface for PmodHB3 module.
"""

import RPi.GPIO as gpio

CAP = 'GPIO'
PHY = '1x6'
    
STOPPED = 0
FORWARD = 1
REVERSE = -1

[docs]class PmodHB3: def __init__(self, DSPMod6): self.port = DSPMod6 self.dir = self.port.pin1 self.en = self.port.pin2 self.sA = self.port.pin3 self.sB = self.port.pin4 gpio.setmode(gpio.BCM) gpio.setup(self.dir, gpio.OUT) gpio.output(self.dir, gpio.LOW) gpio.setup(self.en, gpio.OUT) gpio.setup(self.sA, gpio.IN, pull_up_down=gpio.PUD_UP) gpio.setup(self.sB, gpio.IN, pull_up_down=gpio.PUD_UP) self.enable = gpio.PWM(self.en,100) self.enable.stop() self.direction = STOPPED
[docs] def forward(self,duty): if self.direction == STOPPED or self.direction == FORWARD: gpio.output(self.dir, gpio.HIGH) self.enable.start(0) else: self.enable.ChangeDutyCycle(0) self.enable.stop() gpio.output(self.dir, gpio.HIGH) self.enable.start(0) self.enable.ChangeDutyCycle(duty) self.direction = FORWARD
[docs] def reverse(self,duty): if self.direction == STOPPED or self.direction == REVERSE: gpio.output(self.dir, gpio.LOW) self.enable.start(0) else: self.enable.ChangeDutyCycle(0) self.enable.stop() gpio.output(self.dir, gpio.LOW) self.enable.start(0) self.enable.ChangeDutyCycle(duty) self.direction = REVERSE
[docs] def stop(self): self.enable.ChangeDutyCycle(0) self.enable.stop() self.direction = STOPPED
[docs] def changeFrequency(self,freq): self.enable.ChangeFrequency(freq)
[docs] def cleanup(self): gpio.cleanup();