Разделы инструкций

В сети

Пользователей: 215
Из них просматривают:
Аналоги: 68. Видео: 1. Даташиты: 82. Инструкции: 3. Новости: 17. Остальное: 8. Программы: 2. Производители: 3. Профиль пользователя: 3. Теги: 2. Форум: 25. Чат: 1.
Участников: 3
Гостей: 212

alex01981 , Google , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Оглавление

Функция tone()

Описание
Генерирует на выводе прямоугольный сигнал заданной частоты (с коэффициентом заполнения 50%). Функция также позволяет задавать длительность сигнала. Однако, если длительность сигнала не указана, он будет генерироваться до тех пор, пока не будет вызвана функция noTone(). Для воспроизведения звука вывод можно подключить к зуммеру или динамику.
 
В каждый момент времени может генерироваться только один сигнал заданной частоты. Если сигнал уже генерируется на каком-либо выводе, то использование функции tone() для этого вывода просто приведет к изменению частоты этого сигнала. В то же время вызов функции tone() для другого вывода не будет иметь никакого эффекта.

Использование функции tone() может влиять на ШИМ-сигнал на выводах 3 и 11 (на всех платах, кроме Mega).

ПРИМЕЧАНИЕ: для воспроизведение разных звуков на нескольких выводах, необходимо сперва вызывать noTone() на одном выводе и только после этого использовать функцию tone() на следующем.
 
Синтаксис
 
tone(pin, frequency)
tone(pin, frequency, duration)
 
Параметры
pin: вывод, на котором будет генерироваться сигнал
frequency: частота сигнала в Герцах - unsigned int
duration: длительность сигнала в миллисекундах (опционально) - unsigned long
 
Возвращаемые значения
 
нет

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити
Kosmonavt
Отправлено: 17.02.2019 0:59  Обновлено: 17.02.2019 1:19
Главный Инженер
Дата регистрации: 08.02.2009
Откуда:
Сообщений: 1850
 Функция tone()
Будет не лишним привести здесь пример. Я подключал динамик 8 Ом через конденсатор 1 мкФ, звучит прикольно, правда звук, почему-то не отключается, звучит по кругу:
const int SoundPin 9// Пин подключения пьезоизлучателя – 9 дискретный 
int DelaySound 1000// Пауза 1 секунда
 
void setup
() 
{ 
}
 
void loop
() 
{ 
  
// Пример использования tone() 
  //tone(pin, частота) 
  tone(SoundPin1915);  // Воспроизводим сигнал с частотой 1915 Гц 
  delay(DelaySound);  // Пауза 1 секунда (1000 миллисекунд – значение переменной DelaySound ) – длительность воспроизведения сигнала
  tone(SoundPin1700); 
  delay
(DelaySound);
  tone(SoundPin1519); 
  delay
(DelaySound);
  tone(SoundPin1432); 
  delay
(DelaySound);
  tone(SoundPin1275); 
  delay
(DelaySound);
  tone(SoundPin1136); 
  delay
(DelaySound);
  tone(SoundPin1014); 
  delay
(DelaySound);
  noTone(9); // Выключаем звук 
}
evildesign
Отправлено: 20.02.2019 20:35  Обновлено: 20.02.2019 20:35
Модератор
Дата регистрации: 26.01.2010
Откуда: Тирасполь
Сообщений: 3780
 Функция tone()
По кругу? Не может быть!!! ))
Kosmonavt
Отправлено: 22.02.2019 3:19  Обновлено: 22.02.2019 3:19
Главный Инженер
Дата регистрации: 08.02.2009
Откуда:
Сообщений: 1850
 Функция tone()
Не мог заставить его умолкнуть. Скажем проиграл звук и замолчал, ведь команда noTone(9) должна была отключить звук, а получается, что внутри void loop() этого не произойдёт. Есть примеры отработки кода без цикла?
evildesign
Отправлено: 22.02.2019 7:30  Обновлено: 22.02.2019 7:30
Модератор
Дата регистрации: 26.01.2010
Откуда: Тирасполь
Сообщений: 3780
 Функция tone()
в конце кода поставь while(1);
loop тогда не будет перезапускаться
Kosmonavt
Отправлено: 09.03.2019 20:25  Обновлено: 09.03.2019 22:38
Главный Инженер
Дата регистрации: 08.02.2009
Откуда:
Сообщений: 1850
 Функция tone()
Помогло  Спасибо! Оптимальные значения для громкого звучания модуля с пьезодинамиком, что на фото, это: 610-640, 1670-1700, 1830-1870, 2360-2390, 2880-2950, 4260-4700, 6140. То есть:
tone(SoundPin630);  // где SoundPin - номер вывода, например "9", 630 - оптимальное значение из приведённых выше
модуль с пьезодинамиком
grom
Отправлено: 28.02.2021 10:26  Обновлено: 28.02.2021 10:26
Главный Инженер
Дата регистрации: 18.12.2008
Откуда: Тирасполь
Сообщений: 1931
 Функция tone()
Громкость как задать?
Kosmonavt
Отправлено: 28.02.2021 11:37  Обновлено: 28.02.2021 11:38
Главный Инженер
Дата регистрации: 08.02.2009
Откуда:
Сообщений: 1850
 Функция tone()
Думаю задать не получится. В пределах заданной частоты выходного звука, скорее всего, нужно ставить усилитель с регулятором громкости.
grom
Отправлено: 28.02.2021 12:20  Обновлено: 28.02.2021 12:20
Главный Инженер
Дата регистрации: 18.12.2008
Откуда: Тирасполь
Сообщений: 1931
 Функция tone()
Здрасьте, приехали...Вот она мощь цифровых технологий! А если тише звук нужен? Резистор последовательно с динамиком?
MACTEP
Отправлено: 28.02.2021 13:56  Обновлено: 28.02.2021 14:00
Администратор
Дата регистрации: 07.08.2008
Откуда: Тирасполь
Сообщений: 6853
 Функция tone()
Гром это микроконтроллер, а не усилитель.
Функция всего лишь генерирует заданную частоту на указанном выводе.
Kosmonavt
Отправлено: 28.02.2021 16:01  Обновлено: 28.02.2021 16:01
Главный Инженер
Дата регистрации: 08.02.2009
Откуда:
Сообщений: 1850
 Функция tone()
Как вариант: можно менять частоту выше-ниже от резонансного значения (самой большой громкости) и звук будет на порядок тише.
Kosmonavt
Отправлено: 02.03.2021 23:48  Обновлено: 02.03.2021 23:48
Главный Инженер
Дата регистрации: 08.02.2009
Откуда:
Сообщений: 1850
 Функция tone()
В копилку программ. Среди прочих подобных, понравился неплохой и понятный симулятор Arduino. Есть возможность увидеть демонстрацию работы и тут же отладить скетч. Имеется много встроенных примеров (файлы *.ino). 45 дней бесплатного использования с лицензией после регистрации. Сайт: http://www.virtronics.com.au
Открыть изображение в новом окне

Разное

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

Интересно

Посыпав место пайки песком или натерев крошащимся камнем, можно паять обычными методами даже алюминий.

Похожие инструкции