Neben vielen interessanten Projekten mit dem Pi ist ein selbstgebauter Roboter ein kleines Highlight, da er viele Komponenten zusammenführt. In den folgenden Teilen werden wir Schritt für Schritt einen Roboter mit vielen (selbständigen) Funktionen erstellen.
Im ersten Teil der Raspberry Pi Roboter Tutorials bauen wir den Bausatz zusammen und legen Funktionen zum Steuern der Motoren an, womit der Roboter bereits in alle Richtungen fahren kann. Diese werden in den folgenden Teilen benötigt, wenn wir unseren Roboter z.B. fernsteuern oder einer Linie folgen lassen wollen.
Bausatz und Zubehör
Es empfiehlt sich einen Bausatz zu nehmen, welcher bereits das nötigste beinhaltet. Ich habe dazu einen Bausatz mit zwei steuerbaren Rädern genommen, allerdings gibt es auch welche mit 4 Rädern. Anfängern würde ich empfehlen, sofern man dem Tutorial exakt folgen will, den selben Bausatz zu verwenden – es sollte aber nicht all zu viel Aufwand sein, den Code für vierrädrige Karosserien anzupassen.
In diesem Tutorial habe ich folgendes verwendet, da neben dem Bausatz an sich auch noch u.a. ein Motoren Driver IC benötigt wird:
- Roboter Bausatz mit 2 Rädern
- L293D IC
- 4xAA Batterien (1.5V)
- Powerbank (meine Empfehlung: Intenso)
- alternativ: LM2596 Spannungsregler
- Mini Breadboard
- Jumper Kabel
- Lötutensilien (Lötkolben, Lötzinn, Unterlage, etc.)
Welches Raspberry Pi Modell verwendet wird, spielt keine Rolle. Ein Raspberry Pi Zero ist praktisch, da es leicht ist und wenig Platz benötigt, allerdings können später nur schwer Erweiterungen (wie z.B. USB Kameras) angebracht werden.
Raspberry Pi Roboter Bausatz aufbauen
Neben den Rädern und Motoren kommt der Bausatz mit einigen Schrauben und Platten, welche wir zusammenbauen werden. Die enthaltenen Teile des zweirädrigen Bausatzes sind folgende:
Als erstes werden wir die Motoren fest schrauben. Dazu nehmen wir erst einmal die beiden Motoren und befestigen die Rädchen daran:
Mit Hilfe der 4 langen Schrauben sowie wie den 4 kleineren Platten werden die Motoren an der großen Platte befestigt. Dazu wird auf mittig beiden Seiten eine Platte durch das passende Loch geschoben. Der Motor wird daneben platziert. Es muss darauf geachtet werden, dass die Verbindungen beider Motoren jeweils nach innen zeigen.
Auf den äußeren Seiten werden die verbliebenen zwei Platten platziert und die langen Schrauben (von außen) durchgeführt. Innen werden die kleinen Muttern angebracht und damit die Motoren befestigt.
Falls du die Batterien anstelle einer Powerbank verwenden willst, kannst du den Schalter noch in das mittige Loch stecken.
Als nächstes wird das Vorderrad befestigt. Wir nehmen uns dazu das drehende Rad, die 4 Abstandshalter sowie 8 Schrauben. Ich empfehle das Rad etwas zu ölen, bevor es befestigt wird, da es sich manchmal nur schwer bewegen lässt.
Die vier Abstandshalter werden zuerst an das Rad geschraubt. Anschließend werden sie mit den restlichen Schrauben vorne an der Platte befestigt. Außerdem kannst du die Hinterräder an en Motoren befestigen.
Nun müssen nur noch jeweils zwei Kabel an die „Laschen“ (siehe 2. Bild sowie 3. Bild, linke Seite) des Motors gelötet werden, was ein wenig Feingefühl benötigt. Wenn die die Motoren testen möchtest kannst du anschließend je ein Kabel an 3.3V (Pin 1) vom Raspberry Pi heften und eines an GND (Pin 6). Der Motor sollte sich nun bewegen (ob vorwärts oder rückwärts spielt erst einmal keine Rolle).
Der letzte Schritt ist nicht nur für jene, die Batterien verwenden wollen, da die Motoren einen höheren Strom brauchen, als der Raspberry Pi zur Verfügung stellen kann. Dazu muss der Batteriehalter mit den verbleibenden zwei Schrauben und Muttern auf der vorderen Oberseite der Platte befestigt werden. Die Kabel können durch das kleine runde Loch in der Mitte nach unten verlegt werden:
Um die Batterien als Spannungsquelle für den Pi nutzen zu können, brauchst du den Spannungswandler LM2596. Damit wird die Spannung auf 5V angepasst (zum Tutorial). Zwischen USB Anschluss und Spannungswandler kannst du den Schalter verbinden, um so die Stromversorgung ggf. unterbrechen zu können. Der Einfachheit halber nutze ich allerdings eine Powerbank für die Stromversogung des Pi. Im schematischen Aufbau ist der Spannungswandler der Vollständigkeit halber dennoch vorhanden. Die Spannung für die Motoren kommt von den Batterien.
Anschluss der Motoren
Um die beiden DC Motoren vorwärts und rückwärts laufen lassen zu können, benötigen wir den Motor Treiber IC (L293D). Dieser kann 4 Channel steuern, reicht also perfekt für unsere zwei DC Motoren. Im folgenden schematischen Aufbau kannst du die Verbindungen sehen:
Die genaue Funktionsweise und Verkabelung ist auch u.a. in diesem Tutorial beschrieben, daher gehe ich hier nicht genauer darauf ein. Als GPIO Pins für den linken Motor nehme ich 17 und 27 sowie 23 und 24 für den rechten Motor. Achte darauf, dass eine externe Stromversorgung (Batterien) benutzt wird, da der 5V Pin des Pi’s nicht ausreicht (Motoren klappern dann nur).
Code zum Bewegen des Roboters
Als letztes, bevor der Roboter seine ersten Schritte fährt, fehlt noch der entsprechende Code. Dafür habe ich eine Klasse geschrieben, welche auch in den folgenden Teilen verwendet wird.
Wir erstellen einen Ordner, in welchen alle Dateien des Roboters hinein kommen und erstellen die Datei, in welche der Code für den Motor kommt:
sudo mkdir RaspberryPi-Robot cd RaspberryPi-Robot sudo nano l293d.py
Die Datei bekommt folgenden Inhalt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
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) |
Mit STRG+O, STRG+X speichern und schließen wir den Editor. Wir starten einen ersten Test, in dem der Roboter ein paar Zentimeter fährt und sich einmal im Kreis dreht:
sudo python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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() |
Falls die Funktionen nicht funktionieren, wie sie sollten (fährt rückwärts statt vorwärts, etc.) einfach mal die beiden Kabel eines Motors tauschen und erneut testen. Die GPIO Belegung muss natürlich angepasst werden, sofern sie von der hier verwendeten Belegung abweicht.
Anpassen der Motoren-Parameter
Für die weiteren Teile ist es wichtig, dass die beiden Parameter DIST_PER_SEC
und SEC_PER_TURN
richtig angegeben werden. Diese sind allerdings vom Untergrund abhängig (Teppichboden, Parkett, Fließen, etc.) und müssen daher individuell gemessen werden. Um DIST_PER_SEC
zu messen, reicht es folgenden Befehl auszuführen:
l.forward();time.sleep(1.0);l.stop()
Anschließend kannst du einfach den zurückgelegten Abstand messen und den Wert (in Zentimeter) eintragen.
Um SEC_PER_TURN
zu messen, ist ein wenig Geschick nötig. Und zwar starten wir dafür einen der Motoren und stoppen, sobald eine 360° Umdrehung fertig ist. Hier musst du etwas mit der Wartezeit spielen, bis du einen guten Wert gefunden hast:
wartezeit = 2.08 l.forwardLeft();time.sleep(wartezeit);l.stop()
Danach müssen beide Werte noch in der Datei angepasst werden.
Im nächsten Teil werden wir den Roboter einer Linie folgen lassen.
136 Kommentare
I do not like these caster wheels. If you try to go forward, stop and then backward the wheel turn about its pivot point and changes the orientation of the robot. You should be able to go backward and forward repeatedly along the same line.
I think these are better:
https://www.amazon.co.uk/Ball-Caster-Metal-3-8/dp/B0054JDI0G
but you may need more spacers.
Sorry, I do not speak German but I can follow the code, diagrams and pictures.
Great site, Thanks
You’re right, I had this problem, too. It should be no problem to use another wheel but using the same code. I’m glad you liked it 🙂
Hallo Felix,
ich bin neu Einsteiger im Thema Raspberry Pi aber möchte jedoch dieses Projekt durchführen. Wo muss ich die Python Datei ablegen und muss ich auf mein Raspberry Pi irgendein Betriebssystem wie zum Beispiel Raspbian installieren.
Danke vorerst..
Sheldon
Hi,
ja du solltest immer ein aktuelles Raspbian als OS nehmen. Die Python Dateien kannst du in einem Order/Verzeichnis deiner Wahl ablegen (am besten einem neuen Ordner mit entsprechendem Namen nehmen).
Should lines 72 and 76 both be backward()?
No, line 72 should be
self.forward()
. Thanks for the info, I corrected it 🙂Hi
könntest Du evtl. eine Liste aller Bauteile die im Workshop verwendet werde veröffentlichen dann könnte man alle Bauteile auf einmal bestellen.
LG
Stefan
Hi Stefan,
das hatte ich vor zu tun, sobald alle Tutorials fertig sind. Es soll nämlich möglich sein auch bestimmte Teile zu überspringen.
Falls gewünscht kann ich aber meine bisherige Einkaufsliste hier schon mal posten.
LG, Felix
Hallo Felix
würde nicht schaden wenn Du die bisherige Liste posten würdest.
LG
Stefan
Also meine (bisherige Liste):
Und bei folgendem bin ich mir noch nicht sicher, ob ich es rein nehme (ob ich Zeit dafür finde):
Wenn jemand weitere Vorschläge hat und ich Zeit dafür finde, kann ich es auch einbauen.
Hey Felix, ich habe eine H-Brücke wie muss ich es dort vetkabeln? Könntest du ne Skitze auf zeichnen LG Mirko
Hallo Felix,
ich bin neu Einsteiger im Thema Raspberry Pi aber möchte jedoch dieses Projekt durchführen. Wo muss ich die Python Datei ablegen und muss ich auf mein Raspberry Pi irgendein Betriebssystem wie zum Beispiel Raspbian installieren.
Danke vorerst..
Sheldon
Hallo Felix,
kannst Du Deinen Code eventuell um die Funktion PWM für die Geschwindigkeit ergänzen?
Habe für den L298 eingesetzt, dort kann ich über ENA & ENB über PWM die Geschwindigkeit steuern.
Bei meinem 4WD läßt sich dann hoffentlich der Kurvenradius verbessern, z.Bsp.
In1= links-vor, In2= links-zurück, In3=rechts-vor, In4=rechts-zurück, ENA = links, ENB = rechts
Linke Kurve: ENA = 30, ENB = 100, In1=high, in2=low, in3=high ,in4=low
Rechte Kurve: ENA = 100, ENB = 30, In1=high, in2=low, in3=high ,in4=low
und rückwärts:
Linke Kurve: ENA = 30, ENB = 100, In1=low, in2=high , in3=low, in4=high
Rechte Kurve: ENA = 100, ENB = 30, In1=low, in2=high , in3=low, in4=high
Außerdem halte ich es für sinnvoll die Eingänge dauerhaft bereits in der Class „L293/8D“ einzugeben
ENA = 17
IN1 = 27
IN2 = 22
IN3 = 24
IN4 = 23
ENB = 18
Und ggf. eine PWRmax für PWM vorzugeben: PWM_MAX = 100
Leider scheiter ich gerade an genau der Geschwindigkeitsregulierung.
Danke & Gruß
Christoph
Hallo Christoph,
Ich will den Roboter ebenfalls bauen und würde auch gerne ein Modell mit 4 Rädern umsetzen. Hat es bei dir mittlerweile funktioniert? Falls ja, funktioniert das verfolgen der Linie und das auswichen von Hindernissen bei dir auch?
Über eine Antwort würde ich mich freuen.
Hallo Felix,
ich habe viel Spaß mit dem Roboter und Deine Tutorial funktionieren sehr gut.
Für den Spannungsregler war wohl die Eingangsspannung vom Batterieblock zu gering. Ich habe ebenfalls wie Du ein Powerpack benutzt und damit klappt es wie es soll.
Ein Problem habe ich noch: Ein Motor läuft langsamer als der andere und somit kann ich keine Geradeausfahrt erreichen. Wie kann ich dieses Problem lösen?
Für eine Antwort vielen Dank und Gruß
Rolf
Hi Rolf,
freut mich, dass die Tutorials dir gefallen.
Versuch doch mal verschieden große Widerstände zwischen die Stromversorgung des schnelleren Motors zu schalten.
LG, Felix
Vielen Dank Felix für die prompte Antwort,
mit 2 Ohm ist das Problem gelöst.
LG Rolf
Hallo Felix,
ich habe das Problemm, dass ich wenn ich den beispielcode ausführe, sich nur ein motor entsprechend verhält und der andere dauerhaft dreht??
Vllt kennt ja jemand das Problem und weiß hilfe 🙂
Gruß
Basti
hi, könnte mich kurz jemand aufklären welche aufgabe genau das driver board übernimmt? 🙂
Zum einen wird die höhere Spannung abgegeben (Pi kann nur 3.3V schalten, Motor will mehr) und außerdem muss beim rückwärtsfahren anders gepolt werden, was der Driver Board auch übernimmt.
LG, Felix
Hallo, Ich würde das gerne nachbauen, nun meine Frage:
Ich würde die Grundplatte gerne aus Aluminium machen und noch ein Gehäuse aus Alu oder Holz bauen, aber sind die Motoren des Sets dann noch stark genug? Und wenn nein, wo bekomme ich stärkere Motoren die auch 90 Grad gedreht sind?
Wie schwer wird die Konstruktion denn? Du kannst auch andere DC Motoren nutzen, die stärker sind (und man ein Rad daran anbringen kann).
Hallo,
ich habe gesehen, dass es auch solche Motor Shields gibt (https://www.amazon.de/Adafruit-Schrittmotor-HAT-für-Raspberry/dp/B00WU4QA30/ref=sr_1_8?s=ce-de&ie=UTF8&qid=1487533545&sr=1-8&keywords=raspberry+pi+motor) oder (https://www.amazon.de/dp/B01MRKBO8L/ref=sr_1_7?s=ce-de&ie=UTF8&qid=1487533545&sr=1-7&keywords=raspberry+pi+motor)
Könnte man auch ein solches Motor Shield verwenden und dafür auf den L293D IC und den und das Breadboard irgendwie verzichten? Bzw. würden die weiteren Teile des Projekts dann auch noch funktionieren (Ultra-Schall etc.) ?
In der Beschreibung des ersten Links steht, dass man auch DC Motoren damit betreiben kann, also würde ich zu ja tendieren. Ob du damit aber z.B. auch rückwärts fahren kannst, kann ich nicht sagen.
Hallo, ich bin raspifrosch und habe jetzt alle Teile für den Roboter. Nach Plan habe ich den ersten Schritt getan, aber die Motoren zucken nicht. Ich habe den Raspberry3 über das Spannungsreglerteil angeschlossen. Ist in der Zeichnung nicht in und out vertauscht?
Auch ohne dieses Teil passiert mit Batterien nichts. Muss ich denn den Raspy auch über microusb mit Spannung versorgen? Nur über die Batterien arbeitet er nicht.
Nein, wieso sollte es vertauscht sein? Falls keine Powerbank vorhanden ist, kommt der Strom eben aus den Batterien. Ich empfehle allerdings die Powerbank Variante. Der Pi braucht natürlich Spannung über den MicroUSB Port.
Hallo,
ich möchte für das Projekt gerne einen größeren Aufbau verwenden.
Kannst du mir sagen, wie die hier verwendeten Motoren heißen (Bauteilbezeichnung oder Kennung – ähnlich L293D etc.)?
Und kannst du geeignete Motoren empfehlen, die etwas mehr Leistung bieten?
Vielen Dank
Die genaue Bezeichnung kenne ich leider nicht, aber da kann jeder beliebige 5V DC Motor genommen werden.
Hallo Felix,
tolles Projekt hast Du da! Ich würde das gerne nachbauen, bin aber ganz am Anfang (mein erstes Projekt überhaupt). Ich habe mich für die Powerbank-Variante entschieden -> damit entfallen Batterien, Spannungswandler und ich habe nur eine 5V Verbindung zu GPIO 1 bei Pi, richtig? Ich habe auch wie Du geschrieben hast, ein Mini Breadboard benutzt. Damit habe ich aber keine 2 Außenreihen wie beim Standard Breadboard in Deiner Zeichnung. Bin mir nicht sicher, ob ich das Stecken richtig adaptiert habe. Wäre es möglich, dass Du kurz die Verkabelung mit Powerbank und MiniBreadboard für einen Noob wie mich zeigst?
Hallo Peter,
in diesem Artikel habe ich Breadboards im allgemeinen erklärt 🙂
LG, Felix
Hallo Felix,
ich schließe mich mal hier an. Den Artikel habe ich gelesen und ebenfalls ein Mini-Breadboard. Wie man im Video sieht, verwendest du das auch. Hast du dazu ein Schema oder vielleicht ein Foto deines Aufbaus mit der Verkabelung? Ich weiß nicht so recht, wie ich die vielen Anschlüsse, die man in deiner Skizze sieht, auf dem Mini-Breadboard unterkriegen soll.
Danke schonmal und Grüße
Florian
Schau dir diesen Artikel an, da sind Breadboard erklärt. Danach ist es einfach dies entsprechend umzubauen: Raspberry Pi GPIO Erklärung für Beginner + Programmierung (Teil 2)
Na ja, ganz so einfach ist das nicht, wenn man das zum ersten Mal macht. ?
Ich habe mich mal in dieses Fritzing reingefuchst und versucht, das logisch nachzuvollziehen und entsprechend umzusetzen.
Hier ist mein Aufbauplan mit Mini-Breadboard: https://drive.google.com/file/d/1QOhGIK8XcASNHtgtWCaQp46ZJsh5Qdsu/view?usp=sharing
Da ich eine Powerbank für den Pi benutze, habe ich den Spannungswandler weggelassen, dafür aber schon die anderen Schritte des Roboters übernommen.
Getestet habe ich es noch nicht in echt. Vielleicht kannst du ja Feedback dazu geben, Felix?
Könnte auch hilfreich für andere sein, die ebenfalls ein Mini-Breadboard benutzen.
Hallo,
Ich hätte mal bezüglich der Jumper Kabel eine Frage.
Es gibt ja male-female & female-female welche davon sollte ich nutzen für dieses Projekt? 🙂
Für alles, was direkt auf den Pi kommt: Eine Seite Female
Für alles, was in ein Breadboard kommt: Eine Seite Male:
Für die meisten Sensoren (aber nicht alle): Eine Seite Female
Hallo Felix,
Kann man also in der Schaltskizze einfach statt den Batterien eine Powerbank nehmen?
Bzw. sind die vier Batterien genug Leistung um auch länger zu halten?
Ich habe beides genutzt – die Powerbank für den Pi und die Batterien für die Motoren, da diese mehr Stromstärke brauchen, als dass der Pi hergibt.
Geht es aber auch ganz ohne Powerbank?
Ja, steht doch dabei: Raspberry Pi mit Akkus/Batterien betreiben
Hallo,
wird die Code Erweiterung in dem oberen geschriebenen Code angepasst, oder schreibt man dafür eine weitere Datei mit den paar Zeilen.
Da ich mir die Python Kenntnisse erst hiermit aneignen möchte, ist mir dies leider nicht ganz klar.
Jedenfalls ein sehr interessantes Projekt, welches du hier präsentierst.
Gruß Paul
Die paar Zeilen kommen in eine separate Datei oder werden einfach in der Python Konsole ausgeführt (Indiz für eine neue Datei ist meist das import an erster Stelle).
Hallo Felix,
1) Soll sudo mkdir RaspberryPi-Robot
cd… in den Terminal geschrieben werden und der code dann in die geöffnete Datei?
2)Nach sudo python soll da noch der dateiname oder so? Weil ohne kommt bei mir eine Art Fehlermeldung.
3) Um am Schluss die beiden Parameter messen, muss eine neu datei geöffnet werden? Und was muss außer den drei Befehlen rein?
(Bin neu deshalb die ganzen Fragen)
1) Ja, ins Terminal (sudo ist generell ein Hinweis, dass es im Terminal ausgeführt wird [mit Rootrechten])
2) Ohne Dateiname (nur sudo python) öffnest du die Python Konsole. Mit exit() kannst du diese beenden.
3) Du kannst es entweder in eine Datei speichern und dann ausführen oder sequentiell in der Reihenfolge in die Python Konsole eingeben.
Hallo Felix,
ich habe jetzt (glaube ich zumindest) den Großteil verstanden bis auf den letzten Teil, wo man die Werte misst, was muss man genau alles schreiben bis auf die drei befehle (ich dachte noch import, bzw. auch ‚l‘ festlegen)???
Danke im Voraus
Ich bin davon ausgegangen, dass man die Python Konsole bereits geöffnet und die vorherigen Befehle eingegeben hat (wie oben beschrieben). Da ist ja bereits import usw. enthalten, daher können diese Befehle einfach hintereinander eingegben werden.
Hallo Felix,
Bis vor ein bis zwei Wochen ging noch alles, nur wollte ich jetzt nochmal die Werte DIST_PER_SEC und DIST_PER_SEC nochmal genau messen. Mein Problem ist jetzt, dass sich nichts mehr tut auch wenn ich nochmal den ersten test (mit dem drehen und gerade aus fahren) ausführe. Wenn ich die Motoren direkt an die Batterie anschließe bewegen sie sich, wobei die Spannung nur bei ca. 3V liegt…
Ist die Spannung zu niedrig um das Programm durchzuführen (habe den Raspberry gerade am Netzteil aber normalerweise käme er auch noch an die aa Batterien)?
Ps: Du machst richtig gute Projekte und auch gut erklärte!
Hi Marvin,
kann es sein, dass sich ein Kabel oder so gelöst hat? Wenn sich nichts (am Code) verändert hat und etwas auf einmal nicht mehr funktioniert, klingt das üblicherweise nach einem Wackelkontakt o.ä.
ich habe jetzt nochmal alle kabel rein- und rausgsteckt , aber es ist immer noch alles gleich. ist denn die Spannung von den Batterien von ca. 3vVüberhaupt ausreichend, an dem Modul direkt kommt auch nur so 2.4V raus für den Motor. Eigentlich müsste die Spannung von den Batterien doch eher so im Bereich 5-6V liegen, oder?
Ja, bei 4 Batterien, sollte die bei 4-5V liegen. Hast du sie neulich mal gewechselt?
Ja es waren die Batterien, obwohl ich sie kaum genutzt habe…
Danke für die Hilfe
Was muss ich tun wenn die Fehlermeldung kommt: Import error: No module named l293d?
Lg
Du hast das Skript nicht erstellt oder anders benannnt.
Hi Johann,
bekomme die gleiche Fehlermeldung. Hast du das Problem beheben können?
Vielen Dank für dein Feedback
Nachdem ich die Datei neu geschrieben und gespeichert habe kommt bei mir bei dem Test immer eine Fehlermeldung wenn ich die 3. Zeile eingebe: cannot Import name L293D
Vergleiche deinen Code / Dateien mit dem aus meinem Repository.
Wenn ich bei dem Test eingebe: l=L293D(17,27,23,24)
Kommt immer wieder der Fehler: this constructor Takes No arguments
Hat sich gelöst ☝? Aber jetzt schreibt er mir das „L293D instance has no attribute stop“ ?
Bedeutet, dass in der Klasse die entsprechende Funkion fehlt.
Wie hast du das gemacht ??
Ich bekomme das auch nicht hin.
Ich hätte mal noch eine Frage, wenn ich den Test im Terminal eingebe passiert nichts. An den Batterien liegt es nicht ?
Hey,
ich habe den Bausatz bestellt. Bei mir waren diese kleinen runden Plättchen, die an den Motor gesteckt werden gegenüber der Räder nicht dabei.
Brauche ich die Plättchen (Rädchen) zwangsweise? Für was genau sind die denn da?
Die sind zur „Balancierung“ da, aber nicht unbedingt nötig.
Nur als Schalter?
Beim 10k Widerstand ist nur wichtig, dass bei fließender Spannung, nur ein minimaler Teil zu GND fließt (hier ginge auch 4.7k oder mehr). Bei 3.3V kann der kleine Widerstand auch weggelassen werden. Ich habe diesen rein, um zu zeigen, dass nur ein kleiner Strom nötig ist, um den Transistor zu schalten.
Hallo Felix,
Hilfe!!! Mein Roboter ist unfassbar schnell. Weißt du wie ich den kleinen langsamer fahren lassen kann?
Hier steht was von pwm.
Kannst du evtl. kurz beschreiben wie das geht?
Durch PWM kannst du den Motoren weniger Strom zukommen lassen, wodurch sie langsamer werden. Darauf bin ich in dieser Tutorial Reihe nicht eingegangen. Eventuell kommt dazu in der Zukunft etwas.
Hallo!
Bin recht neu und noch viel am expermimentieren 🙂 Jetzt hab ich mal eine Frage zur Stromversorgung bzw. Motorsteuerung.
Ich habe ein Motortreibermodul (L298N Dual H Bridge MTS1EU). An 12V und GND habe ich Batterien angeschlossen (zusammen 6V – 4xAA zu 1.5V). An der linken Seite an Out1/2 habe ich einen Motor angeschlossen. Von ENA und IN1 + IN2 gehen Verkabelungen an den Raspberry.
Nun meine Frage:
1. Wenn ich derzeit noch keinen Spannungswandler einbauen möchte – muss ich dann zusätzlich meinen Raspberryi Mod.2 B zusätzlich noch ganz normal mit Netzteil versorgen?
2. Muss ich beim Motortreiber von GND eine Verkabelung an GND des Raspberry legen – und warum?
1. Ja, der Pi braucht exakt 5V. Mehr macht ihn kaputt. Würde aber zur Versorgung über einen Akku / Powerbank raten.
2. Bei wie vielen Stromquellen? Bei einer ist es nicht unbedingt nötig. GND kannst du aneinander schließen, damit die Stromkreise geschlossen werden.
Hallo Felix,
super Projekte, die du auf deiner Seite veröffentlichst.
Ich habe das Problem, dass sich beide Motoren nur sehr langsam drehen, wenn man sie über den Rasberry Pi ansteuert. Woran könnte dies liegen?
Evtl bekommen sie nicht genug Strom (Batterien schwach?) oder der Roboter ist zu schwer für die Motoren.
Die Batterien sind voll und der Roboter ist leicht. Damit die Räder sich überhaupt drehen muss man sie anstoßen.
Dann miss mal die Stromstärke. Ich denke, da kommt nicht genug bei den Robotern an.
Könnte das daran liegen, dass ich ein großes breadboard anstatt eines kleinen verwende?
Nein, damit sollte es (bei richtiger Verkabelung) nichts zu tun haben.
Ich habe jetzt noch mal alles geprüft und die Spannung gemessen die die Motoren erhalten.
Es liegt eine Spannung von 5.8 – 6 Volt, je nach Batterie zustand an.
Die Motoren erhalten allerdings nur maximal 0.7 – 1.2 Volt, wenn das Programm läuft.
Hättest Du noch eine letzte Idee, woran das liegen könnte?
Ich habe ein Verständnis-Knoten bezüglich der Spannungsversorgungen.
In der Fritzing Zeichnung ganz oben nutzt du 4×1,v Batterien.
1.) somit gehen 6Volt direkt auf die Motoren
2.) Durch den Spannungswandler LM2596 erzeugst Du 5Volt. Hier brauchte ich eine Weile zu erkennen, was IN und OUT ist. Denn im ersten Moment dachte ich die Buchse ist für die Powerbank. Aber das soll der 5V Ausgang für den Raspi sein, richtig?
Magst Du nicht noch hier einen Leitungsverbinder eintragen? Oder zumindest eine Beschreibung: 5V DC Ausgang, zum Raspi.
Du schreibst, dass eine Powerbank durchaus nutzbar wäre. Diese nutze ich dann auch für die Motoren?
a.) Das heißt dann 5V anstelle von 6V?
b.) Werden die Motoren dadurch dann nicht deutlich langsamerer?
c.) Der Spannungsregler wäre somit obsolet.
Übrigens: Vielen Dank für das sehr gute Tut! Genau, wonach ich gesucht habe.
Danke im Voraus für eine Antwort.
Viele Grüße,
michael
Hallo.
Was bewirkt die Funktion „Return time.time()“ ?
Gibt den aktuellen Zeitstempel zurück
Hallo Felix.
Für was benötigt man diese Funktion?
War dazu gedacht, dass man weiß, wann die Aktion beendet wurde (ab Zeitspemel X wird nicht mehr gefahren), sodass man bspw. eine Pause einlegen kann und automatisch nach X ms weiter fahren kann. Braucht man aber nicht unbedingt.
Danke
Hallo Felix,
mein Roboter kann normal fahren, aber sobald ich in die Funktion „time.sleep(0.5)“ einfüge bewegt er sich garnicht mehr.
Woran könnte dies liegen?
VG,
Dieter
Wo fügst du sie ein? time.sleep(0.5) hält das Skript eine halbe Sekunde an.
In den zweiten Code unter „for i in range (20):“, wenn dort nur „l.forward()“ steht funktioniert alles, wenn ich aber noch „time.sleep(0.5)“ oder „l.forwardright()“ einfüge passiert nix mehr es kommt auch keine Error Meldung.
Logge doch einfach mal, was passiert (via print).
Das geht aber er fährt trozdem nicht.
Hi, erstmal vielen Dank für das Tutorial! 😀 Habe jedoch einige Verständnisfragen – bin noch komplett neu in diesem Gebiet – bezüglich dem Anschluss der Motoren. Zum Einen ist mir noch nicht ganz eindeutig, wie ich die Motoren mit dem Breadboard verbinde. Mithilfe der Jumper-Kabel? Oder muss ich da etwa Löten? Außerdem verwirrt mich das animierte Schaubild etwas. Was ist das blaue ganz rechts neben den Batterien? Und „das Ding“ über der Batterie soll die Powerbank sein?
Vielen Dank nochmals!
DU kannst entweder löten – oder wenn es dir lieber ist auch einfach mit Jumper Kabeln und Breadboard verbinden. Das „Ding“ neben den Batterien ist der LM2596. Kannst du aber ignorieren, wenn du eine Powerbank nutzt. Das darüber ist ein USB Anschluss (als Input für den Raspberry Pi).
Hi, danke erstmal für die schnelle Antwort! 🙂 Man benötigt für die Verbindung zwischen dem Breadboard und dem Raspberry Pi ein Female-Male-Jumper Kabel? Male-Male Kabel klappt nicht? Könnte man für Male-Male-Kabel nicht folgendes zur Hilfe nehmen? https://www.abelectronics.co.uk/docs/stock/breakout/40way-cable/40way-cable.jpg
Oder existiert eine andere Möglichkeit?
Du kannst auch löten, aber Male-Female Jumper Kabel sind die sauberere Lösung zum testen und 40 dieser Kabel kosten auch nur wenige Euro.
Hallo Felix,
Ich habe alles so verkabelt wie in der Zeichnung und auch noch mal den Strom geprüft (Die Motoren funktionieren auch wenn sie direkt angeschlossen werden) aber der Roboter will sich einfach nicht bewegen auch wenn ich den code starte. Den code habe ich von GitHub heruntergeladen.
Auf dem Desktop des Raspberrys (3 b).
Hast du irgendwelch Tipps wie ich weiterkomme ?
Du kannst die Dateien mal über die normale Python Konsole importieren und die Funktionen manuell starten. Sollte das nicht zum Ergebnis führen, bearbeite die entsprechende Datei und setze Logs (print). Damit kannst du sehen, falls die Funktion nicht ausgeführt wird bzw. ob es zum Fehler kommt. Ist das nicht der Fall, liegt es sehr wahrscheinlich am Aufbau.
Hallo.
Halten die Motoren auch 9 Volt aus?
VG
Musst du im Datenblatt schauen, denke aber nicht.
Hallo zusammen
Ich bin gerade dabei das Projekt von Felix nachzubauen habe allerdings ein paar schwierigkeiten mit der verkabelung vom Raspberry und dem mikrochip deer verwendet wird (hier der link zum bild das mich so verwirrt: https://tutorials-raspberrypi.de/wp-content/uploads/2016/07/Raspberry-Pi-Roboter-Bausatz-DC-Motoren-L293DLM2596.png). Ich erkenne nicht welches kabel wohin gehöhrt, ich habe zwar schon einen aufbau weiß aber nicht ob der so richtig ist. ES wäre nett wenn mir einer helfen könnte mit einem Foto oder einem Video.
Danke im voraus
LG Max
Hast du Probleme mit dem Breadboard Aufbau? Falls ja, schau dir mal dieses Tutorial an.
Danke für deine schnelle Antwort, aber gerade diese Animierten schaltpläne sind sa wo ich noicht durchsteige. Deswegen würde mir ein Foto von dem ganzen Aufbau des Breadboards mit dem Raspberry weiterhelfen. Ich würde dir ja ein Foto zukommen lassen wo man sieht wie ich das aufgebaut habe, aber das geht ja leider nicht über die Kommentare.
LG Max
Wo findest du denn animierte Schaltpläne? Falls du Fragen zum schematischen Aufbau hast, stell sie gerne. Fotos (einfach verlinken) sind da meist nich hilfreich, da man die Verbindungen nicht gut nachvollziehen kann.
Erstmal ich finde nirgendswo Animierte Schalpläne das war das falsche Wort.
Ich meine den schematischen Aufbau.
Und noch eine Frage, bei deinem Bausatz sieht man mehrere rote und schwarze Kabel (https://tutorials-raspberrypi.de/wp-content/uploads/2016/07/Raspberry-Pi-Roboter-Bausatz-%C3%9Cbersicht.jpg) bei mir war von beidem nur eins vorhaden die auch schon angeschlossen sind und ich habe als Ersatz einfach die Jumperkabel genommen. Die übertragen aber keinen Strom wenn ich sie angeschlossen habe, sprich da passiert nichts. Weißt du woran das liegt, darf ich die dafür überhaupt benutzen und wenn nicht wo hast du die anderen Kabel her ( waren die schon im Bausatz mit drin)?
Dankeschön auch nochmal das du immer so schnell antwortest und versuchst mir zu helfen.
LG Max
Die Kabel sind für die Motoren (welche du nimmst ist egal). An ein Ende positive Spannung ans andere GND. Mit dem L293D kannst du umpolen.
Ich habe das mal ausprobiert und die Kabel verschieden rum angesteckt aber da bewegt sich immer noch nichts.
Hallo allerseits,
ich bin ratlos, der linke Motor bewegt sich einfach nicht, der rechte dagegen schon. Wenn ich die Kabel direkt mit dem Strom verbinde, dann funktioniert es, aber nicht wenn ich es am Breadboard anschließe. Die Kabel und der Motor sind also in Ordnung.
Ich habe auch schon die Seiten vertauscht, also die Anschlüsse des linken Motors auf der rechten Seite eingesteckt. Das Irre ist, dass es dann auch nicht geht, aber wenn ich den rechten Motor wieder dort anschließe, dann funktioniert dieser.
Ich kapier es einfach nicht: Kabel sind in Ordnung, Motor auch, aber auf dem Breadboard geht es einfach nicht, egal wo ich es anschließe. Aber der rechte Motor läuft problemlos an den selben Anschlüssen. Das kann doch nicht sein?!
Vielleicht hat jemand einen Tipp für mich. Kann es auch mit den GPIO-Pins zu tun haben? Obwohl die Belegung am Pi ja egal sein müsste …
Grüße
Florian
Hast du evtl. noch einen zweiten L293D IC da, mit dem du es testen kannst?
Hey, danke für die schnelle Antwort. Leider nein, aber ich glaube kaum, dass es daran liegt. Ich habe es gerade nochmal getestet: Wenn ich den rechten Motor einstecke, egal auf welcher Seite, funktioniert er immer. Wenn ich an der gleichen Stelle stattdessen den linken Motor einstecke, dann geht der nicht. Aber wenn ich die Kabel direkt an den Strom stecke, dann geht der Motor, er ist also nicht defekt und die Kabel sind auch okay. Das ist ja das Verrückte. ?♂
Hey, nur zur Info, falls andere auf solche Probleme stoßen. Ein Kollege meinte, dass vielleicht der Motor nicht genug Strom bekommt und wohl nur direkt an der Stromquelle funktioniert. Das könne an schwankenden Toleranzen liegen und wäre dann einfach Pech. Ich habe den eBay-Händler des 2WD-Gestells gefragt, ob er Ersatz schicken könnte, und das tat er auch kostenlos. Mit dem neuen Motor geht es jetzt! Ein Problem weniger. ?
Hallo Felix,
ich habe deine Anweisungen beim bau und programmieren genau befolgt doch bei meinem python programm tauchen errors auf die sagen das es kein modul namens l293d oder L293D vlt hast du ja eine lösung
Ist die Datei im gleichen Ordner?
Ja
Hi, warum ist es notwenig DIST_PER_SEC und SEC_PER_TURN im Skript l293d.py zu definieren?
Wenn du willst, dass der Roboter x cm fahren soll, musst du seine Geschwindigkeit wissen.
Hey,
Also ich bin noch totaler Anfänger auf dem Gebiet und wollte jetzt fragen wie ich die Kabel von den Batterien verbinden soll oder bzw. wo weil wenn ich die an einem Motor dranmachen dreht sich nur des eine Rad und ich versteh irgenwie allgemein nicht was du damit gemeint hast. Weil wozu brauch ich die Batterien
hilfe 🙁
Weil die beiden Motoren mehr Strom brauchen als der Raspberry über die GPIO pins zur verfügung stellen kann. Also würden sich die Motoren langsam bis granicht drehen und um das zu umgehen schließt du die Batterien ans Breadboard an damit die Motoren genug Strom bekommen können.
Mit freundlichen Grüßen
Max
Warum steht da
File „“, line 7
l.stop()
^
SyntaxError: invalid sytax
Wenn ich Versuche den Code zu testen?
ich kriege den gleichen Fehler @Felix, woran könnte das liegen? hab Ordner + Datei genauso angelegt wie oben beschrieben …
Hey Felix,
ich hab das gleiche Problem wie Eron Qorri.
Bei mir steht auch:
File „“, line 7
l.stop()
^
SyntaxError: invalid sytax
Was muss ich machen damit es funktioniert?
Danke im Voraus.
Mit freundlichen Grüßen
Max
Also ich hab das jetzt schon einigermaßen auf die Reihe bekommen, aber wenn ich folgendes eingebe: l = L293D(17,27,23,24)
dann sagt er mir: TypeError objekt is not callable
aber mit dieser Zeile möchte man ja „l“ mit „L293D(17,27,23,24)“ gleich setzten also l so definieren damit man das nicht immer so voll ausschreiben muss oder?
Und macht es einen unterschied wenn ich das alles nacheinander eingebe und nicht als Blocksatz?
Ich fände es sehr nett wenn du mir nochmal ein wenig genauer erklären könntest wie du das gemacht hast, wenn es bei dir auch ein paar schwierigkeiten gab.
Danke im voraus.
Mit freundlichen Grüßen
Max
Hallo,
Vielen Dank für dieses Tutorial. Toll erklärt und bebildert. Ich habe trotzdem ein Verständnisproblem. Sind die Zeilen 45 & 52 so richtig sind? Rein von der Logik hätte ich einen Rechts-Links Tausch erwartet. Aber mal abgesehen davon habe ich folgendes Problem. Vorwärts jeweils einzeln und zusammen funktioniert. Rückwärts geht nur eine Seite. Die andere Seite überhaupt nicht und wenn beide Rückwärts drehen sollen, dreht nur die funktionieren ganz, ganz langsam. Wo liegt der Fehler?
Danke
Torsten
Hey Felix,
danke für deine Tutorials. Ich will die Weihnachtszeit nutzen, um einen Roboter nach diesem Tutorial zu bauen. Allerdings habe ich mir ein anderes Fahrgestell ausgesucht und jetzt bin ich unsicher, welche Auswirkungen diese Änderung hat.
Wenn mein Fahrgestell mit zwei „12 Volt DC Motoren“ ausgerüstet ist, dann brauche ich einen Batteriehalter mit 8x AA, damit genug Volts im System sind. Ich kann aber trotzdem das Batteriepack an den L293D IC anschließen und den L293D IC (ohne Widerstand dazwischen) an den Raspberri Pi anschließen, ohne zu befürchten, dass der Rpi gegrillt wird. Der Grund ist, dass der L293D IC die Spannung erst durch die Motoren leitet. Diese stellen einen Widerstand dar, d.h. sie fressen die 12 Volt auf und dann kommt beim Rpi nur noch ganz wenig Spannung an.
Habe ich mir das so richtig überlegt?
Gruß
Johannes
P.S. das Fahrgestell: https://www.amazon.de/CS-PRIORITY-Damping-Aluminium-Platform/dp/B0721XWJJ8/ref=sr_1_2?ie=UTF8&qid=1543932756&sr=8-2&keywords=4WD+Aluminum+chassis
Hallo,
ich bin’s nochmal. Ich habe jetzt mit einem Freund deinen Schaltplan und das Datenblatt des L293D studiert. Wir konnten uns eigentlich alles erklären, bis auf eine Sache: Der IC bekommt Strom aus 2 verschiedenen Quellen: Vom Batteriepaket bis zu 36V zur Versorgung der Motoren und vom Rpi ca 5V zur Versorgung der Logik. Während es also zwei Stromeingänge gibt hat der IC 4 Stromausgänge („Heat sink“/GND/Masse). In deinem Schaltplan werden alle diese vier Ausgänge an den RPI am Pin GND angeschlossen. Warum geht das?
Folgende Situation: Alles ist nach deinem Plan miteinander verkabelt. Der Rpi gibt den Befehl die Motoren auszustellen (alle GPIO Pins auf LOW). Jetzt nehmen die Motoren keinen Strom mehr ab. Es liegen aber trotzdem immer noch die vollen 36V aus dem Batteriepaket an dem IC an (+die 5V vom Rpi). Die laufen durch den IC, durch die Motoren, werden in beidem NICHT verbraucht und so landen die vollen 36V auf ihrem Rückweg zum Batteriepaket im Rpi. Denn du schließt in deinem Schaltplan alle Stromausgänge des IC an den Rpi an.
Wenn es so wäre, dann hätten sich mit Sicherheit schon mehrere Leute über dieses Tutorial beschwert… 36V killen den Rpi locker. Aber warum ist es denn anders? Was verstehe ich nicht/falsch? Mit Sicherheit versteckt sich da noch irgendeine Funktionalität in dem IC, die ich übersehe.
Gruß
Johannes
Hallo,
vielleicht eine dumme Frage eines Anfängers, aber:
wenn ich am Raspberry Pi die Befehle eingebe, brauche ich doch ein Display. Dann kann der Roboter aber doch gar nicht fahren weil er an der Strippe hängt oder?
Grüße
Hallo Daniel,
Das ist richtig, deshalb empfiehlt es sich das Raspberry über eine remotedesktopverbindung oder SSH zu steuern. Wie das funktioniert ist in Tutorials auf dieser Seite erklärt.
Lg
Hallo,
zunächst Erstmal Lob für die ausführliche Beschreibung des Projektes. Ich bin als Anfänger zur Zeit mit dem Raspberry Pi am probieren und bin dabei auf dieses Projekt gestoßen. Leider hat sich folgendes Problem ergeben: Bei mir dreht sich der rechte Motor, wie es sein soll: Er dreht einige Umdrehungen, macht kurz Pause, dreht erneut ein paar Umdrehungen. Der linke Motor dreht sofort, wenn ich Strom auf das System gebe. Leider habe ich keine Ahnung woran es liegen könnte. Als kleine Abweichung ist zu erwähnen, dass ich anstatt des L293D IC ein L298H Brückenmodul zur Motorensteuerung verwende.
Muss ich dazu vielleicht noch etwas an dem Programm anpassen?
MFG
Hey Felix,
Ich habe mir den Bau eines solchen Roboters vorgenommen und im voraus schon mal vielen dank für dieses Tutorial. Ich habe mittlerweile mein chasis fertig und alles verkabelt,zumindest so, dass die Motoren angesteuert werden können. Leider wird mir mit dem ersten obigen Code immer eine Fehlermeldung im Bezug auf den l293d ausgeworfen,da dieser nicht definiert ist. Muss davor so etwas wie ein Treiber dafür installiert werden oder kann der Grund dafür eine ungenügende Stromversorgung sein ? Bin leider noch Anfänger und etwas ratlos. MfG Thomas
Hallo,
ich habe folgendes Problem: Ich habe derzeit zwei Code-Dateien im Ordner Roboter angelegt. Die erste Datei heißt l239d und enthält die Methoden aus der Anleitung. Die zweite Datei habe ich als l239d_programm bezeichnet (Name sollte hier ja egal sein). Wenn ich die erste Datei kompliere, kommt keine Fehlermeldung, bei der zweiten Datei kommt Folgendes „import l239d as L239D, ImportError: No module named l239d“. Was habe ich hier falsch gemacht? Habe ich ein Programm nicht installiert oder liegen die Dateien im falschen Ordner?
Danke und viele Grüße
Georg
ich kann zwar nicht helfen aber habe das selbe Problem und finde keine Lösung…falls sie eine Finden wäre ich dankbar wenn sie die Lösung hier veröffentlichen gleiches werde ich tun.
Mfg TS
Hey Georg, ich habe das Problem jetz gelöst.
Du musst die erste Methode,die als l293d.py gespeichert wird, in die python (idle), aber imEditor Modus schreiben und dann speichern. Danach kannst du, ebenfalls im Editor, das testprogramm schreiben und dann mit F5 (Start module) starten.So hat es bei mir zumindest funktioniert. Lg
Hey Thomas,
danke für deine Antwort. Ich bin mir relativ sicher, dass es bei mir dasselbe Problem. Könntest du mir genau schreiben, was ich in den Editor schreiben muss und was in die Codedatei? Was meinst du mit python(idle)?
Viele Grüße
Georg
Du musst die Klasse mit dem Befehl „from l293d import L293D“ abrufen. Steht so aber auch oben im Code. Mit der Python IDLE meint er einfach einen der Python-editoren, der auf dem RasPi installier ist. Das Symbol ist eine Blau und eine Gelbe Schlange, die sich berühren.
LG Manvel460
Moin,
Das Problem liegt beim Befehl. Du musst die Klassen über den Befehl „from l293d import L293D“ aufrufen, wie auch oben in den skripten. Die Python IDLE ist einfach nur ein Python Editor, der bei dem Betriebssystem Rasbian vorinstalliert ist.
MFG
Hallo
Ich habe Teil 1 gebaut
Mit was starte ich das Auto?
Muss ich den code vorher an einem computer oder direkt am RP schreiben?
Hallo, das Projekt ist sehr interessant. Ich habe nur ein kleines Problem. Ein Motor verhält sich wie es gewünscht ist, der andere dreht sich dauerhaft. Vertausche ich die Motoren, ist es genauso. immer der Motor, der an der Rechten Seite ist, dreht sich dauerhaft. Im Code ist alles richtig. Problem tritt auch auf, wenn ich die Original Datei verwende.
Den Startcode habe ich in eine Datei geschrieben, da es an der Konsole geschrieben, nicht funktioniet. Aber das sollte nicht das Problem sein. Das Problem hatte ier schon einmal jemand besachrieben. leider gab es dazu keine Antwort. Kann mir da jemand weite helfen?
hy,
kann mir jemand helfen, immer wenn ich diesen code:
eingebe, kommt immer:
from l293d import L293D
ModuleNotFoundError: No module named ‚l293d‘
könnte mir da bitte jemand helfen ??
Danke im vorraus
Tom
Die Datei l293d.py existiert nicht / wurde nicht gefunden, daher der Fehler.
Hallo ich hätte eine Frage zum Code. Wozu ist die Methode forwardDistance da? Was bezweckt sie?
Ich hoffe, es kann mir schnell einer Antwort.
Danke schon mal Voraus. 🙂
Wenn du eine bestimmte Länge (z.B. 50cm) fahren möchtest, kannst du diese Funktion nutzen.
Hallo Felix,
ich bin absoluter Anfänger gerade in Sache Elektrik. Erstmal möchte ich dir für diese mega coole Seite danken. Muss unglaublich viel Arbeit gewesen sein! Jetzt zu meiner Frage bezüglich des Schaltplans…Die „Power“ kommt doch von den Batterien auf das Breadboard , wieso kommt nochmal extra von dem Raspberry Pi 5V auf das Breadboard. Würde mich sehr über eine Antwort von jemanden freuen, da ich Angst hab meinen neuen Pi zu zerstören😁🙈