
Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-23 12:52

Heute zeige ich Ihnen, wie Sie mit einem Arduino eine Türklingel herstellen. Diese Türklingel spielt eine zufällige Melodie aus einer Bibliothek von Songs. Sie können Ihre Türklingel anpassen und noch mehr Songs hinzufügen. Installieren Sie es außerhalb Ihres Schlafzimmers, Klassenzimmers, Büros oder sogar Ihrer Haustür!
Lieferungen:
- Arduino Uno (die meisten anderen Typen reichen)
- Computer mit Arduino IDE zum Programmieren
- USB-A-zu-USB-B-Kabel zum Programmieren von Arduino
- Steckbrett
- 4x Überbrückungsdrähte
- Taster oder anderer Schalter
- 10 kOhm Widerstand
- Passiver Summer (d. h. piezoelektrischer Lautsprecher)
-
Für Festinstallation:
- 9-V-DC-Netzteil oder 9-V-Batterie zur Stromversorgung von Arduino
- 2x lange Drähte für Verdrahtung Taster Außentür
Schritt 1: Hardware-Setup



Zuerst richten wir die Hardware ein. Wir beginnen mit dem passiven Summer (d. h. Lautsprecher). Wir möchten das positive Ende des passiven Summers (gekennzeichnet durch "+" -Zeichen) mit dem digitalen Pin 8 des Arduino verbinden. Wir werden das andere Ende des Passize-Summers mit Masse verbinden.
Als nächstes installieren wir den Taster für die Türklingel. Wir verwenden einen externen 10-kOhm-Pulldown-Widerstand für den Schalter, sodass am Eingang des Arduino keine schwebende Spannung oder kein instabiler Zustand vorliegt. Durch die Verwendung des Pulldown-Widerstands liest der Arduino die Spannung als 0 V, wenn die Taste nicht gedrückt wird, und als 5 V, wenn die Taste gedrückt wird. Weitere Informationen zu Pullup- oder Pulldown-Widerständen finden Sie in diesem Artikel:
Wir werden eine Seite des Tasters an 5V anschließen. Die andere Seite des Tasters wird über einen 10 kOhm Pulldown-Widerstand mit Masse verbunden. Denken Sie daran: Taster sind intern horizontal angeschlossen. Sie werden nur beim Drücken vertikal verbunden. Weitere Informationen finden Sie in diesem Artikel:
Schritt 2: Software-Setup
Der gesamte Code ist beigefügt. Nachfolgend finden Sie die Beschreibungen der einzelnen Funktionen mit Schnappschüssen des Codes.
erstellen:
In der Funktion setup() wollen wir die digitalen Pins für unsere Taste und unseren Lautsprecher konfigurieren. Wir möchten Pin 2 als Eingang für unsere Taste konfigurieren und wir möchten Pin 8 als Ausgang für unseren Lautsprecher konfigurieren.
Wir möchten auch unseren Zufallszahlengenerator "sähen", um zufällig eine Melodie auszuwählen, wenn jemand an unserer Tür klingelt. Das Seeding unseres Zufallszahlengenerators bedeutet, ihm eine zufällige Eingabe zuzuführen. Wir werden unseren Zufallszahlengenerator mit dem Spannungswert am Analogeingang 0 aussäen. Da an diesem Eingang nichts angeschlossen ist, wird an diesem Pin eine "zufällige", schwankende Spannung anliegen, die unserem Zufallsgenerator viele verschiedene Werte liefert. Dies stellt sicher, dass wir eine andere Reihenfolge der Songauswahl für unsere Türklingel haben. Weitere Informationen zur Arduino random()-Funktion finden Sie hier:
#include "Stellplätze.h"
#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8 /* Funktion einrichten */ Void setup () { // Eingabe-/Ausgabepins aktivieren PinMode (BUTTON_PIN, INPUT); pinMode (LAUTSPRECHER_PIN, AUSGANG); // Seed random() Funktion, damit wir eine andere Reihenfolge erhalten randomSeed(analogRead(0)); }
Schleife:
In unserer loop()-Funktion prüfen wir ständig, ob die Taste gedrückt ist (digitaler Pin 2 ist High). Wenn der Pin hoch ist, warten wir 50 ms und prüfen erneut, ob er noch hoch ist. Dadurch wird sichergestellt, dass die Taste gedrückt wird und kein Streurauschen am digitalen Eingangspin zu einem falsch positiven Ergebnis führt.
Nachdem wir bestätigt haben, dass der Button gedrückt wurde, wählen wir mit unserem Zufallsgenerator einen der 5 Songs per switch-Anweisung aus. Die Daten für diese Lieder werden in "songs.h" gespeichert und die Tonhöheninformationen werden in "pitches.h" gespeichert. Sobald wir einen Song ausgewählt haben, übergeben wir diese Informationen an die Funktion play_song().
/* Haupt-While-Funktion */
Void loop () {// prüfen, ob die Taste gedrückt ist if (digitalRead (BUTTON_PIN) == HIGH) {// 50 ms verzögern, um sicherzustellen, dass sie noch gedrückt ist // vermeidet Streufehler Verzögerung (50); if (digitalRead (BUTTON_PIN) == HIGH) {// Zufällig ein Lied auswählen Int song_choice = random (5); // Wählen Sie aus, welches Lied gespielt werden soll Schalter (song_choice) { case 0: play_song (haircutLength, haircut, haircutDurations, haircutTempo); brechen; Fall 1: play_song(marioLength, mario, marioDurations, marioTempo); brechen; Fall 2: play_song(miiLength, mii, miiDurations, miiTempo); brechen; Fall 3: play_song(hpLength, hp, hpDurations, hpTempo); brechen; Fall 4: play_song(takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); brechen; Standard: play_song(miiLength, mii, miiDurations, miiTempo); brechen; } } } }
Spiellied:
play_song() nimmt 4 Argumente an: eine ganzzahlige Anzahl von Noten im Song, ein ganzzahliges Array der Tonhöhen in der Melodie, ein ganzzahliges Array der Dauer und ein ganzzahliges Tempo für diesen bestimmten Song. Sie müssen diese für jeden Song angeben, den Sie abspielen möchten. Weitere Informationen zur Verwendung der Arduino-Tonfunktionen finden Sie in diesem Tutorial: https://www.arduino.cc/en/Tutorial/ToneMelody. Ich habe diesem Tutorial einige Funktionen für gepunktete Notizen hinzugefügt. Wenn ein Wert im Notendauer-Array negativ ist, bedeutet dies, dass es sich um eine punktierte Note handelt (die Länge ist 1,5-mal größer).
/* spielt das Lied */
void play_song(int num_notes, int melody, int noteDurations, int tempo) { // Durchgehen und alle Noten spielen für (int i=0; i 0) { Dauer = tempo / noteDurations; } // wenn es eine negative Zahl ist, bedeutet eine punktierte Note // erhöht die Dauer für punktierte Noten um die Hälfte else if (noteDurations < 0) { Duration = tempo / abs(noteDurations) * 1.5; } Ton (SPEAKER_PIN, Melodie, Dauer); // Um die Noten zu unterscheiden, legen Sie eine Mindestzeit zwischen ihnen fest. // die Dauer der Notiz + 30% scheint gut zu funktionieren: int pauseBetweenNotes = Dauer * 1.30; Verzögerung (pauseBetweenNotes); // Stoppen Sie die Tonwiedergabe: noTone (SPEAKER_PIN); } }
Beispiel von Liedern.h:
Unten ist ein Beispiel für eines der Lieder in "songs.h". Die Noten sind Makros, die in "pitches.h" definiert sind. Die Zahlen entsprechen den Frequenzen der Töne in Hertz (Hz). Die Notendauer ist wie folgt definiert: 1 = ganze Note, 2 = halbe Note, 4 = Viertelnote, 8 = Achtelnote, -4 = punktierte Viertelnote usw. Die Länge ist die Gesamtzahl der Noten im Song. Das Tempo ist ein Teiler für die Geschwindigkeit des Songs (eine höhere Zahl bedeutet ein langsameres Tempo). Sie müssen mit dieser Zahl herumspielen, bis Sie ein Tempo erreicht haben, das Ihnen gefällt.
/* Harry Potter */
int hp = { NOTE_D4, NOTE_G4, NOTE_AS4, NOTE_A4, NOTE_G4, NOTE_D5, NOTE_C5, NOTE_A4, NOTE_G4, NOTE_AS4, NOTE_A4, NOTE_F4, NOTE_GS4, NOTE_D4 }; int hpDurations = { 4, -4, 8, 4, 2, 4, -2, -2, -4, 8, 4, 2, 4, 1 }; int hpLength = 14; int hpTempo = 1050;
Schritt 3: Optimierungen
Füge mehr Lieder hinzu! Folgen Sie dem in "songs.h" gezeigten Format und verwenden Sie das Tutorial, um Hilfe zu erhalten: https://www.arduino.cc/en/Tutorial/ToneMelody. Denken Sie daran, für jeden neuen Song, den Sie hinzufügen, einen neuen Fall zur switch-Anweisung hinzuzufügen und die maximale Anzahl zu erhöhen, die von Ihrer random()-Funktion generiert werden kann. Viel Spaß beim Codieren!
Schritt 4: Weitere Projekte
Weitere Projekte finden Sie auf meinen Seiten:
- https://dargen.io/
- https://github.com/mjdargen
- https://www.instructables.com/member/mjdargen/
Empfohlen:
Einen Arduino-Gitarren-Tuner herstellen – wikiHow

So bauen Sie einen Arduino-Gitarren-Tuner: Dies sind die Anweisungen, um einen Gitarren-Tuner aus einem Arduino und mehreren anderen Komponenten zu machen. Mit Grundkenntnissen in Elektronik und Codierung können Sie dieses Gitarrenstimmgerät herstellen. Zuerst müssen Sie wissen, was die Materialien sind. Ma
ALARMA ARDUINO CON SENSOR DE MOVIMIENTO, SIRENA Y AVISO AL TLF. MÓVIL: 9 Schritte

ALARMA ARDUINO CON SENSOR DE MOVIMIENTO, SIRENA Y AVISO AL TLF. MÓVIL: Este proyecto consiste en a alarma básica que Detecta presencia, activa una sirena de 108dB y visa al usuario mediante un SMS (opcional). Permite también el control remoto básico por parte del usuario a través de SMS (encendido, apagado, reinicio
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow

Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Einfaches BLE mit sehr geringem Stromverbrauch in Arduino Teil 2 - Temperatur- / Feuchtigkeitsmonitor - Rev 3: 7 Schritte

Easy Very Low Power BLE in Arduino Teil 2 – Temperatur-/Feuchtigkeitsmonitor – Rev 3: Update: 23. November 2020 – Erster Austausch von 2 x AAA-Batterien seit 15. Januar 2019 dh 22 Monate für 2x AAA AlkalineUpdate: 7. April 2019 – Rev 3 of lp_BLE_TempHumidity, fügt Datum/Uhrzeit-Plots hinzu, verwendet pfodApp V3.0.362+ und automatische Drosselung, wenn
Arduino-Programmierung über das Handy -- Arduinodroid -- Arduino-Ide für Android -- Blinzeln: 4 Schritte

Arduino-Programmierung über das Handy || Arduinodroid || Arduino-Ide für Android || Blink: Bitte abonnieren Sie meinen Youtube-Kanal für weitere Videos…… Arduino ist ein Board, das direkt über USB programmiert werden kann. Es ist sehr einfach und günstig für College- und Schulprojekte oder sogar für Produktprototypen. Viele Produkte bauen zunächst darauf für i