tone()

tone() — функция для генерации прямоугольного сигнала заданной частоты на цифровом пине Arduino. Используется для воспроизведения звуковых сигналов через пьезоэлемент или динамик.

Принцип работы

Функция генерирует прямоугольный сигнал с 50% рабочим циклом. Если длительность не указана, сигнал будет воспроизводиться до вызова функции noTone().

Синтаксис

tone( pin , frequency , [duration] )

Параметры

pin - номер пина, на котором будет генерироваться сигнал
frequency - частота сигнала в Герцах (Гц)
[duration] - (опционально) длительность сигнала в миллисекундах

Пример

// 
// Пример базового использования
// 
void setup() {
  pinMode(8, OUTPUT);  // Инициализация пина 8 как выход
}

void loop() {
  tone(8, 1000);      // Воспроизведение тона 1000 Гц
  delay(1000);
  noTone(8);          // Остановка звука
  delay(500);
}

// 
// Пример с длительностью
// 
void setup() {
  pinMode(9, OUTPUT);  // Настройка пина 9
}

void loop() {
  tone(9, 2000, 500);  // Тон 2000 Гц длительностью 500 мс
  delay(200);
  tone(9, 1500, 500);  // Смена частоты
  delay(200);
}

Примечание

Важные особенности

  • Одновременно может воспроизводиться только один звуковой сигнал
  • При попытке запустить tone() на другом пине во время воспроизведения — сигнал не запустится
  • При вызове tone() на том же пине — изменится только частота сигнала
  • Использование tone() блокирует работу ШИМ на пинах 3 и 11 (кроме Arduino Mega)

Практическое применение

Функция используется для:

  • Воспроизведения простых звуковых сигналов
  • Создания звуковых оповещений
  • Генерации тонов для музыкальных проектов
  • Сигнализации об ошибках или событиях

Ограничения

  • Только один звуковой сигнал одновременно
  • Блокировка ШИМ на определенных пинах
  • Ограниченный диапазон частот
  • Зависимость от аппаратной платформы

Рекомендации по использованию

  • Выбирайте свободные пины, не конфликтующие с ШИМ
  • Используйте noTone() для остановки звука
  • Проверяйте совместимость с другими функциями
  • Учитывайте ограничения при проектировании проектов

Тип функции

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *