#1 2023-12-20 17:34:42

OngBak
Учасник
Зареєстрований: 2023-12-20
Повідомлень: 3

При нажатии на кнопку менялась частота звука

Помогите пожалуйста. Нужен скетч. При нажатии на кнопку менялась частота звука.

Например: При включении издает звук 14000, при первом нажатии - 15000, при втором - 16000, при третьем - 17000, при четвертом - частота возвращалась в начальное состояние (т.е. 14000) и так по кругу.

Неактивний

#2 2023-12-20 18:10:15

renoshnik
Учасник
Зареєстрований: 2017-04-03
Повідомлень: 1,025

Re: При нажатии на кнопку менялась частота звука

OngBak пише:

Помогите пожалуйста. Нужен скетч. При нажатии на кнопку менялась частота звука.

Например: При включении издает звук 14000, при первом нажатии - 15000, при втором - 16000, при третьем - 17000, при четвертом - частота возвращалась в начальное состояние (т.е. 14000) и так по кругу.

https://doc.arduino.ua/ru/prog/Tone

Неактивний

#3 2023-12-20 18:24:40

OngBak
Учасник
Зареєстрований: 2023-12-20
Повідомлень: 3

Re: При нажатии на кнопку менялась частота звука

Так а как кнопку привязать и режимы настроить? Я в программировании не понимаю. Может кто-то код скинуть?

Неактивний

#4 2023-12-20 22:33:19

renoshnik
Учасник
Зареєстрований: 2017-04-03
Повідомлень: 1,025

Re: При нажатии на кнопку менялась частота звука

OngBak пише:

Так а как кнопку привязать и режимы настроить? Я в программировании не понимаю. Может кто-то код скинуть?

http://forum.arduino.ua/viewtopic.php?id=1069

Неактивний

#5 2023-12-21 11:11:59

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 133

Re: При нажатии на кнопку менялась частота звука

Один із найпростіших, мабуть, варіантів:

constexpr byte PIN_BUZZER { 3 };
constexpr byte PIN_BUTTON { 12 };

constexpr byte debounce_ms { 50 };

void setup() {
  pinMode(PIN_BUTTON, INPUT_PULLUP);
}

void loop() {
  constexpr unsigned int freq[] = { 14000, 15000, 16000, 17000 };
  byte idx = 0;

  for (;;) {
    tone(PIN_BUZZER, freq[idx]);

    unsigned long start_ms = millis();
    do {
      if (digitalRead(PIN_BUTTON) == LOW) {
        start_ms = millis();
        continue;
      }
    } while ((millis() - start_ms) < debounce_ms);

    while (digitalRead(PIN_BUTTON) == HIGH) {};

    if (++idx >= sizeof(freq)/sizeof(*freq)) {
      idx = 0;
    }
  }
}

Припускається, що випромінювач звуку підключений до піна 3, кнопка до піна 12 і замикається на землю.

В такій реалізації процесор постійно споживає струм в активному режимі. Якщо потрібна економія споживання при автономному живленні, необхідно задіяти функції енергозбеження і переривання.

Неактивний

#6 2023-12-21 11:57:05

OngBak
Учасник
Зареєстрований: 2023-12-20
Повідомлень: 3

Re: При нажатии на кнопку менялась частота звука

Спасибо dimich, как доедут ко мне излучатели звука, попробую.

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму