Функция tone() генерирует на заданном выводе меандр (прямоугольный волнообразный сигнал) заданной частоты и с 50% скважностью. Длительность сигнала задаётся аргументом функции, а если он не задан, меандр генерируется до тех пор, пока не будет вызвана функция noTone(). Для воспроизведения сигнала к выводу Arduino подключается динамик (например, пьезодинамик).
ПРИМЕЧАНИЕ. Одновременно может воспроизводиться только один сигнал. Если сигнал уже воспроизводится на одном выводе, то вызов функции tone() на другом выводе Arduino ни к чему не приведет, если же функция будет вызвана на том же выводе, то будет установлена новая частота меандра. Использование данной функции мешает использовать ШИМ на выводах № 3 и 11 (кроме модуля Arduino Mega).
Синтаксис:
1 2 |
tone (pin, frequency) tone (pin, frequency, duration) |
Где:
- pin — номер вывода Arduino, на котором будет генерироваться меандр;
- frequency — частота генерируемого меандра в Герцах;
- duration — длительность генерируемого меандра в миллисекундах.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
const byte sound_pin = 11; // вывод 11 Arduino для динамика void setup() { } void loop () { tone(sound_pin, 1915); // воспроизводим сигнал с частотой 1915 Гц delay(1000); // ждём 1000 мс (длительность воспроизведения сигнала) tone(sound_pin, 1700); delay(1000); tone(sound_pin, 1519); delay(1000); tone(sound_pin, 1432); delay(1000); tone(sound_pin, 1275); delay(1000); tone(sound_pin, 1136); delay(1000); tone(sound_pin, 1014); delay(1000); noTone(sound_pin); // выключаем звук } |
В данном примере к цифровому выводы № 11 Arduino подключается пьезодинамик. В основном цикле (функция loop()) программы реализован алгоритм воспроизведения мелодии.