помогите получить амплитуду и частоту!

Oleg93rus
Offline
Зарегистрирован: 09.03.2014

Есть датчик вибрации Piezo Disk Vibration Sensor и arduino uno.

Датчик прицепил, все отлино работает. 

Подскажите, пожалуйста, что теперь нужно сделать, чтобы амплитуда в виде графика выводилась?!

AS
Offline
Зарегистрирован: 12.03.2014

а куда должен выводиться график? может вы данные на комп считываете и там в excel'е график строите, или у вас матрица светодиодная к Uno прикручена? 

Oleg93rus
Offline
Зарегистрирован: 09.03.2014

Я сам не понимаю как это должно быть. Есть датчик и ардуино подключенное к компу. Нужно любым способом получить амплитуду в виде графика. Предложите, кто что может))

com
Offline
Зарегистрирован: 06.09.2013

Oleg93rus пишет:

Нужно любым способом получить амплитуду в виде графика

смотрите глазами значения амплитуды в мониторе порта и рисуйте руками график на миллиметровке. пойдет?

Oleg93rus
Offline
Зарегистрирован: 09.03.2014

Неее. Нужно чтоб комп сам рисовал

leshak
Offline
Зарегистрирован: 29.09.2011
jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

интерсно вы для каждого вопроса будете тему создавать?

сначала как подключить

http://arduino.ru/forum/apparatnye-voprosy/pomogite-podklyuchit-datchik

теперь как измерить им амплитуду и частоту

далее предполагаю еще что нибудь будет)))

а параметры какие? диапазон значений. 

частота тоже ведь не одна будет скорее всего. гармоники хотя бы

Oleg93rus
Offline
Зарегистрирован: 09.03.2014

выводится цифры, но график не строится((

 

leshak
Offline
Зарегистрирован: 29.09.2011

Oleg93rus пишет:

выводится цифры, но график не строится((

 

У всех строится, а у вас не строится. Интерестно почему?

Oleg93rus
Offline
Зарегистрирован: 09.03.2014
Я пишу вот такой код. что в нем не так?
 
void setup()
{
Serial.begin(9600);
}
void loop()
{
int val;
val=analogRead(0); // 0,1,2,3,4,5 - номер входа, к которому подключен синий провод.
Serial.println(val,DEC);
delay(100);
}
leshak
Offline
Зарегистрирован: 29.09.2011

Ну, первое "не так". В нем то, что вы вставляете его на форум не как код.  Вверху форума "программирование" есть прикрепленная ветка

Вставка программного кода в тему/комментарий

Второе "не так", состоит в том, что ... нужно же мегуне как-то узнать что эти цифры "лезущие из ардуины" нужно рисовать в виде графика. А если нужно сразу два параметра на графике рисовать, как узнать какой к какому относится?

То есть, по любому, из самой ардуины нужно слать данные "в каком-то особом формате". Который, как ни странно на той же странице и описан:

А если пройти по ссылочке, то там это все подробнее расписанно. Причем есть даже два варианта. Либо взять их библиотческу, которая находящуюся на этой же странице MegunoLink Lite Plotting Tool | MegunoLink, либо взять, альтернативу, просто одну фунцию (исходный код которой дан там же).

void sendPlotData(String seriesName, float data)
{
  Serial.print("{");
  Serial.print(seriesName);
  Serial.print(",T,");
  Serial.print(data);
  Serial.println("}");
}

И слать своить данные не с помощью Serial.print, а с помощью этой функции sendPlotData(....

Вообщем RTFM.

Oleg93rus
Offline
Зарегистрирован: 09.03.2014

leshak, я очень слаб в програмировании. Если не сложно, пришли, пожалуйста, полностью код, который мне нужно написать.

Буду очень благодарен!

leshak
Offline
Зарегистрирован: 29.09.2011

Так уже 99% я вам дал. Осталось только скопировать.

Возмите функцию из моего прошлого сообщения и добавте в свой код. Просто сделайте copy-paste и вставтее ее пониже своего loop() 

Хватит на это програмерских сил?

А потом, вместо своего 

Serial.println(val,DEC);

Напишите 

sendPlotData("Vibration",val);

Весь остальной свой код - оставте как и было.

Oleg93rus
Offline
Зарегистрирован: 09.03.2014
void setup()
{
Serial.begin(9600);
}
void loop()
void sendPlotData(String seriesName, float data)
{
  Serial.print("{");
  Serial.print(seriesName);
  Serial.print(",T,");
  Serial.print(data);
  Serial.println("}");
}
{
int val;
val=analogRead(0); // 0,1,2,3,4,5 - номер входа, к которому подключен синий провод.
sendPlotData("Vibration",val);
delay(100);
}

написал так. Выходит ошибка:

sketch_mar15a:7: error: expected initializer before 'void'
sketch_mar15a:16: error: expected unqualified-id before '{' token
 
и выделяет строку : void sendPlotData(String seriesName, float data)
leshak
Offline
Зарегистрирован: 29.09.2011

Функцию sendPlotData(), нужно не ВНУТРЬ loop(), вставить, а ПОСЛЕ. После закрывающей фигурной скобки.... в самый низ скетча.

Смотрите, раньше у вас скетч состоял из двух функций 

void setup(){
 .....
}

void loop(){
 ......
}

Нужно добавить еще одну функцию, что-бы их стало три:

void setup(){
 .....
}

void loop(){
 ......
}

void sendPlotData(String seriesName, float data){
 ......
}

 

Oleg93rus
Offline
Зарегистрирован: 09.03.2014

Спасибо большое!!! все получилось!!