Wie sage ich es in Python ? (Einsteigerfragen)

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

    habe hier wohl einen Anfängerfehler. Auf einem RPi B3 mit MotioneyeOS habe ich folgendes Skript laufen:

    #! /usr/bin/python

    import time

    import RPi.GPIO as GPIO

    GPIO.setmode(GPIO.BCM)

    GPIO.setup(18, GPIO.OUT)

    GPIO.output(18, GPIO.HIGH)

    time.sleep(2)

    GPIO.output(18, GPIO.LOW)

    Demnach könnte eine LED auf Pin 18 eingeschaltet und nach 2 sec. ausgeschaltet werden. Soweit funktioniert das auch.

    Verwende ich einen Zero, geht nichts. Was muss ich für den Zero ändern?

    Vielen Dank!

    (statt einer LED könnten bei Betreten der Wohnung durch die Kamera-Erkennung auch div. Funksteckdosen

    eingeschaltet werden)

  • Hallo Linus,

    Danke! für die schnelle Antwort.

    Auf beiden RPi's läuft MotioneyeOS ohne weiteres Betriebssystem. Über den Browser erfolgt der Zugriff auf die Parameter und über Putty habe ich das Script eingestellt. Beide Systeme sind identisch. Allerdings gibt es für den RPi B3 und für den Zero 2 unterschiedliche OS von Motioneye.

    Hardwarefehler wäre bitter. Die 3,3 V und 5 V Ausgänge sind aber ansprechbar.

  • Hallo Hyle,

    Danke für den Willkommensgruß.

    Selbe Rechte, beide ausführbar? Soweit ich das begreife, ja. In MotioneyeOS kann über die grafische Oberfläche ein eigenes Script ausgeführt werden. Dazu ist ein Eintrag in
    "Run an command" erforderlich. In meinem Fall
    /data/LED.py

    Wird eine Bewegung detektiert startet das Skript, zumindest auf dem RPi B3.

  • Wird eine Bewegung detektiert startet das Skript, zumindest auf dem RPi B3.

    Log Dich doch mal per ssh ein und probiere, das Skript manuell zu starten, evt. gibt’s ja eine Fehlermeldung.

    Grüße,STF

  • Wird gemacht. Brauche noch eine kleine Nachhilfe:

    manuell starten heißt in Putty das Script aufrufen und welchen Befehl muss ich dann starten?

    Melde mich morgen Abend wieder, muss noch etwas für morgen vorbereiten. Danke schon mal !!

  • Hallo hyle, hallo STF,

    Vielen Dank für die Hilfe, ihr habt mich in die richtige Richtung gelenkt. Es fehlten die Zugriffsrechte, warum auch immer.

    Manuell gestartet erhielt ich folgende Mitteilung:

    ./LED.py

    -sh: ./LED.py: Permission denied

    und

    mit ls -l erhielt ich folgenden Eintrag:

    Ls –l /data/LED.py

    -rw------- 1 root root 180 Jan 1 00:06 /data/LED.py

    mit:

    chmod + x

    habe ich dann Zugriffsrechte erhalten. Super, meine Funksteckdose kann ich nun per Bewegung schalten.

    Eine Frage hätte ich noch; wenn ich im Verzeichnis /data/ ein Script schreiben möchte, öffne ich das Verzeichnis

    mit sudo nano oder nur mit nano. Lag hier mein Fehler?.....bin halt noch Anfänger.

  • Hallo, ich habe folgende Herausforderung:

    Wie bekomme ich den Wert eines 1-Wire Temperatursensors in eine Variable?

    Folgendes habe ich versucht. Das folgende Script verwende ich um den Temperaturwert anzuzeigen:

    Code
    poem = open("/sys/bus/w1/devices/28-000008879b36/w1_slave").read()
    print(poem[69:74])

    Das gibt mir die Temperatur in 1/1000 Grad an.

    Diesen Wert möchte ich jetzt gern in einer Variable haben. Also habe ich das Script erweitert:

    Code
    poem = open("/sys/bus/w1/devices/28-000008879b36/w1_slave").read()
    temperatur = print(poem[69:74])
    print(temperatur)

    Da bekomme ich aber in Zeile 2 die Temperatur und in Zeile 3 ein "None"

    Zitat

    pi@raspi:~/Python-Test $ python3 temp2.py

    24812

    None

    pi@raspi:~/Python-Test $

    Wie bekomme ich die Ausgabe von "print(poem[69:74])" in die Variable "temperatur"?

  • Guten Abend werte Community,

    ich habe seit einigen Monaten mehrere Raspberry Pis für spielereien, Kodi, Google Home, Smarthome usw.
    Heute kam aber mein Sensor Set an und ich habe mich das erste mal mit GPIO Gedöns befasst.
    Habe grundlegende Python Kenntnisse und war überrascht wie simpel man hier teilweise Sachen basteln kann.

    Mein Projekt ab Morgen wird ein Roboter sein der sich selbst balanciert und eine Art mobiler Google Home wird der in der Wohung rum fährt.

    Ich glaube das ist gar nicht so schwer, nur kann ich im Moment nur simple Abläufe in Python programmieren, ich scheitere aber daran mehrere Abläufe gleichzeitig laufenzulassen.

    z.B. Der Roboter muss fahren, gleichzeitig 4 Ultraschallsensoren auslesen und dementsprechend lenken usw.

    Wie stelle ich das an?
    Sobald ich time.sleep aktiv habe steht das Script ja komplett und es wir auch nichts anderes mehr gemacht.
    Ich hoffe ihr versteht was ich meine :)

    Grüße aus BW :)

  • Hallo,

    KSCNeon: grundsätzlich stellt sich die Frage, ob das _wirklich_ parallel laufen muss (dann brauchst du Multiprocessing) oder ob "quasi-parallel" (= sequentiell, aber jeder kommt oft genug daran = kooperatives Multitasking) nicht reicht.

    Bei "echter" Parallelität hast du ja immer noch das Problem, dass du irgendwie irgendwo die "gleichzeitig" eintreffenden Sensordaten verarbeiten musst, und das passiert in der Regel sequentiell. Abgesehen davon kann die Kommunikation zwischen verschiedenen Prozessen eine nicht-triviale Angelegenheit in der Umsetzung sein.

    Da das ganz Thema aber ein wenig komplexer ist empfiehlt es sich, dafür einen eigenen Thread zu Starten.

    Gruß, noisefloor

  • Hallo Leute,
    ich habe aktuell einen kleinen Roboter gebaut.
    Dieser besteht aus 2 Motoren, fährt rechts und links indem eben ein Motor anhält und der andere weiter dreht.
    Das ganze habe ich noch mit 2 Infrarot Sensoren kombiniert die ein Signal geben sobald Sie ein Objekt erkennen.
    Ein Sensor rechts, der andere links.
    Das ganze tut an sich, aber ich bin mir sicher mein Code ist absolut schlecht :conf:
    Wenn ein Sensor ein Objekt erkennt biegt der Roboter zwar nach rechts oder links ab,
    jedoch stottert das ziemlich. Habe statt der Motoren mal LEDs angeschlossen und tatsächlich flackern diese.
    Das heißt das Stottern wird definitiv von meinem Code verursacht weshalb ich hier gerne einfach nochmal paar Tipps hätte.
    Hatte Python mal in der Schule aber nur simples Mathe, listen und Strings. Also paar Grundlagen sind schon da aber das reicht nicht.

    Zudem hätte ich gerne gewusst wie ich 2 Signale auswerten kann. Damit meine ich, wenn Sensor 1 und Sensor 2 ein Signal geben soll das und das passieren. Ich kann in "GPIO.input()" ja nur einen Input definieren.

    GPIOzero werde ich mir gleich mal anschauen :)


Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!