Arduino Шумомер

SimpleQuiet
Offline
Зарегистрирован: 18.01.2020

делаю шумомер из ардуино. Подключил дисплей и микрофон к ардуино уно, написал скетч и данные выводятся но практически не меняются

Проверьте код и подскажите в чем ошибка если не сложно

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

#define NOISE_PIN A2
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
lcd.init();
Serial.begin(9600);
// Print a message to the LCD.
lcd.backlight();
}
void loop()
{
int noiseValue = (analogRead(NOISE_PIN)+83.2073)/11.003;
lcd.setCursor(1,0);
lcd.print("Noize:");
lcd.setCursor(1,7);
lcd.print(noiseValue);
delay(500);
lcd.clear();
}
asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

1 Вставте код согласно правилам форума.

2 что за микрофон и как подключен?

SimpleQuiet
Offline
Зарегистрирован: 18.01.2020

1. есть пример кода по правилам?

2. микрофон аналоговый Troyka-модуль производитель amperka.ru

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

1. Код вставлен неправильно, потому внимательно не читал.

2. Вопрос про микрофон или про дисплей? Если про микрофон, то почему тогда 80% приведённого кода занимают дела связанные с дисплеем - чтобы мозги запудрить и отвлечь от проблемы?

3. Проблема скорее всего в неправильном подключением микрофона, однако ни тип микрофона, ни схему его подключения нам не сообщили :-(

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

SimpleQuiet пишет:

1. есть пример кода по правилам?

А придя на форум слабо раздел для новичков почитать, прежде, чем постить? С религией что-то не так?

SimpleQuiet
Offline
Зарегистрирован: 18.01.2020
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define NOISE_PIN A2
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
lcd.init();
Serial.begin(9600);
// Print a message to the LCD.
lcd.backlight();
}
void loop()
{
int noiseValue = (analogRead(NOISE_PIN)+83.2073)/11.003; //в ДБ
lcd.setCursor(1,0);
lcd.print("Noize:");
lcd.setCursor(1,7);
lcd.print(noiseValue);
delay(500);
lcd.clear();
}


 

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

SimpleQuiet пишет:

1. есть пример кода по правилам?

2. микрофон аналоговый Troyka-модуль производитель amperka.ru

http://arduino.ru/forum/obshchii/pesochnitsa-dlya-vsekh-novichkov

2, ссылка на описание? Как полключен?

SimpleQuiet
Offline
Зарегистрирован: 18.01.2020

к сожалению ссылку на модуль отсутствует , есть аналог микрофона (другая версия) https://amperka.ru/product/troyka-sound-loudness-sensor

подключен S- на A2(считывание данных с микрофона)

V-5V(питание)

G-GND(земля)

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Уберите из 15 строки сложение и деление и посмотрите что непосредственно выдает вам analogRead

SimpleQuiet
Offline
Зарегистрирован: 18.01.2020

SimpleQuiet
Offline
Зарегистрирован: 18.01.2020

стабильно значения от 49-54

даже если я включаю музыку значение не меняется

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

А если подстроечный резистор покрутить?

SimpleQuiet
Offline
Зарегистрирован: 18.01.2020

если на максимум, то значения меняются от 155-860 при этом каждый раз примерно так: 150,260,500,834,330...

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

А что написано на 8 ногой микросхеме?

И есть ли зависимость показаний от громкости музыки?

SimpleQuiet
Offline
Зарегистрирован: 18.01.2020

UTC sguh LM386G

 

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Я тут как-то на Али тоже купил модуль с микрофоном. Думал, что он есть усилитель, но потом понял, что облажался и приобрел детектор.

SimpleQuiet
Offline
Зарегистрирован: 18.01.2020

т.е у меня микрофон не подходит?

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Это не датчик шума а микрофон с усилителем. Сделайте цикл, скажем, из 100 итераций и посчитайте среднее значение analogaread.  А лучше 1000

sadman41
Онлайн
Зарегистрирован: 19.10.2016

По микрухе вроде все ок.
Убери из лупа все, кроме аналогрида голого и добавь println() результата чтения в сериал. Запусти и открой Plotter в Arduino IDE. Делай шумно, смотри в плоттер.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Надо посчитать среднее. Потом в скетч добавить вычитание полученного среднего и далее считать среднеквадратичное,

Хотя, чует мое сердце, что среднее будет в районе 512

SimpleQuiet
Offline
Зарегистрирован: 18.01.2020

а это когда?

Убери из лупа все, кроме аналогрида голого и добавь println() результата чтения в сериал. Запусти и открой Plotter в Arduino IDE. Делай шумно, смотри в плоттер.

SimpleQuiet
Offline
Зарегистрирован: 18.01.2020

я не понял как сделать цикл, примерно так?

void loop()
{

int readNOISE_PIN(int samples){ // samples - сколько раз нужно прочитать сенсор

   unsigned int avg_sum=0;

   for(byte i=0;i<samples;i++){

       avg_sum+=analogRead(NOISE_PIN);
       lcd.setCursor(1,0);

lcd.print("Noize:");

lcd.setCursor(1,7);

lcd.print(noiseValue);

delay(500);

lcd.clear();
   }
 return avg_sum/samples;

}

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Шаббат шалом, православные!

Неужто неясно, после вот этого:

SimpleQuiet пишет:

а это когда?

Убери из лупа все, кроме аналогрида голого и добавь println() результата чтения в сериал. Запусти и открой Plotter в Arduino IDE. Делай шумно, смотри в плоттер.

Что дальше должны открыться врата глума и сарказма? ;)))))

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

SimpleQuiet, что у Вас за датчик с микрофоном, никто не знает (похоже, включая Вас). 

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