СОДЕРЖАНИЕ ►
Arduino tone используется для генерации на выходе микроконтроллера ШИМ-сигнала с 50% заполнением и с заданной частотой. Для воспроизведения аудио сигнала к пину нужно подключить пьезопищалку или динамик через транзистор. Продолжительность сигнала может быть задана параметром в команде tone или генерация остановится при перезагрузке платы или при вызове функции noTone Arduino Uno.
Команда tone в Ардуино описание
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega
Воспроизводиться на Ардуино может одновременно только один сигнал. Если аудио сигнал воспроизводится уже на каком то порту, то новый вызов функции tone() с номером другого порта ни к чему не приведет. Если функция tone() Arduino будет вызвана с номером того же порта, то будет воспроизводится сигнал с новой частотой. Т.е. воспроизводится может только одна частота сигнала и на одном пине.
Синтаксис функции tone() в Arduino IDE
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); // выключаем сигнал } }










дякую вам за вашу працю
Разве в последнем примере вместо (int i = 0; i <= COUNT_NOTES; i++) не должно быть (int i = 0; i < COUNT_NOTES; i++), мы же выходим за границы