Интернет-магазин «Неглупый Дом»
Потенциометр WH148 задаёт темп от 40 до 200 BPM, пассивный зуммер отбивает щелчок в такт.
Потенциометр — переменный резистор: поворот ручки меняет напряжение на среднем выводе от 0 до 5V, Arduino через `analogRead()` переводит это в число 0-1023. `map()` пересчитывает диапазон 0-1023 в 40-200 BPM — чем правее ручка, тем выше темп.
BPM переводится в интервал между ударами в миллисекундах: 60000 / BPM. Скетч не "спит" через `delay()`, а в каждом проходе `loop()` проверяет через `millis()`, прошёл ли интервал — это позволяет менять темп прямо во время работы без рывков.
`tone(buzzerPin, 1500, 50)` заставляет пассивный зуммер сыграть звук 1500 Гц длительностью 50 мс — активный зуммер так не умеет, у него нет регулируемой частоты.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.
const int potPin = A0; // средний вывод потенциометра
const int buzzerPin = 8; // пассивный зуммер
unsigned long lastBeat = 0; // время последнего щелчка
void setup() {
pinMode(buzzerPin, OUTPUT);
}
void loop() {
int potValue = analogRead(potPin); // 0-1023 от ручки
int bpm = map(potValue, 0, 1023, 40, 200); // перевод в удары в минуту
unsigned long beatInterval = 60000UL / bpm; // интервал между ударами, мс
if (millis() - lastBeat >= beatInterval) { // пора щёлкнуть?
tone(buzzerPin, 1500, 50); // звук 1500 Гц, 50 мс
lastBeat = millis(); // запоминаем момент щелчка
}
}
`beatInterval` пересчитывается каждый цикл, поэтому темп можно крутить прямо во время работы.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу: 137 ₽ 123 ₽ (экономия 14 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.