Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Community auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.
Warum beitreten?
Expertenunterstützung: Lösen Sie Probleme nach dem Kauf und technische Herausforderungen mit Hilfe unserer Community und unseres Teams.
Lernen & Teilen: Austausch von Tipps und Anleitungen zur Verbesserung Ihrer Fähigkeiten.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Giveaways: Nehmen Sie an Giveaways und Feiertagsaktionen teil.
👉 Bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie [hier] und treten Sie heute bei!
3.2 Benutzerdefinierte Töne mit einem passiven Summer spielen
In dieser Lektion lernen wir, wie man einen passiven Summer mit dem Raspberry Pi Pico 2 verwendet, um verschiedene Töne und sogar einfache Melodien zu spielen! Im Gegensatz zu einem aktiven Summer benötigt ein passiver Summer ein wechselndes elektrisches Signal, um Ton zu erzeugen, was bedeutet, dass wir die Tonhöhe des Sounds durch Ändern der Frequenz des Signals steuern können.
Was Sie benötigen
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
|---|---|---|
Newton Lab Kit |
450+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
SN |
KOMPONENTE |
MENGE |
LINK |
|---|---|---|---|
1 |
1 |
||
2 |
Micro USB-Kabel |
1 |
|
3 |
1 |
||
4 |
Mehrere |
||
5 |
1 (S8050) |
||
6 |
1 (1KΩ) |
||
7 |
Passiver Summer |
1 |
Verständnis des passiven Summers
Ein passiver Summer funktioniert wie ein kleiner Lautsprecher. Er erzeugt keinen Ton von sich aus; stattdessen benötigt er ein oszillierendes Signal, um Ton zu machen. Indem wir Signale unterschiedlicher Frequenzen bereitstellen, können wir den Summer verschiedene Töne erzeugen lassen, wodurch wir Noten und Melodien spielen können.
Schaltplan

