Преобразовать значение давления с датчика в звук определенной частоты

Aychekalov
Offline
Зарегистрирован: 20.09.2021

Всем доброго времени суток!

Никогда раньше не приходилось иметь дело с ардуино, но сейчас взялся за проект в универе и появилась такая нужда. 
Суть в следующем:
- Есть датчик давления жидкости/, подключенный к Arduino Nano, с него данные выводятся на 1602 дисплей - эту часть я уже сделал, всё работает, выводит в МПа
- Есть УНЧ и микрофон, также подключенные к плате -> нужно преобразовать значение давления с датчика в звуковую волну: (выше частота - выше давление, ниже частота - ниже давление) и потом вывести в Гц на дисплей - и вот как это сделать, не совсем понятно

Я краем уха слышал про функцию "tone", но не вижу, как ее правильно применить здесь. Буду благодарен любой помощи!

 

b707
Offline
Зарегистрирован: 26.05.2017

ты для начала напиши функцию преобразования "давление - частота", это кроме тебя никто не сделает. так как никто не в курсе. что это за функция у тебя.

Потом выведи частоту на дисплей - с этим должен сам справится, если не врешь, что давление уже вывел

А вот если после этого сам не догадаешься, как использоваать tone(0 - приходи, поможем

Aychekalov
Offline
Зарегистрирован: 20.09.2021

Не буду врать, весь код я честно своровал из интернета:) удалил только ненужную часть с перерасчетом в атмосферы
 

void setup()
{
lcd.init(); // initialize the lcd
 
// Print a message to the LCD.
lcd.setBacklight(255);
 
}
 
void loop()
{
int raw = analogRead(A0);
float voltage = (float) raw * 5.0 / 1024.0; // voltage at the pin of the Arduino
float pressure_kPa = (voltage - 0.5) / 4.0 * 1200.0; // voltage to pressure
lcd.setCursor(0,0);
lcd.print(pressure_kPa);
lcd.print(" kPa");
delay(2000);
lcd.clear();
 
}
b707
Offline
Зарегистрирован: 26.05.2017

Aychekalov пишет:

Не буду врать, весь код я честно своровал из интернета:)

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

nik182
Offline
Зарегистрирован: 04.05.2015

Какая связь между давлением жидкости и звуковой волной? Надо ли генерировать звуковую волну? Надо ли оцифровывать звуковую волну, что бы определить параметры волны? Нужно ли оцифровать значения датчика давления, что бы определить параметры волны? Если надо цифровать датчик, то какой частотный диапазон работы датчика? Хватит ли его для реакции на звуковую волну? Это только первые вопросы, которые бросаются в глаза. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

А нахуа тебе микрофон?  Штобыбыл?

b707
Offline
Зарегистрирован: 26.05.2017

DetSimen пишет:

А нахуа тебе микрофон?  Штобыбыл?

мой СШ говорит, что там динамик, а не микрофон

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

А у меня стального шара нету. :(((

Aychekalov
Offline
Зарегистрирован: 20.09.2021

У меня есть общие представления об электронике, в бакалавриате заканчивал курс по ней, но конкретно с ардуино никогда не работал и очень слабо подкован. 

От форума честно прошу о любой помощи:  всё, за что можно зацепиться, самое ключевое - принцип, по которому можно преобразовать сигнал в акустику. 

 

Aychekalov
Offline
Зарегистрирован: 20.09.2021

Да, заработался, там и впрямь динамик для вывода звука

b707
Offline
Зарегистрирован: 26.05.2017

Aychekalov пишет:

самое ключевое - принцип, по которому можно преобразовать сигнал в акустику. 

 

сигнал какой? давления?

Да как угодно. Можно, например,  "частота звука пропорциональная давлению в барах"

Aychekalov
Offline
Зарегистрирован: 20.09.2021

Если конкретнее, буду благодарен, если просветишь про функцию "давление - частота"

Aychekalov
Offline
Зарегистрирован: 20.09.2021

analogread?

Aychekalov
Offline
Зарегистрирован: 20.09.2021

Я так понимаю, что изменение давления на датчике сопровождается перепадами напряжения, так что вот думаю, возможно, analogread подойдет

b707
Offline
Зарегистрирован: 26.05.2017

Aychekalov пишет:

Если конкретнее, буду благодарен, если просветишь про функцию "давление - частота"

ты вообще в школе математику прогулял?

что непонятно во фразе "частота пропорциональна давлению"?

Формулой это пишется так

  F = k * P, где F - частота, P - давление ^)

 

 

PP в нынешних лицеях-колледжах не разбираюсь... ты ПТУшник что ли? В мое время все двоешники туда шли

b707
Offline
Зарегистрирован: 26.05.2017

Aychekalov пишет:

Я так понимаю, что изменение давления на датчике сопровождается перепадами напряжения, так что вот думаю, возможно, analogread подойдет

ты идиот совсем? Ты в том коде, что стырил в инете - уже читаешь давление с датчика, какой нафик аналогрид тебе еще? работай с той цифрой, что ты на экран выводишь

nik182
Offline
Зарегистрирован: 04.05.2015

А что wiki говорит?

rkit
Offline
Зарегистрирован: 23.11.2016

b707 пишет:

  F = k * P

  F = k * P + n

b707
Offline
Зарегистрирован: 26.05.2017

rkit пишет:

  F = k * P + n

это слишком сложно для него :)

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Качество образования во всей красе.  Мозгов хватает только чтобы спиндить код с интернетов.  Шаг в сторону - перегрев межушного ганглия.  Забавно. 

Aychekalov
Offline
Зарегистрирован: 20.09.2021

Ладно, может, я и выгляжу, как идиот, но как преобразовать значение в давлениях в значение в Герцах я понял) Частоту на дисплей вывел)

"А вот если после этого сам не догадаешься, как использоваать tone(0 - приходи, поможем", это еще актуально?)

Aychekalov
Offline
Зарегистрирован: 20.09.2021

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

b707
Offline
Зарегистрирован: 26.05.2017

Aychekalov пишет:

"А вот если после этого сам не догадаешься, как использоваать tone(0 - приходи, поможем", это еще актуально?)

а ты описание функции tone() читал? подсказка - она принимает на вход частоту :)

rkit
Offline
Зарегистрирован: 23.11.2016

Aychekalov пишет:

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

Если бы было желание разобраться - ты бы разбирался, а не шел сюда с кодом, которого даже не читал.

Aychekalov
Offline
Зарегистрирован: 20.09.2021

Спасибо! Разобрался, код дописал, работает пока коряво. но по крайней мере работает
 

//DFRobot.com
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
 
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
 
void setup()
{
lcd.init(); // initialize the lcd
 
// Print a message to the LCD.
lcd.setBacklight(255);
 
}
 
void loop()
{
int raw = analogRead(A0);
float voltage = (float) raw * 5.0 / 1024.0; // voltage at the pin of the Arduino
float pressure_kPa = (voltage - 0.5) / 4.0 * 1200.0; // voltage to pressure
lcd.setCursor(0,0);
lcd.print(pressure_kPa);
lcd.print(" kPa");
delay(2000);
lcd.clear();
 
float acoustic_Hz = pressure_kPa*0.1+100.0; // kPa to Hz
tone (20, acoustic_Hz, 2000)
lcd.setCursor (0,0);
lcd.print (acoustic_Hz);
lcd.print("Hz");
delay(2000);
lcd.clear();
 
}
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Aychekalov пишет:
код дописал,
А вставлять так и не научились :-(

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

Aychekalov пишет:
код дописал,
А вставлять так и не научились :-(

молодёжь! даже вставить толком не умеют )))