LED + Buzzer + Beeper

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

    vorab der Code:

    Wie ihr seht, wird mit jedem Tastendruck auf den Buzzer eine LED angeschaltet und der BiepTon wird ausgelöst. Dafür benutze ich die Funktion "Buzz". Buzz benötigt 'pitch' & 'duration', wie hier in diesem Code-Beispiel.

    Ich erhöhe immer den Pitch und Duration doch es kommt kein hörbarer Unterschied.
    Hat dieser "nicht-eintretende" Effekt etwas mit dem:

    Code
    def buzz(pitch, duration):
    	period = 1.0
    	delay = period / 2
    	cycles = 1
    	for i in range(cycles):
    		wiringpi.digitalWrite(6, True)
    		sleep(0.5)
    		wiringpi.digitalWrite(6, False)
    		sleep(0.5)

    period und delay erscheinen mir ziemlich ungenutzt. Und warum benutze ich 'cycles' wenn ich bei die Dauer mit 'duration' bestimme? :@ :@
    Kennt sich jemand mit der Funktion "Buzz" aus? Benötige eure Hilfe :)

    Ich versuche zu realisieren, dass bei jedem Tastendruck und eine weitere LED angeht der Ton umso höher wird pro angeschalteter LED.

    Gruß

    Einmal editiert, zuletzt von AliceDeh (22. Mai 2015 um 09:51)

  • Dein Ansinnen ist mir klar, die Funktio buzz passt nicht. Wie Du erkannt hast, hängt sind pitch und duration sinnlos. Einzig cycle und sleep bestimmen Länge und Höhe des buzzers. Was hast Du am GPIO 6 dran?

    Code
    def buzz(pitch, duration):
    
        for i in range(duration):#Hier müsstest Du ausprobieren wie hoch duration sein muß, ich würde aber lieber mit time arbeiten
            wiringpi.digitalWrite(6, True)
            sleep(pitch/1000) #die Dauer des sleep bestimmt die Frequenz pitch = 1 wäre hier 1kHz
            wiringpi.digitalWrite(6, False)
            sleep(pitch/1000)

    Wo hast Du die Ursprungsfunktion her?

  • Dann schau dir mal die Funktion genau an und überlege, wo denn dort die Werte, welche als Parameter im Funktionsaufruf in der Endlosschleife übergeben werden, verwendet werden.

    Allgemein ist zu sagen, dass der gezeigte Code in den virtuellen Mülleimer gehört. Offensichtlich hapert es schon an den Grundlagen. Von wo sind denn diese Codeschnipsel übernommen worden?

    PS:
    Lies dich mal durch bzw arbeite es durch.
    http://py-tutorial-de.readthedocs.org/de/python-3.3/


  • Dein Ansinnen ist mir klar, die Funktio buzz passt nicht. Wie Du erkannt hast, hängt sind pitch und duration sinnlos. Einzig cycle und sleep bestimmen Länge und Höhe des buzzers. Was hast Du am GPIO 6 dran?

    Code
    def buzz(pitch, duration):
    
        for i in range(duration):#Hier müsstest Du ausprobieren wie hoch duration sein muß, ich würde aber lieber mit time arbeiten
            wiringpi.digitalWrite(6, True)
            sleep(pitch/1000) #die Dauer des sleep bestimmt die Frequenz pitch = 1 wäre hier 1kHz
            wiringpi.digitalWrite(6, False)
            sleep(pitch/1000)

    Wo hast Du die Ursprungsfunktion her?

    An GPIO 6 ist mein Buzzer. Wenn der Strom an PIN 6 fließt geht die LED an.

    PS: Übersprungfunktion?


    Dein Ansinnen ist mir klar, die Funktio buzz passt nicht. Wie Du erkannt hast, hängt sind pitch und duration sinnlos. Einzig cycle und sleep bestimmen Länge und Höhe des buzzers. Was hast Du am GPIO 6 dran?

    Code
    def buzz(pitch, duration):
    
        for i in range(duration):#Hier müsstest Du ausprobieren wie hoch duration sein muß, ich würde aber lieber mit time arbeiten
            wiringpi.digitalWrite(6, True)
            sleep(pitch/1000) #die Dauer des sleep bestimmt die Frequenz pitch = 1 wäre hier 1kHz
            wiringpi.digitalWrite(6, False)
            sleep(pitch/1000)

    Wo hast Du die Ursprungsfunktion her?

    Meinst du so?

    Ne oder? Geht nämlich nicht^^

    Habe ihn jetzt umgeschrieben:

    Die Tonlage bleibt dennoch unverändert :/

    Einmal editiert, zuletzt von AliceDeh (22. Mai 2015 um 11:03)

  • Offensichtlich kommt der Code von hier

    AliceDeh
    1. du sollst Codewiederholung meiden. Dies wurde dir schon im anderen Strang mitgeteilt
    2. ``if`` ist eine Anweisung und keine Funktion. Also lass die Klammern da weg.
    3. schreibe aussagekräftige Name. ``a = 1`` was soll a sein?? In Python gibt es eine Namenskonvention an die man sich halten muss/soll
    4. wie oben erwähnt, ist es besser, sich zuerst mit den Grundlagen vertraut zu machen, bevor man sich Hals über Kopf in grössere komplexere Projkte stürzt. Dazu noch ein bekannter Artikel.


  • Offensichtlich kommt der Code von hier

    AliceDeh
    1. du sollst Codewiederholung meiden. Dies wurde dir schon im anderen Strang mitgeteilt
    2. ``if`` ist eine Anweisung und keine Funktion. Also lass die Klammern da weg.
    3. schreibe aussagekräftige Name. ``a = 1`` was soll a sein?? In Python gibt es eine Namenskonvention an die man sich halten muss/soll
    4. wie oben erwähnt, ist es besser, sich zuerst mit den Grundlagen vertraut zu machen, bevor man sich Hals über Kopf in grössere komplexere Projkte stürzt. Dazu noch ein bekannter Artikel.

    Sehr sauberer Code auf jeden Fall, aber dennoch erscheint ein Fehler:

    'Traceback (most recent call last):
    File "led_5_reihe_taster_six.py", line 35, in <module>
    main()
    File "led_5_reihe_taster_six.py", line 31, in main
    buzz(200, 1000) # 1000 = 1sec laut Doku von wringpi
    File "led_5_reihe_taster_six.py", line 25, in buzz
    wiringpi.delay(delay)
    TypeError: in method 'delay', argument 1 of type 'unsigned int'
    '

    Zitat


    if __name__ == '__main__':
    main()

    Den versteh ich gar nicht :( Hier geht es auch nur um den Pieper.
    In deinem Skript wurde mein Buzzer (Taster) ignoiert.

    Nochmal:

    Mein Buzzer funktioniert und die LED's leuchten, doch ändert der Buzzer sein Tonlage nicht.

    Wer kann mir helfen?

    Einmal editiert, zuletzt von AliceDeh (22. Mai 2015 um 11:39)

  • Hier nochmal dein Code:

    Der erneute Fehler:


    Traceback (most recent call last):
    File "led_5_reihe_taster_six.py", line 35, in <module>
    main()
    File "led_5_reihe_taster_six.py", line 31, in main
    buzz(200, 1000) # 1000 = 1sec laut Doku von wringpi
    File "led_5_reihe_taster_six.py", line 25, in buzz
    time.sleep(delay)
    NameError: global name 'time' is not defined

    Funktioniert leider auch nicht.
    Komische Funktion .. man übergibt 'pitch' und es wird einfach nichts geändert. Das kenne ich so aus dem Unterricht auch nicht ..
    Muss mir wohl oder übel ein neues Projekt einfallen lassen. Meine Idee scheint nicht umsetzbar zu sein.

    Danke euch trzdem für die Hilfe bis dahin :/

    Einmal editiert, zuletzt von AliceDeh (22. Mai 2015 um 14:53)

Jetzt mitmachen!

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