Fehler GPIO

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,

    ich habe aus einem Buch ein Programm abgeschrieben und es tauchen bis jetzt zwei Fehler auf die ich nicht lösen kann.


    Es sind die Zeilen:
    GPIO.setup(step,GPIO.OUT)
    GPIO.setup(dir,GPIO.OUT)

    Wie gesagt ich habe es aus einem Buch abgeschrieben.

    Die Fehler sind:

    File "/home/pi/test.py", line 8
    GPIO.setup(step,GPIO.OUT)
    Runtime Warning: This channel is already in use, continuing any way. Use GPIO.setwarnings(False) to disable warning.

    File "/home/pi/test.py", line 9
    GPIO.setup(dir,GPIO.OUT)
    Runtime Warning: This channel is already in use, continuing any way. Use GPIO.setwarnings(False) to disable warning.

    Wie gesagt ich habe die Schrittmotorkarte genau nach Anleitung angeschlossen und auch das Programm fehlerfrei abgeschrieben.

    Ich finde auch im Buch nichts schlüssiges mit dem ich etwas anfangen könnte.

    So hart ist das erlernen einer Programmierung :)

    Wenn mir das jemand erklären könnte oder den Fehler findet wäre Super.

    Danke und grüße Max

  • Hallo,

    hast du mehrere Instanzen des Scriptes gestartet? Oder ein Script gestartet und es nicht sauber beendet?
    Die Fehlermeldung besagt, das evtl. woanders bereits auf die GPIO-Schnittstelle zugegriffen wird.
    Ansonsten hat bei mir immer geholfen, am Ende des Scriptes oder bei Keyboard-Interrrupt ein

    Code
    GPIO.cleanup()

    einzufügen. Bzw. über try, except, finally und im finally block den GPIO.cleanup.

    Schöne Weihnachten
    Gruß
    Matze

  • Hallo Max,

    wie Matze schon richtig festgestellt hat, läuft entweder ein anderes Programm, dass auf die GPIO zu greift - oder Dein oder ein anderes Programm wurde beendet, ohne mit den GPIOs aufzuräumen.

    Bei den geposteten Meldungen handelt es sich übrigens nicht um Fehlermeldungen, sondern um Warnhinweise - eben um auf genau diesen Tatbestand hinzuweisen, dass eine andere Anwendung auf den GPIOs läuft oder nicht korrekt beendet wurde.

    Diese Warnungen kannst Du abschalten mit

    Code
    GPIO.setwarnings(False)

    Ansonsten solltest Du Deine eigenen Programme immer so gestalten, dass diese vor dem Beenden die GPIOs mit

    Code
    GPIO.cleanup()


    ordentlich abschließen. Denn Du weißt nie, wie andere Programme, die Du sonstwo herunterladen kannst, mit dieser Thematik umgehen.

    Gesegnete Weihnachtsfeiertage!

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Edited once, last by Andreas (December 25, 2015 at 1:04 PM).

  • Hei Matze, Andreas,

    nein es läuft kein anderes Programm und ich habe nur das eine gestartet.

    Auch wird es mit GPIO.cleanup() am ende des Programmes beendet.

    Das es ein Hinweis ist und kein Fehler ist habe ich schon verstanden ;) Runtime Warning
    Jedoch so lange das nicht gelöst ist läuft eben nichts ;)

    Soll ich das ganze Programm hier reinschreiben ??? ich mein das ihr seht worum es vielleicht geht…

    Auch euch und allen anderen schöne Feiertage.

    Grüße Max

  • ...

    Ansonsten hat bei mir immer geholfen, am Ende des Scriptes oder bei Keyboard-Interrrupt ein

    Code
    GPIO.cleanup()

    einzufügen. Bzw. über try, except, finally und im finally block den GPIO.cleanup.

    Mein Template dafür sieht wie folgt aus:

    :no_sad: ... Kein raspiBackup - kein Mitleid ... :no_sad:

    Mein Raspberry Zoo

    3 * RPi1B, 2 * RPi3B, 2 * RPI4, 1 * CM4, 1 * RPi5

  • Hallo,

    jetzt habe ich von der Originaldvd das Programm auf den Raspi kopiert.

    Die Schrittmotorkarte DM442 habe ich nach den Herstellerangaben angeschlossen.
    Zuerst war das gleiche Problem, die selben Fehler jedoch habe ich alles neu abgeklemmt und neu angeschlossen und es "funktionierte".
    Nach jedem Run machte der Motor einen kleinen Schritt, jedoch nach fünf sechs mal kamen die Fehler erneut.
    Das selbe mit meinem abgeschriebenen Programm.

    Erst wenn ich die Steuerleitungen (enable, dir, step) vom Raspi abschliesse läuft es wieder im Trocken modus.
    Sobald ich die Steuerkarte wieder anschliesse beginnt es wieder von vorne, einige steps und Störung.

    Ich sehe den Fehler an der Schrittmotorkarte.

    Wohl oder übel werde ich mich um eine andere Karte umsehen müssen.

    Ich werde das Problem wohl besser in die Hardwarerubrik stellen, vielleicht hat dort jemand eine Lösung.

    Grüße Max


  • Poste doch mal das ganze Script. ich denke auch das es an einer stelle unsauber beendet wird und dann die warnung kommt.
    und nicht gleich die flinte ins korn werfen ;)

    Nein, mach dir keine Sorgen ;) ich schmeiß die Flinte nicht so schnell ins Korn.

    Ich habe den Fehler entdeckt…man glaubt es nicht jedoch ist es der Motor…ich habe jetzt einen anderen eingebaut und es funktioniert.
    Der andere, kleinere hat sich extrem erhitzt und den ich vorhin einbaute bleibt bei Handwärme.
    Beides neue Motoren die ich erst vor kurzem Bestellt habe :(

    Anbei das Programm.

    Was ich jedoch noch nicht herausgefunden habe wie ich den Motor zum drehen bringe, er springt nur um einen kleinen Schritt, auch wenn ich unten die Werte ändere, liegt vielleicht daran das die DM442 nur einen Impuls akzeptiert und die 200 Schritte als einen sieht.
    Anstatt stepp heißt er beim DM442 pul.

    Ist nur zum lernen und verstehen, es wird am ende eine andere Steuerung genommen.

    Gruß Max


  • hast du schon mal probiert den speed zu verringern? also den ersten wert bei turn(0.005,200,1) hoch zu setzen?

    Hei Macsourcerer,

    ja habe ich alles, und jetzt wird es eigenartig ;)

    turn(0.005,300,1) ist die Basis.

    Wenn ich auf 0.05 gehe gibt es eine Störung, die 300 kann ich aufteilen auf bis 250 (rechtslauf) und über 251 (linkslauf) und die 1 (Drehrichtung) kann ich zu 0 ändern jedoch mit dem ändern der 0.005 auf bis zb. 0.0000000005 (je kleiner die Zahl um so größer der Schritt) änder sich wieder die Drehrichtung…

    Als würden die Werte untereinander in Abhängigkeit der vorangegangenen Einstellung sich beeinflussen.

    Ich werde echt nicht schlau daraus.
    Ich habe die Verkabelung mehrmals geprüft, da gibt es nur drei Steuerleitungen und 5Volt.

    Über die Angaben des Herstellers vom pul Eingang bin ich auch nicht sehr schlau geworden. Es ist jedoch ein Pulseingang.

    Angabe des Herstellers:

    PULPulse
    signal: In single pulse (pulse/direction) mode, this input represents pulse
    signal, each rising or falling edge active (software configurable); 4-5V when
    PUL-HIGH, 0-0.5V when PUL-LOW. In double pulse mode (pulse/pulse) ,
    this input represents clockwise (CW) pulse,active both at high level and low
    level (software configurable). For reliable response, pulse width should be
    longer than 2.5μs. Series connect resistors for current-limiting when +12V or
    +24V used. The same as DIR and ENA signals.

    Jetzt habe ich mir eine Erweiterung zum ansteuern von Motoren bestellt, dann wird es sicher funktionieren.

    Es war ein Test weil ich diese Karte für mein Projekt geplant habe und laut Lieferant vom Raspberry angesteuert werden kann.

    Grüße Max

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!