In diesem Schaltkreis wird der passive Summer über einen Transistor (S8050 NPN) mit Strom versorgt. Der Transistor verstärkt den Strom, wodurch der Summer lauter klingt, als wäre er direkt an den Pico angeschlossen.
Hier ist, was passiert:
GP15 gibt ein hohes Signal aus, um den Transistor zu steuern.
Wenn der Transistor aktiviert ist, lässt er den Strom durch den Summer fließen, was ihn piepen lässt.
Ein 1kΩ Widerstand wird verwendet, um den Strom zu begrenzen und den Transistor zu schützen.
Verdrahtungsdiagramm
Stellen Sie sicher, dass Sie den passiven Summer verwenden. Sie können erkennen, dass es der richtige ist, indem Sie nach der freiliegenden PCB suchen (im Gegensatz zur versiegelten Rückseite, die ein aktiver Summer ist).
Code schreiben
Jetzt schreiben wir etwas Code, damit der Summer verschiedene Töne spielt.
Bemerkung
Öffnen Sie die Datei
3.2_custom_tone.pyausnewton-lab-kit/micropythonoder kopieren Sie den Code in Thonny, dann klicken Sie auf „Run“ oder drücken Sie F5.Stellen Sie sicher, dass der richtige Interpreter ausgewählt ist: MicroPython (Raspberry Pi Pico).COMxx.
import machine
import utime
# PWM auf GP15 initialisieren
buzzer = machine.PWM(machine.Pin(15))
def play_tone(frequency, duration):
# Die Frequenz des PWM-Signals einstellen
buzzer.freq(frequency)
# Tastverhältnis auf 50% setzen
buzzer.duty_u16(32768)
# Den Ton für die angegebene Dauer spielen
utime.sleep_ms(duration)
# Den Summer ausschalten
buzzer.duty_u16(0)
# Einige Töne spielen
play_tone(440, 500) # A4-Note für 500ms
utime.sleep_ms(200)
play_tone(494, 500) # B4-Note für 500ms
utime.sleep_ms(200)
play_tone(523, 500) # C5-Note für 500ms
Wenn der Code ausgeführt wird, hören Sie, wie der passive Summer die A4-Note für 500ms, die B4-Note für 500ms und die C5-Note für 500ms spielt.
Erklärung des Codes
PWM initialisieren:
buzzer = machine.PWM(machine.Pin(15)): Damit wird PWM (Pulsweitenmodulation) auf Pin GP15 eingerichtet, den wir verwenden, um den Summer zu steuern.
Die Funktion
play_tonedefinieren:def play_tone(frequency, duration): buzzer.freq(frequency) buzzer.duty_u16(32768) utime.sleep_ms(duration) buzzer.duty_u16(0)
frequency: Die Tonhöhe des Tons. Höhere Frequenz bedeutet eine höhere Tonhöhe.duration: Wie lange der Ton spielt, in Millisekunden.buzzer.duty_u16(32768): Setzt das Tastverhältnis auf 50% (die Hälfte von 65535), was ideal ist, um Ton zu erzeugen.Nach der Dauer wird der Summer ausgeschaltet, indem das Tastverhältnis auf 0 gesetzt wird.
Noten spielen:
Wir rufen
play_tonemit verschiedenen Frequenzen auf, die musikalischen Noten entsprechen.# Einige Töne spielen play_tone(440, 500) # A4-Note für 500ms utime.sleep_ms(200) play_tone(494, 500) # B4-Note für 500ms utime.sleep_ms(200) play_tone(523, 500) # C5-Note für 500ms
Eine Melodie spielen
Jetzt, da wir gelernt haben, wie man einzelne Töne mit dem passiven Summer spielt, lassen Sie uns eine einfache Melodie erstellen! Das hilft uns zu verstehen, wie man Noten anordnet und ihre Dauer kontrolliert, um Musik zu erzeugen.
import machine
import utime
# Notenfrequenzen (in Hz)
NOTE_C4 = 262
NOTE_D4 = 294
NOTE_E4 = 330
NOTE_F4 = 349
NOTE_G4 = 392
NOTE_A4 = 440
NOTE_B4 = 494
NOTE_C5 = 523
melody = [
NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4,
NOTE_G4, NOTE_A4, NOTE_B4, NOTE_C5
]
note_durations = [
500, 500, 500, 500,
500, 500, 500, 500
]
# PWM auf GP15 initialisieren
buzzer = machine.PWM(machine.Pin(15))
def play_tone(frequency, duration):
buzzer.freq(frequency)
buzzer.duty_u16(32768)
utime.sleep_ms(duration)
buzzer.duty_u16(0)
utime.sleep_ms(50) # Kurze Pause zwischen den Noten
for i in range(len(melody)):
play_tone(melody[i], note_durations[i])
Wenn Sie diesen Code ausführen, spielt der Summer eine einfache Melodie, indem er jede Note in der Reihenfolge erklingen lässt. Jede Note dauert 500 Millisekunden, und es gibt eine kurze Pause zwischen den Noten. Sie hören den Summer eine aufsteigende Tonleiter von Mittel-C (C4) bis zum C der nächsten Oktave (C5).
Weiter experimentieren
Erstellen Sie Ihre eigene Melodie: Ändern Sie die Noten und Dauern in der Melodie und den
note_durations-Listen, um Ihre eigene Melodie zu komponieren.Das Tempo anpassen: Ändern Sie die Werte in
note_durations, um die Melodie schneller oder langsamer zu machen.Weitere Noten hinzufügen: Definieren Sie zusätzliche Noten durch Hinzufügen ihrer Frequenzen und schließen Sie sie in Ihre Melodie ein.
Die Lautstärke ändern: Passen Sie das Tastverhältnis in
buzzer.duty_u16()an, um den Summer lauter oder leiser zu machen. Ein Wert um 32768 gibt ein Tastverhältnis von 50%.
Schlussfolgerung
In dieser Lektion haben Sie gelernt, wie man einen passiven Summer verwendet, um Töne und Melodien mit dem Raspberry Pi Pico 2 zu spielen. Indem Sie die Frequenz des PWM-Signals kontrollieren, können Sie eine Vielzahl von Klängen erzeugen und sogar einfache Lieder spielen. Dies ist eine großartige Möglichkeit, Ihren Projekten akustisches Feedback oder unterhaltsame musikalische Elemente hinzuzufügen.```

