Почему зуммер не выключается после работы tone?

Когда вы используете функцию tone() в Arduino, она устанавливает один из выводов платы в определенное состояние с частотой, определенной в аргументе функции. Но у этой функции нет встроенного механизма для остановки генерации звука. Это означает, что после вызова tone() зуммер остается включенным, даже если ваша программа продолжает работать.

Если вы хотите выключить зуммер, когда звук должен быть остановлен, вам необходимо явно указать Arduino, чтобы выключить зуммер при помощи функции noTone(). Эта функция останавливает генерацию звука на выбранном выводе платы.

Например, предположим, что вы хотите воспроизвести звук на выводе 9 и затем выключить зуммер:

int buzzerPin = 9; // выбранный выход для зуммера

void setup() {
  // код инициализации, если требуется
}

void loop() {
  tone(buzzerPin, 1000); // воспроизвести звук на выбранном выводе
  delay(1000); // ждать 1 секунду
  
  noTone(buzzerPin); // выключить зуммер
  
  delay(1000); // ждать 1 секунду перед повторением
}

В этом примере функция tone() устанавливает частоту звука 1000 Гц на выводе 9. Затем функция delay() приостанавливает выполнение программы на 1 секунду. После этого функция noTone() выключает зуммер на выбранном выводе. Затем снова вызывается функция delay() для задержки перед следующей итерацией цикла loop().

Итак, чтобы выключить зуммер после функции tone(), вы должны явно вызвать функцию noTone() на выбранном выводе. Это позволит вам полностью контролировать работу зуммера в вашей программе.