Raspberry Pi mit L293D funktioniert nicht

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Prinzaq
User
Beiträge: 2
Registriert: Mittwoch 4. Mai 2022, 21:19

Hallo, ich komme bei diesem Tutorial einfach nicht weiter:
https://tutorials-raspberrypi.de/raspbe ... sammenbau/

Wenn ich den ersten Python code dem Pi ausführe passiert nichts. Wenn
ich versuche, den zweiten code auszuführen, bekomme ich nur die
Fehlermeldung: ImportError: cannot import name 'L293D' from 'l293d'
(/usr/local/lib/python3.9/dist-packages/l293d/__init__.py).

Ich habe alle Bibliotheken mit pip installiert, bzw. geprüft, welche nicht
installiert sind. Außerdem habe ich die Dateien mit sudo rechten
ausgeführt. Ich hoffe sie können mir helfen.

Die Kabel im Breadbord sitzen nicht wirklich stramm, auf dem Pi aber schon. Kann das ein Fehler sein?
Der Code ist auf der Webseite
Vielen Dank im Voraus
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

Ich mag mir kein läneres Tutorial durchlesen um dann zu raten, welchen Code du meinst und was daran der Fehler sein könnte.
Schreib doch bitte, was genau du tust, was passiert und was du stattdessen erwartest.

Zu dem fehlerhaften Import:
Ich weiß nicht, welches Betriebssystem du auf dem Raspo installiert hast, aber die meisten Linux-Systeme installieren aus historischen Gründen mit "python" ein Python 2 (längst abgekündigt) und mit "python3" ein Python 3. Und entsprechend gibt es ein pip für die 2er Umgebung und ein pip3 für die 3er. Möglicherweise hast du also für das falsche Environment installiert.
Aber das ist geraten. Du musst schon etwas mehr ins Detail gehen.
Prinzaq
User
Beiträge: 2
Registriert: Mittwoch 4. Mai 2022, 21:19

Hallo, dies ist der erste code:

Code: Alles auswählen

 import RPi.GPIO as GPIO
import time
import threading
 
#GPIO.setmode(GPIO.BCM)
#GPIO.setwarnings(False)
 
class L293D():
    DIST_PER_SEC  = 35.0 # cm/s
    SEC_PER_TURN  = 2.087 # seconds per full turn (depending on the base material, use forwardLeft(), stop() and time.time() to measure the time)
 
    def __init__(self, left_pin1, left_pin2, right_pin1, right_pin2):
        self.MOTOR_LEFT_PIN1  = left_pin1
        self.MOTOR_LEFT_PIN2  = left_pin2
        self.MOTOR_RIGHT_PIN1 = right_pin1
        self.MOTOR_RIGHT_PIN2 = right_pin2
 
        GPIO.setup(self.MOTOR_LEFT_PIN1, GPIO.OUT)
        GPIO.setup(self.MOTOR_LEFT_PIN2, GPIO.OUT)
        GPIO.setup(self.MOTOR_RIGHT_PIN1, GPIO.OUT)
        GPIO.setup(self.MOTOR_RIGHT_PIN2, GPIO.OUT)
 
    def forwardLeft(self):
        GPIO.output(self.MOTOR_LEFT_PIN1, GPIO.LOW)
        GPIO.output(self.MOTOR_LEFT_PIN2, GPIO.HIGH)
        GPIO.output(self.MOTOR_RIGHT_PIN1, GPIO.LOW)
        GPIO.output(self.MOTOR_RIGHT_PIN2, GPIO.LOW)
        return time.time()
 
    def forwardRight(self):
        GPIO.output(self.MOTOR_RIGHT_PIN1, GPIO.LOW)
        GPIO.output(self.MOTOR_RIGHT_PIN2, GPIO.HIGH)
        GPIO.output(self.MOTOR_LEFT_PIN1, GPIO.LOW)
        GPIO.output(self.MOTOR_LEFT_PIN2, GPIO.LOW)
        return time.time()
 
    def forward(self):
        GPIO.output(self.MOTOR_LEFT_PIN1, GPIO.LOW)
        GPIO.output(self.MOTOR_LEFT_PIN2, GPIO.HIGH)
        GPIO.output(self.MOTOR_RIGHT_PIN1, GPIO.LOW)
        GPIO.output(self.MOTOR_RIGHT_PIN2, GPIO.HIGH)
        return time.time()
 
    def backwardLeft(self):
        GPIO.output(self.MOTOR_RIGHT_PIN1, GPIO.HIGH)
        GPIO.output(self.MOTOR_RIGHT_PIN2, GPIO.LOW)
        GPIO.output(self.MOTOR_LEFT_PIN1, GPIO.LOW)
        GPIO.output(self.MOTOR_LEFT_PIN2, GPIO.LOW)
        return time.time()
 
    def backwardRight(self):
        GPIO.output(self.MOTOR_RIGHT_PIN1, GPIO.HIGH)
        GPIO.output(self.MOTOR_RIGHT_PIN2, GPIO.LOW)
        GPIO.output(self.MOTOR_LEFT_PIN1, GPIO.LOW)
        GPIO.output(self.MOTOR_LEFT_PIN2, GPIO.LOW)
        return time.time()
 
    def backward(self):
        GPIO.output(self.MOTOR_LEFT_PIN1, GPIO.HIGH)
        GPIO.output(self.MOTOR_LEFT_PIN2, GPIO.LOW)
        GPIO.output(self.MOTOR_RIGHT_PIN1, GPIO.HIGH)
        GPIO.output(self.MOTOR_RIGHT_PIN2, GPIO.LOW)
        return time.time()
 
    def stop(self):
        GPIO.output(self.MOTOR_LEFT_PIN1, GPIO.LOW)
        GPIO.output(self.MOTOR_LEFT_PIN2, GPIO.LOW)
        GPIO.output(self.MOTOR_RIGHT_PIN1, GPIO.LOW)
        GPIO.output(self.MOTOR_RIGHT_PIN2, GPIO.LOW)
 
    def forwardDistance(self, dist):
        self.forward()
        threading.Timer(dist/self.DIST_PER_SEC, self.stop)
 
    def backwardDistance(self, dist):
        self.backward()
        threading.Timer(dist/self.DIST_PER_SEC, self.stop)
        


und dies der zweite:

Code: Alles auswählen

 import RPi.GPIO as GPIO
import time
from l293d import L293D
 
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
 
l = L293D(17,27,23,24)
l.stop()
 
for i in range(20):
  l.forward()
  time.sleep(0.5)
  l.forwardRight()
  time.sleep(0.5)
l.stop()
Ich benutze Pip3 mit Python3.
Außerdem läuft auf dem Raspberry Pi das Raspberry Pi OS , welches auf Debian bassiert

Vielen Dank für den Vorschlag
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das sieht komisch aus. Denn laut Fehlermeldung ist das ein systemweit installiertes Package, dieses l293d. Aber in deiner Anleitung soll das eigentlich einfach nur ein Modul neben deinem kleinen Steuerskript sein. Da musste also nix installiert werden. Ich wuerde das also entweder wieder entfernen mit pip uninstall, oder einfach mal die erste Datei umbenennen in zB l293d_test, und den import auf l293d_test anpassen. Und schauen, ob das dann geht.
Antworten