Помогите сделать программу для измерения уровня шума

Тема в разделе "Закажу проект", создана пользователем Alex 777, 18 ноя 2016.

  1. Alex 777

    Alex 777 Нерд

    Здравствуйте, помогите пожалуйста сделать скетч.
    Принцип действия устройства:
    Когда уровень шума в окружающей среде превышает заданный прог срабатывания, включается светодиод и пьезодинамик.
    Все необходимые детали есть.

    Заранее спасибо.:)
     
  2. ostrov

    ostrov Гуру

    Датчик выдает аналоговый сигнал? Тогда программа в пару строк.
     
    Alex 777 нравится это.
  3. Alex 777

    Alex 777 Нерд

  4. Tomasina

    Tomasina Сушитель лампочек Модератор

    Код (C++):
    if(analogRead(A0)) > 512
    {
       digitalWrite(LED, HIGH);
       digitalWrite(BUZZER, HIGH);
    }
    else
    {
       digitalWrite(LED, LOW);
       digitalWrite(BUZZER, LOW);
    }
    ну или так, почти в пару строк:
    Код (Text):
    boolean noize = analogRead(A0) > 512 ? HIGH : LOW;
    digitalWrite(LED, noize);
    digitalWrite(BUZZER, noize);
    И, кстати, в описании датчика есть код ;)
     
    Последнее редактирование: 18 ноя 2016
    Alex 777 нравится это.
  5. Alex 777

    Alex 777 Нерд

    Спасибо:)!!!
     
  6. Alex 777

    Alex 777 Нерд

    Программу написал, не могу найти ошибку.

    Код (C++):
    #define LED_PIN             13  // Встроенный светодиод Arduino
    #define LOUDNESS_SENSOR_PIN A5  // Датчик громкости подключён к А5
    #define TRESHOLD            400 // Устанавливаем порог србатывания
    #define BUZZER              3

    void setup() {
      // Настроим ножку со светодиодом на выход
      pinMode(LED_PIN, OUTPUT);
      pinMode(BUZZER, OUTPUT);
    }
    void loop() {
      // Считаем текущее значение громкости
      int loudness = analogRead(LOUDNESS_SENSOR_PIN);
      // Если громкость выше пороговой..
      if  (loudness > TRESHOLD)
        // зажгём светодиод,
         digitalWrite(LED_PIN, HIGH);
         digitalWrite(BUZZER, HIGH);
      else
         // а если нет - погасим
         digitalWrite(LED_PIN, LOW);
         digitalWrite(BUZZER, LOW);
    }
     
  7. Tomasina

    Tomasina Сушитель лампочек Модератор

    А где скобки в if?
     
    Alex 777 нравится это.
  8. Alex 777

    Alex 777 Нерд

    Точно! ошибку исправил.
    Теперь почему-то пьезодинамик не работает...
     
  9. ostrov

    ostrov Гуру

    В одну строку:
    Код (C++):
    digitalWrite(LED_PIN,(analogRead(LOUDNESS_SENSOR_PIN)>400));
     
    Alex 777 нравится это.
  10. Alex 777

    Alex 777 Нерд

    так что с пьезодинамиком делать? работает только светодиод.
     
  11. Tomasina

    Tomasina Сушитель лампочек Модератор

    Значит опять не там скобки.
     
    Alex 777 нравится это.
  12. Alex 777

    Alex 777 Нерд

    А где?
     
  13. Tomasina

    Tomasina Сушитель лампочек Модератор

    а код где? Мы ж не на чайнике гадаем. ;)
     
    Alex 777 нравится это.
  14. Alex 777

    Alex 777 Нерд

    вот так?
    Код (C++):
    #define LED_PIN             13  // Встроенный светодиод Arduino
    #define LOUDNESS_SENSOR_PIN A5  // Датчик громкости подключён к А5
    #define TRESHOLD            400 // Устанавливаем порог србатывания
    #define BUZZER              3

    void setup() {
      // Настроим ножку со светодиодом на выход
      pinMode(LED_PIN, OUTPUT);
      pinMode(BUZZER, OUTPUT);
    }
    void loop() {
      // Считаем текущее значение громкости
      int loudness = analogRead(LOUDNESS_SENSOR_PIN);
      // Если громкость выше пороговой..
      if  (loudness > TRESHOLD)
        {
         digitalWrite(LED_PIN, HIGH);
         digitalWrite(BUZZER, HIGH);
        }
      else
      {
         digitalWrite(LED_PIN, LOW);
         digitalWrite(BUZZER, LOW);
      }
    }
     
  15. Tomasina

    Tomasina Сушитель лампочек Модератор

    сейчас все правильно в логике.
    Если пищалка не работает, проверяй контакты.
     
    Alex 777 нравится это.
  16. Alex 777

    Alex 777 Нерд

    А разьве для пищалки чистоту задавать не надо?
     
  17. Tomasina

    Tomasina Сушитель лампочек Модератор

    если она с внутренним генератором, то не надо.
    Иначе надо.

    P.S. где-то эту лисичку я уже видел...
     
    Alex 777 нравится это.
  18. Alex 777

    Alex 777 Нерд

    вот так? только теперь пищит постоянно...

    Код (C++):
    #define LED_PIN             13  // Встроенный светодиод Arduino
    #define LOUDNESS_SENSOR_PIN A5  // Датчик громкости подключён к А5
    #define TRESHOLD            400 // Устанавливаем порог србатывания
    #define BUZZER              3

    void setup() {
      // Настроим ножку со светодиодом на выход
      pinMode(LED_PIN, OUTPUT);
      pinMode(BUZZER, OUTPUT);
    }
    void loop() {
      // Считаем текущее значение громкости
      int loudness = analogRead(LOUDNESS_SENSOR_PIN);
      // Если громкость выше пороговой..
      if  (loudness > TRESHOLD)
        {
         digitalWrite(LED_PIN, HIGH);
         tone(BUZZER, 4500);
        }
      else
      {
         digitalWrite(LED_PIN, LOW);
         tone(BUZZER, 0);
      }
    }
     
  19. Tomasina

    Tomasina Сушитель лампочек Модератор

    последнее надо как noTone(BUZZER);
     
    Alex 777 нравится это.
  20. ostrov

    ostrov Гуру

    Через переменную значит, три строки.

    Пищалки бывают активные, им достаточно подать питания чтобы пищать, а есть пассивные типа динамика, им надо генерировать частоту. У вас какой?
     
    Alex 777 нравится это.