tone()

Beschreibung

Generiert einen Ton mit der angegebenen Frequenz (und 50% duty cycle) auf einem Pin. Eine Dauer des Tons kann festgelegt werden; Sonst wird der Ton abgespielt, bis ein noTone() aufgerufen wird. Der Pin kann an einen Piezo oder an einen Lautsprecher angeschlossen werden, um Töne abzuspielen.

Nur ein Ton kann gleichzeitig abgespielt werden. Wenn bereits ein Ton auf einem anderen Pin abgespielt wird, hat tone() auf einem 2. Pin keinen Effekt. Wenn der Ton auf dem gleichen Pin gespielt wird, setzt der Aufruf der Funktion die Frequenz des Tons.

Die Nutzung der tone() Funktion interferiert mit PWM outputs auf Pin 3 und 11 (Auf Boards außer dem Arduino Mega).

Es ist nicht möglich, Töne mit einer Frequenz niedriger als 31Hz zu erstellen. Für technische Details, siehe Brett Hagman's post.

Syntax

tone(pin, frequency)

tone(pin, frequency, duration)

Parameter

  • pin: Der Arduino-Pin, auf dem der Ton generiert werden soll.
  • frequency: Die Frequenz des Tons in Hertz. Erlaubte Datentypen: unsigned int.
  • duration: Die Dauer des Tons in Millisekunden (optional). Erlaubte Datentypen: unsigned long.

Rückgabewert

Nichts.

Beispielcode

Let's to play "Jingle Bells" song with Arduino.

Hardware Required

1×Arduino UNO or Genuino UNO
1×Piezo Buzzer
1×Breadboard
n×Jumper Wires
Bitte Beachten: Dies sind Partnerschaftslinks. Wenn Sie die Komponenten über diese Links Kaufen, können wir eine Provision erhalten, ohne weitere Kosten für Sie. Wir Schätzen es.

Wiring Diagram

Arduino Piezo Buzzer Wiring Diagram

Image is developed using Fritzing. Click to enlarge image

Arduino Code

/* * Created by ArduinoGetStarted.com * * This example code is in the public domain * * Tutorial page: https://arduinogetstarted.com/de/reference/tone */ #include "pitches.h" // notes in the melody: int melody[] = { NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_G5, NOTE_C5, NOTE_D5, NOTE_E5, NOTE_F5, NOTE_F5, NOTE_F5, NOTE_F5, NOTE_F5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_D5, NOTE_D5, NOTE_E5, NOTE_D5, NOTE_G5 }; // note durations: 4 = quarter note, 8 = eighth note, etc, also called tempo: int noteDurations[] = { 8, 8, 4, 8, 8, 4, 8, 8, 8, 8, 2, 8, 8, 8, 8, 8, 8, 8, 16, 16, 8, 8, 8, 8, 4, 4 }; void setup() { // iterate over the notes of the melody: int size = sizeof(noteDurations) / sizeof(int); for (int thisNote = 0; thisNote < size; thisNote++) { // to calculate the note duration, take one second divided by the note type. //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. int noteDuration = 1000 / noteDurations[thisNote]; tone(8, melody[thisNote], noteDuration); // to distinguish the notes, set a minimum time between them. // the note's duration + 30% seems to work well: int pauseBetweenNotes = noteDuration * 1.30; delay(pauseBetweenNotes); // stop the tone playing: noTone(8); } } void loop() { // no need to repeat the melody. }

For more detailed instruction, see Arduino - Piezo Buzzer

※ Anmerkungen und Warnungen:

Wenn du verschiedene Töne auf mehreren Pins spielen willst, musst du zunächst mit noTone() auf einem Pin den Ton stoppen und anschließend mit tone() auf dem nächsten Pin einen neuen Ton generieren.

Siehe Auch

※ UNSERE BOTSCHAFTEN