← Все вопросы

Как пищать пьезо-зуммером на Arduino через tone()?

Задан 32 месяца назад432 просмотров2 ответа
5

Есть маленькая пьезо-пищалка (зуммер). Хочу, чтобы Arduino издавала звуки — например, пикала при срабатывании датчика. Как заставить её звучать? Через digitalWrite вроде только тихо щёлкает.

2 ответа

11
✓ Принятый ответ — помог автору

Для звука есть специальная функция tone(), которая генерирует нужную частоту. Подключи пьезо-зуммер: один вывод на цифровой пин (например 8), второй — на GND (часто через резистор 100 Ом).

void setup() {
  // ничего особого не нужно
}

void loop() {
  tone(8, 1000);   // звук 1000 Гц на пине 8
  delay(500);
  noTone(8);       // тишина
  delay(500);
}

tone(pin, частота) — частота в герцах, чем больше — тем выше писк. noTone(pin) выключает звук.

Можно сыграть мелодию, подавая разные частоты подряд:

tone(8, 262); delay(300); // до
tone(8, 294); delay(300); // ре
tone(8, 330); delay(300); // ми
noTone(8);

Важно: tone() мешает ШИМ на пинах 3 и 11 (на Uno), так что зуммер на них с analogWrite не подружится.

5

Учти, что бывают «активные» и «пассивные» зуммеры. Активный пищит сам, как только подашь питание (digitalWrite HIGH), и менять тон у него нельзя. А tone() нужен именно для пассивного зуммера. Если код с tone() даёт только монотонный писк — у тебя, скорее всего, активный.

Ваш ответ

, чтобы ответить на вопрос.