Grüße,
vorab der Code:
Python
import wiringpi2 as wiringpi
from time import sleep # allows us a time delay
wiringpi.wiringPiSetup() # using wiringPi Libary
wiringpi.pinMode(0, 1) # sets PIN 0 to output
wiringpi.pinMode(1, 1) # sets PIN 1 to output
wiringpi.pinMode(2, 1) # sets PIN 2 to output
wiringpi.pinMode(3, 1) # sets PIN 3 to output
wiringpi.pinMode(4, 1) # sets PIN 4 to output
wiringpi.pinMode(6, 1) # sets PIN 6 to output
wiringpi.digitalWrite(0, 0) # sets port 0 to 0 (0V, off)
wiringpi.digitalWrite(1, 0) # sets port 1 to 0 (0V, off)
wiringpi.digitalWrite(2, 0) # sets port 2 to 0 (0V, off)
wiringpi.digitalWrite(3, 0) # sets port 3 to 0 (0V, off)
wiringpi.digitalWrite(4, 0) # sets port 4 to 0 (0V, off)
wiringpi.digitalWrite(5, 0) # sets port 4 to 0 (0V, off)
wiringpi.pinMode(5, 0) # sets PIN 5 to input (buzzer)
a = 0
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)
try:
while True:
if (wiringpi.digitalRead(5)):
a = a + 1
sleep(0.18)
if (a == 1):
wiringpi.digitalWrite(0, 1)
pitch = 200
duration = 1
buzz(pitch, duration)
if (a == 2):
wiringpi.digitalWrite(1, 1)
pitch = 400
duration = 2
buzz(pitch, duration)
if (a == 3):
wiringpi.digitalWrite(2, 1)
pitch = 400
duration = 3
buzz(pitch, duration)
if (a == 4):
wiringpi.digitalWrite(3, 1)
pitch = 600
duration = 4
buzz(pitch, duration)
if (a == 5):
wiringpi.digitalWrite(4, 1)
pitch = 200
duration = 0.05
buzz(pitch, duration)
if (a == 6):
wiringpi.digitalWrite(0, 0)
pitch = 200
duration = 0.05
buzz(pitch, duration)
if (a == 7):
wiringpi.digitalWrite(1, 0)
pitch = 200
duration = 0.05
buzz(pitch, duration)
if (a == 8):
wiringpi.digitalWrite(2, 0)
pitch = 200
duration = 0.05
buzz(pitch, duration)
if (a == 9):
wiringpi.digitalWrite(3, 0)
pitch = 200
duration = 0.05
buzz(pitch, duration)
if (a == 10):
wiringpi.digitalWrite(4, 0)
pitch = 200
duration = 0.05
buzz(pitch, duration)
a = 0
else:
sleep(0.05) # delay 0.05s
finally: # when you CTRL+C exit, we clean up
wiringpi.digitalWrite(0, 0) # sets port 0 to 0 (0V, off)
wiringpi.digitalWrite(1, 0) # sets port 1 to 0 (0V, off)
wiringpi.digitalWrite(2, 0) # sets port 2 to 0 (0V, off)
wiringpi.digitalWrite(3, 0) # sets port 3 to 0 (0V, off)
wiringpi.digitalWrite(4, 0) # sets port 4 to 0 (0V, off)
wiringpi.pinMode(0, 0) # sets PIN 0 back to input Mode
wiringpi.pinMode(1, 0) # sets PIN 1 back to inp7ut Mode
wiringpi.pinMode(2, 0) # sets PIN 2 back to input Mode
wiringpi.pinMode(3, 0) # sets PIN 3 back to input Mode
wiringpi.pinMode(4, 0) # sets PIN 4 back to input Mode
# PIN 5 is already an input, so no need to change anything
Display More
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.
Code
if (a == 1):
wiringpi.digitalWrite(0, 1)
pitch = 200
duration = 1
buzz(pitch, duration)
if (a == 2):
wiringpi.digitalWrite(1, 1)
pitch = 400
duration = 2
buzz(pitch, duration)
if (a == 3):
wiringpi.digitalWrite(2, 1)
pitch = 400
duration = 3
buzz(pitch, duration)
if (a == 4):
wiringpi.digitalWrite(3, 1)
pitch = 600
duration = 4
buzz(pitch, duration)
Display More
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
[hr]
Ich versuche zu realisieren, dass bei jedem Tastendruck und eine weitere LED angeht der Ton umso höher wird pro angeschalteter LED.
Gruß