Motorkarte Library
Verfasst: Samstag 11. Februar 2017, 23:30
Guten Abend!
Ich bin gerade dabei eine Motorsteuerung zu programmieren und wollte gleichzeitig auf die selbe library zugreifen,
aber dann bekomme ich den Fehler "wiringPiSetup*: You must only call this one per program run. This is a fatal error.
Please fix your code."
Was kann ich da dagegen machen?
(im Anhang ist die library)
Mit freundlichen Grüßen
Dominic
Ich bin gerade dabei eine Motorsteuerung zu programmieren und wollte gleichzeitig auf die selbe library zugreifen,
aber dann bekomme ich den Fehler "wiringPiSetup*: You must only call this one per program run. This is a fatal error.
Please fix your code."
Was kann ich da dagegen machen?
(im Anhang ist die library)
Mit freundlichen Grüßen
Dominic
Code: Alles auswählen
import wiringpi
# Motor speeds for this library are specified as numbers
# between -MAX_SPEED and MAX_SPEED, inclusive.
_max_speed = 480 # 19.2 MHz / 2 / 480 = 20 kHz
MAX_SPEED = _max_speed
io_initialized = False
def io_init():
global io_initialized
if io_initialized:
return
wiringpi.wiringPiSetupGpio()
wiringpi.pinMode(12, wiringpi.GPIO.PWM_OUTPUT)
wiringpi.pinMode(13, wiringpi.GPIO.PWM_OUTPUT)
wiringpi.pwmSetMode(wiringpi.GPIO.PWM_MODE_MS)
wiringpi.pwmSetRange(MAX_SPEED)
wiringpi.pwmSetClock(2)
wiringpi.pinMode(22, wiringpi.GPIO.OUTPUT)
wiringpi.pinMode(23, wiringpi.GPIO.OUTPUT)
wiringpi.pinMode(24, wiringpi.GPIO.OUTPUT)
wiringpi.pinMode(25, wiringpi.GPIO.OUTPUT)
io_initialized = True
class Motor(object):
MAX_SPEED = _max_speed
def __init__(self, pwm_pin, dir_pin, en_pin):
self.pwm_pin = pwm_pin
self.dir_pin = dir_pin
self.en_pin = en_pin
def enable(self):
io_init()
wiringpi.digitalWrite(self.en_pin, 1)
def disable(self):
io_init()
wiringpi.digitalWrite(self.en_pin, 0)
def setSpeed(self, speed):
if speed < 0:
speed = -speed
dir_value = 1
else:
dir_value = 0
if speed > MAX_SPEED:
speed = MAX_SPEED
io_init()
wiringpi.digitalWrite(self.dir_pin, dir_value)
wiringpi.pwmWrite(self.pwm_pin, speed)
class Motors(object):
MAX_SPEED = _max_speed
def __init__(self):
self.motor1 = Motor(12, 24, 22)
self.motor2 = Motor(13, 25, 23)
def enable(self):
self.motor1.enable()
self.motor2.enable()
def disable(self):
self.motor1.disable()
self.motor2.disable()
def setSpeeds(self, m1_speed, m2_speed):
self.motor1.setSpeed(m1_speed)
self.motor2.setSpeed(m2_speed)
motors = Motors()