Главная » Arduino
Призовой фонд
на октябрь 2021 г.
1. Рюкзак Mean Well
Компэл
2. Инвертор авто Mean Well 150 Ватт
Компэл
3. Термос MeanWell
Компэл
4. 100 руб.
От пользователей

Похожие статьи:


Arduino UNO урок 7 - Пьезоизлучатель

В данном уроке рассмотрим работу с пьезоизлучателем для генерирования звуков. Мы будем использовать пьезодатчик (Piezo Transducer), который позволяет генерировать звуковые волны в диапазоне частот 20 Гц - 20 000 Гц. Не путайте с пьезобиперами и т.п., которые генерируют звук только определенной частоты при подаче на них постоянного напряжения.

Мы будем использовать ШИМ-генератор Arduino для генерирования звука на пьезоизлучателе.

Для данного урока, мы не будем использовать стандартную функцию tone() по нескольким причинам:
- может использоваться только на одной ноге Arduino в одно время;
- использование tone() мешает использовать ШИМ на ногах 3 и 11

Используйте данную функцию, когда вам необходима какая-либо частота и не нужен ШИМ на 3 и 11 ножках Arduino.

ШИМ Arduino запускается на частоте 500 Гц, это вполне хороший звуковой тон для нашего примера.

Пьезоизлучатель

Для работы схемы подсоедините пьезодатчик к ноге 9 и 0V Arduino.

В скетче, показанном ниже, мы сделали альтернативную функцию beep(), которая посылает ШИМ-сигнал на пьезо, затем идет небольшая задержка, затем сигнал с пьезо снимается и опять задержка. В результате чего издается непродолжительный звук. Переменная delayms используется в функции для задания времени звучания в миллисекундах. Продолжительность ШИМ (20 в нашем примере) не очень важна.

Скетч ниже, при запуске программы издает 3 непродолжительных, а затем один продолжительный звуковой сигнал.

/*
 Пьезо
 
 Данный пример показывает управление Пьезо на 9 ножке Arduino,
 используя функцию analogWrite()
 
 При запуске издается 3 коротких звуковых сигнала, затем пауза в 1 сек,
 а затем продолжительный звуковой сигнал
 
 */

void setup()  { 
  pinMode(9, OUTPUT);	// устанавливаем 9 ногу как выход 
  beep(50);
  beep(50);
  beep(50);
  delay(1000);
} 

void loop()  { 
  beep(200); 
}

void beep(unsigned char delayms){
  analogWrite(9, 20);      // значение должно находится между 0 и 255
                           // поэкспериментируйте для получения хорошего тона
  delay(delayms);          // пауза delayms мс
  analogWrite(9, 0);       // 0 - выключаем пьезо
  delay(delayms);          // пауза delayms мс   
}

Оригинал статьи

Теги:

Колтыков А.В. Опубликована: 2011 г. 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (8) | Я собрал (0) | Подписаться

0
Рустам #
Ошибка в коде и у вас и в оригинальной статье. Зачем-то запихнули эту часть:
beep(50);
beep(50);
beep(50);
delay(1000);
в void setup. Эта часть кода должна стоять вначале цикла void loop, иначе просто будет бить три такта по 50мс.
Ответить
0
tolyanich #
И в чем ошибка то? Это так и задумано. При включении или после сброса пропищать 3 раза.
Ответить
0
Nodit #
А мы можем использовать пьезоизлучатель в качестве приемника и читать сигнал с его ножек?
Ответить
0
Nodit #
Извините, а что это за излучатель? Половину ночи рылся в нете, только простейшие зумы нашел. Ничего даже близкого к диапазону 20-20000.
Ответить
0
talibanich #
Обычный зуммер
Ответить
0
Fedor #
"void beep(unsigned char delayms) " нужно наверно unsigned int ?
Ответить
0
dany #
А вот скетч без delay
void setup()
{
}
int powo, powoo = 3;
unsigned long prev, interval = 100;
unsigned long prev1, interval1 = 5000;
void loop() {
unsigned long now = millis();
if(powo != 0)
{
if (now - prev > interval)
{
beep(50, 700, 11, 0);
prev = now;
powo--;
}
}
else
{
if (now - prev1 > interval1)
{
prev1 = now;
powo = powoo;
}
}
}
void beep(int v, int h, int pin, int t)
{
int d;
tone(pin, h);
if(t)
{
d = t;
}
else
{
d = millis();
}
if(millis() - d > v)
{
noTone(pin);
}
else
{
beep(v, h, pin, d);
}
}
Ответить
0
максим #
Какую частоту можно получить на выходе макс. и мин?
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Модуль измерения тока на ACS712 (30А)
Модуль измерения тока на ACS712 (30А)
Регулятор мощности 2 кВт Квадрокоптер Syma X11
вверх