Statusabfrage Audioausgang ?

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

    ich habe dieses Wochenende mein Raspberry bekommen und inbetrieb genommen.
    Jetzt wollte ich für ein Projekt einen Versuch starten und scheitere an der Programmierung.

    Ich habe mit an folgende Anleitung gehalten .

    http://learn.adafruit.com/playing-sounds…spberry-pi/code

    Hier wird folgendes Programm geschrieben


    Jetzt habe ich das Problem das ich noch eine LED ansteuern möchte sollange die Musik läuft.
    Wie kann ich das denn Programmiertechnisch umsetzen ?

    Gruß

    Martin

    Einmal editiert, zuletzt von skull2505 (29. Juli 2013 um 09:38)

  • Gibt es denn die Möglichkeit eine Statusabfrage den Klinkenanschlusses des PI zu machen.
    So das ich auf dem GPIO ein Signal ausgebe sollange der Klinkenanschluss beschäftigt ist ?
    Wäre Super wenn mir da jemand unter die Arme greifen könnte.

    Gruß

    Martin

  • Hallo,

    danke erstmal für deine Antwort.
    Das würde ja den Zweck auch erfüllen, ich brauche ja lediglich einen output für die Zeit wo
    die Musik läuft, um ein Relais zu schalten.
    Für mein Projekt hängt es eigentlich nurnoch daran ^^
    Aber wie kann ich deinen Vorschlag den in mein Programm einbinden ?
    Ich bin in der hinsicht Programmierung noch nicht so fit.

    Gruß

    Martin


  • Ich glaub an den Audioausgang kommst du nicht direkt ran, allerdings könnte man prüfen ob ein Prozess läuft, welcher Musik abspielt.

    das scheint mir möglich, ich hatte sogar mal ein script ist auch schon wieder 5 Jahre her.
    http://www.nas-forum.org/index.php?page=Thread&threadID=277

    Im NAS 2001 ist stets der Webserverdienst abgeschmiert, also haben "wir" ein Script gebaut welches alle 30 Minuten prüfte (für Musik eher alle 30s oder 1 Minute) ob der Dienst noch existiert. Wenn nicht wurde der Dienst neu gestartet, hier heisst das dann wenn play endet auf zu GPIO und schalten.

    aber das kann dbv bestimmt besser als ich.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Einmal editiert, zuletzt von jar (29. Juli 2013 um 15:03)

  • Alle 30s wäre ein bisschen lang, mit Musik meine ich eigentlich verschiedene "Klingeltöne" für eine Klingel.
    Wenn alles klappt schreibe ich mal ausführlich was ich gemacht habe und wie es umgesetzt wurde.
    Das eigentliche Problem ist, dass die "Klingeltöne" unterschiedlich lang sind.


  • Alle 30s wäre ein bisschen lang, mit Musik meine ich eigentlich verschiedene "Klingeltöne" für eine Klingel.
    Wenn alles klappt schreibe ich mal ausführlich was ich gemacht habe und wie es umgesetzt wurde.
    Das eigentliche Problem ist, dass die "Klingeltöne" unterschiedlich lang sind.


    Hallo skull2505,

    irre ich mich oder ist das nicht ein bisschen von hinten durch die Brust ins Auge?

    Wenn Du einen "Klang" abspielst, weisst Du doch genau, wann der Abspielvorgang beginnt und wann er endet.
    Notfalls legst Du einen script drum ...

    cu,
    -ds-

  • Hallo,

    wann der Klang kommt kann ich nicht direkt bestimmen.
    Denn den Pi will ich als Türklingel benutzen die zwischen einem
    Wiedergabegerät (CD Player, MP3 Player o.ä.) und einem Verstärker hängt.
    Wenn jetzt jemand Klingelt wird ein Signal an den Pi gesendet, welcher dann den
    Türgong über den Klinkenausgang des Pi ausgibt.
    Gleichzeitig wird ein Relais geschaltet welches den Klinkenausgang des Pi mit einem
    NF eingang des Verstärkers verbindet und somit den Türgong über meine Lautsprecher wiedergibt.

    Gruß

    Martin

  • Hallo Martin,
    aber das ist doch genau das, was ich meine ;) ...

    Wenn bei mir jemand klingelt, wird kein Signal an irgendeinen RPi gesendet.
    Also weiss Dein RPi doch ganz genau, wann ein Signal anliegt und was er dann tun soll.
    Nur wie? Ergo wirst Du doch an dieser Stelle mit einem Script/Programm oder whatever eingreifen/Dich einklinken müssen, und dann hast Du wieder alles unter Kontrolle: vom Signal über die Auslösung und den Beginn sowie das Ende der Aktion.
    Wozu dann der Umweg über die Prozessverwaltung?
    Oder steh ich irgendwo auf dem Schlauch?

    cu,

    -ds-

  • Wenn du oben in meinen Beitrag schaust, siehst du ja den Quellcode zu dem Programm was ich verwende.
    Evtl kannst du mir ja schreiben wie man das Programm dazu bewegt mir einen Output auf einem
    GPIO Pin zu geben.

    Mein problem ist im Allgemeinen, dass ich von programmieren nicht soviel Ahnung habe bzw
    ich zur Zeit maximal nen Taschenrechner oder sowas Programmieren könnte ^^

    Und erschwerend kommt noch hinzu das Linux für mich Neuland ist,
    ich war einer von den jenigen der in der Lehre (IT-Systemelektroniker) gesagt hat
    Linux brauch ich nie im Leben XD
    Das selbe gilt für den Programmierunterricht ^^
    Aber 5 Jahre später sieht man das doch anderst hehe

    Gruß

    Martin

  • Tja ...

    ich habe zwar absolut keine Ahnung von python, aber ich denke hier



    passiert Folgendes: drei der GPIOs (und zwar 23, 24 und 25) werden als Eingang geschaltet.
    Dann fragst Du in einer (Endlos-)Schleife ab, welcher dieser Eingänge aktuell auf LOW gezogen ist.
    Abhängig davon wird im Hintergrund der Player mit einer MP3-Datei aufgerufen.

    Ich hab' mal die eine oder andere Anmerkung in den Code oben geschrieben.
    Aber da sollte jemand mehr dazu sagen können, der mehr von Python versteht als ich ;) ...

    cu,
    -ds-

    • Offizieller Beitrag

    Hallo, hier mal ne Version wie ich das machen würde


    Ich versteh das so (ich hatte noch keine Zeit wirklich was mit den GPIOs zu programmieren ;) ;):
    Es läuft ne Endlosschleife, welche sobald ein Eingang auf low gezogen wird, einen Sound abspielt.
    Ich hab noch ne schleife dazu gebaut, welche prüft, ob das File noch abgespielt wird. Solange wie es spielt kann man noch irgendwas anderes machen (Im Moment zeigt er nur an das es läuft). Erst nach Ende das Soundfiles gehts weiter mit dem Script.

    Das bedeutet im Umkehrschluss das nie 2 Sounds gleichzeitig abgespielt werden können :)

  • Ich hoffe da antwortet noch jemand drauf, vom logischem Standpunkt her könnte das funktionieren.
    Aber was ich mich frage, nur für das Verständnis, warum nimmst du das "&" raus bzw. was sagt das "&" aus ?

    Wie gesagt den Code habe ich von einem Tutorial ^^

    Gruß

    • Offizieller Beitrag

    Das "&" hinter einem Linux befehl führt diesen im Hintergrund aus. Probier es einfach aus, tippe "mpg123 sample.mp3" in die console und du wirst sehen, dass du solange keine eingaben machen kannst bis die Datei zu Ende gespielt wurde, mit angehängten "&", kannst du auf der gleichen Konsole weiterarbeiten.


  • Hallo, hier mal ne Version wie ich das machen würde


    Ich versteh das so (ich hatte noch keine Zeit wirklich was mit den GPIOs zu programmieren ;) ;):
    Es läuft ne Endlosschleife, welche sobald ein Eingang auf low gezogen wird, einen Sound abspielt.
    Ich hab noch ne schleife dazu gebaut, welche prüft, ob das File noch abgespielt wird. Solange wie es spielt kann man noch irgendwas anderes machen (Im Moment zeigt er nur an das es läuft). Erst nach Ende das Soundfiles gehts weiter mit dem Script.

    Das bedeutet im Umkehrschluss das nie 2 Sounds gleichzeitig abgespielt werden können :)

    So ich habe das jetzt mal probiert, jetzt zeigt er mir aber einen Syntaxfehler in Zeile 14.

    • Offizieller Beitrag

    Und welchen? indentation error? Das passiert leider beim direkten kopieren des Quelltextes aus den Code Blocks.
    Entweder Einrückungen manuell fixen oder du nimmst die Datei im Anhang und kopierst sie auf den Pi (vorher von txt in .py umbenennen)

Jetzt mitmachen!

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