Функция tone, noTone в Ардуино

Функция tone arduino пример, описание

Arduino tone используется для генерации на выходе микроконтроллера ШИМ-сигнала с 50% заполнением и с заданной частотой. Для воспроизведения аудио сигнала к пину нужно подключить пьезопищалку или динамик через транзистор. Продолжительность сигнала может быть задана параметром в команде tone или генерация остановится при перезагрузке платы или при вызове функции noTone Arduino Uno.

Команда tone в Ардуино описание

Воспроизводиться на Ардуино может одновременно только один сигнал. Если аудио сигнал воспроизводится уже на каком то порту, то новый вызов функции tone() с номером другого порта ни к чему не приведет. Если функция tone() Arduino будет вызвана с номером того же порта, то будет воспроизводится сигнал с новой частотой. Т.е. воспроизводится может только одна частота сигнала и на одном пине.

Синтаксис

tone(pin, frequency)
tone(pin, frequency, duration)

Параметры

pin — номер порта вход/выхода, на котором будет генерироваться сигнал
frequency — частота сигнала в Герцах
duration — длительность сигнала в миллисекундах

Функция tone, noTone использует аппаратный таймер, поэтому использовать в скетче ШИМ (PWM) сигнал для пьезодинамика невозможно на портах выхода 3 и 11 (кроме платы Arduino Mega). Генерация сигнала является полуаппаратной, то есть пин Ардуино включается/выключается по прерыванию таймера (Timer 2), поэтому на высокой частоте звука, микроконтроллер может немного притормаживать.

Arduino tone пример программы

void setup() {
   pinMode(10, OUTPUT); // объявляем пин 10 как выход
}

void loop() {
   tone(10, 600);  // включаем сигнал с частотой 600 Гц
   delay(1000);     // ждем 1 секунду
   tone(10, 900);  // включаем сигнал с частотой 900 Гц
   delay(1000);     // ждем 1 секунду
   noTone(10);      // отключаем сигнал
   delay(1000);     // ждем 1 секунду
}

Arduino tone максимальная частота

Генерируемая частота звука зависит от размера таймера в плате Arduino. Для микроконтроллера Arduino Uno или Nano и минимальная частота воспроизводимого звука составляет 31 Гц, а максимальная частота tone – 65535 Гц. Диапазон воспринимаемых частот ухом обычного человека значительно меньше.

Arduino tone ноты, мелодия

const byte COUNT_NOTES = 39; // количество нот

// частоты ноты
int frequences[COUNT_NOTES] = {
  392, 392, 392, 311, 466, 392, 311, 466, 392,
  587, 587, 587, 622, 466, 369, 311, 466, 392,
  784, 392, 392, 784, 739, 698, 659, 622, 659,
  415, 554, 523, 493, 466, 440, 466,
  311, 369, 311, 466, 392
};
// длительность нот
int durations[COUNT_NOTES] = {
  350, 350, 350, 250, 100, 350, 250, 100, 700,
  350, 350, 350, 250, 100, 350, 250, 100, 700,
  350, 250, 100, 350, 250, 100, 100, 100, 450,
  150, 350, 250, 100, 100, 100, 450,
  150, 350, 250, 100, 750
};

void setup() {
   pinMode(10, OUTPUT); // объявляем пин 10 как выход
}

void loop() {
for (int i = 0; i <= COUNT_NOTES; i++) {
    tone(10, frequences[i], durations[i] * 2); // включаем сигнал
    delay(durations[i] * 2);  // пауза для ноты
    noTone(10); // выключаем сигнал
  }
}
1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5,00 out of 5)
Загрузка...

Подборка на тему: Функция tone, noTone в Ардуино

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

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