Эксперимент 4. Терменвокс

Тема в разделе "Arduino & Shields", создана пользователем Alero, 3 фев 2018.

Метки:
  1. Alero

    Alero Нерд

    Всем привет!
    Собрал схему из 4-го эксперимента, скопировал код из вики в IDE. Пищалка вопит в зависимости от освещения. Не могли бы подсказать как сделать так, чтобы она прерывалась на секунду-две. Пробовал вставлять в код noTone(BUZZER_PIN); - результат, звук в начале загрузки на секунду прерывается, а потом продолжает пищать, но уже в другой тональности по сравнению с тем, что звучит без этой строчки в коде. Пожалуйста подскажите как заставить периодически замолкать пищалку.
     
  2. Seamless

    Seamless Нуб

    Maybe так
    Код (C++):
    #define BUZZER_PIN  3
    #define LDR_PIN     A0
    void setup()
    {
      // пин с пьезопищалкой — выход...
      pinMode(BUZZER_PIN, OUTPUT);
      // ...а все остальные пины являются входами изначально,
      // всякий раз при подаче питания или сбросе микроконтроллера.
      // Поэтому, на самом деле, нам совершенно необязательно
      // настраивать LDR_PIN в режим входа: он и так им является
    }
    void loop()
    {
      int val, frequency;
      // считываем уровень освещённости так же, как для
      // потенциометра: в виде значения от 0 до 1023.
      val = analogRead(LDR_PIN);
      // рассчитываем частоту звучания пищалки в герцах (ноту),
      // используя функцию проекции (англ. map). Она отображает
      // значение из одного диапазона на другой, строя пропорцию.
      // В нашем случае [0; 1023] -> [3500; 4500]. Так мы получим
      // частоту от 3,5 до 4,5 кГц.
      frequency = map(val, 0, 1023, 3500, 4500);
      // заставляем пин с пищалкой «вибрировать», т.е. звучать
      // (англ. tone) на заданной частоте 20 миллисекунд. При
      // cледующих проходах loop, tone будет вызван снова и снова,
      // и на деле мы услышим непрерывный звук тональностью, которая
      // зависит от количества света, попадающего на фоторезистор
      tone(BUZZER_PIN, frequency, 250);
      delay(1000);
    последнюю строку замени на любую задержку (!В милисекундах!)
    и 250 можешь тоже заменить!

    Удачи!!!
     
    Последнее редактирование: 6 июн 2019