Вывод динамических данных

skyspirit
Offline
Зарегистрирован: 27.02.2015

Здравствуйте, каким образом реализовать вывод изменяющихся данных таких как скоростьизменения если у нас имеются данные с датчика например скорость изменения температуры вот у нас  вывод самой температуры:

myGLCD.setFont(SmallFont);
myGLCD.printNumF(temp3 * 0.1, 2,CENTER, 10);
myGLCD.print("*C", RIGHT, 10);

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

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

skyspirit пишет:

Здравствуйте, каким образом реализовать вывод изменяющихся данных таких как скоростьизменения если у нас имеются данные с датчика например скорость изменения температуры вот у нас  вывод самой температуры:

myGLCD.setFont(SmallFont);
myGLCD.printNumF(temp3 * 0.1, 2,CENTER, 10);
myGLCD.print("*C", RIGHT, 10);

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

тоесть варианты ПОСЧИТАТЬ! не предлагать?

skyspirit
Offline
Зарегистрирован: 27.02.2015

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

 Посчитать возможно я и могу но  как это програмно грамотно задать чтоб выводилась скорость ...

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

skyspirit пишет:

 и в математике нол

видимо не только в математике :)

http://ru.wikihow.com/%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D1%82%D...

skyspirit
Offline
Зарегистрирован: 27.02.2015

шарил бы во всем не обрашался бы :)

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

skyspirit пишет:

шарил бы во всем не обрашался бы :)

а програмно типа считается как то по особенному? типа там пл.сики не плюсики а знак деления вообще ужас какой страшный?

skyspirit
Offline
Зарегистрирован: 27.02.2015

Может я неправильно сформулировал вопрос, но пока не могу понять как подставить в код формулу чтоб на экране выводились изминения гарадусов цельсия в секунду(велечина которая будет постоянно менятся) ведь у нас с датчика выходит только параметр температуры 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

как обычно. сначала считаете что нужно. а потом то что получилось выводите на экран...

skyspirit
Offline
Зарегистрирован: 27.02.2015

Видимо таким как я форум не поможет, благодарю за попытку помоч ;)

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

Если я правильно понял вопрос:, то для того, чтобы вывести на эран изменение температуры в град/сек, нужно:

- измеритить температуру, запомнить в переменной,

- подождать секунду,

- снова измерить температуру,

- вычесть из нового значения значение, запомненное в переменной,

- вывести результат на экран.

Radjah
Offline
Зарегистрирован: 06.08.2014

skyspirit пишет:

Видимо таким как я форум не поможет, благодарю за попытку помоч ;)

Думай -> Гугли -> Спрашивай

Не ты первый, не ты последний.

skyspirit
Offline
Зарегистрирован: 27.02.2015

:)

skyspirit
Offline
Зарегистрирован: 27.02.2015

andriano пишет:

Если я правильно понял вопрос:, то для того, чтобы вывести на эран изменение температуры в град/сек, нужно:

- измеритить температуру, запомнить в переменной,

- подождать секунду,

- снова измерить температуру,

- вычесть из нового значения значение, запомненное в переменной,

- вывести результат на экран.

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

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

int xz;
xz=текущая температура в градусах;
delay(1000);
xz=xz-текущая температура в градусах;
Вывести куда нужно значение xz.
Будет положительное или отрицательное изменение градусов за секунду.
Куда уж ещё подробнее объяснять????? :)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

создай подпрограмму опроса датчика Temr раз в секунду , или два....

например  - http://alxarduino.blogspot.ru/2013/09/BlinkAndPrintWithoutDelay.html

дальше - математика :

delay() - сразу НАХ !!!!!!!!!!

skyspirit
Offline
Зарегистрирован: 27.02.2015

А почему многие так боятся функции delay ведь если устройство работает коректно то зачем заморачиватся тем что процессор лишнюю работу делает ???

Клапауций 999
Offline
Зарегистрирован: 06.06.2015

skyspirit пишет:

А почему многие так боятся функции delay ведь если устройство работает коректно то зачем заморачиватся тем что процессор лишнюю работу делает ???

никто не боится delay.

проблема в том, что ситуация обстоит с точностью до наоборот - процессор НЕ выполняет лишней работы во время выполнения delay, фактически это состояние можно сравнить с полной остановкой процессора - датчики не опрашиваются, кнопки не нажимаются, светодиоды/ноги не дёргаются. всё стоит - у нас сиеста(delay ).

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

skyspirit пишет:

А почему многие так боятся функции delay ведь если устройство работает коректно то зачем заморачиватся тем что процессор лишнюю работу делает ???

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

skyspirit
Offline
Зарегистрирован: 27.02.2015

А если в рабочем коде есть delay как его заменить или в некоторых случаях эта функция нужна ? например в моем термометре:


#include <LCD5110_Graph.h>
#include <Wire.h>
#include <BMP085.h>
BMP085 dps = BMP085();

long temp3 = 0;


LCD5110 myGLCD(2, 3, 4, 6, 5);

extern unsigned char SmallFont[]; 


void setup() {
    
  myGLCD.InitLCD(63);                    // контраст экрана
  myGLCD.setFont(SmallFont);

  Wire.begin();
  delay(2000);
}
void loop() 
{
  dps.getTemperature(&temp3);
   myGLCD.clrScr(); // Очистка экрана
  myGLCD.setFont(SmallFont);
  myGLCD.print("Temperature", CENTER, 10); 
  myGLCD.printNumF(temp3 * 0.1, 2, 5, 36); 
  myGLCD.print(" - C ",  20, 36);
    
  myGLCD.update(); // Вывод вместимого буфера на дисплей
  delay (100); // Задержка 0,1 с

}

 

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

skyspirit пишет:

А если в рабочем коде есть delay как его заменить или в некоторых случаях эта функция нужна ? например в моем термометре:

Если программа работает, ничего не трогай! (первейшая заповедь программиста)

В Вашем случае что с delay, что без нее - разницы нет. Слишком простая программа.

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

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

PS. В Вашем случае для вывод приращения температуры:

int temp4;

dps.getTemperature(&temp4);

delay(1000);

dps.getTemperature(&temp3);

myGLCD.printNumF((temp3-temp4) * 0.1, 2, 5, 36);
25  

 

skyspirit
Offline
Зарегистрирован: 27.02.2015

Благодарю :)

skyspirit
Offline
Зарегистрирован: 27.02.2015

А что я не правильно записал

#include <LCD5110_Graph.h>
#include <Wire.h>
#include <BMP085.h>
BMP085 dps = BMP085();
int temp4;
long temp3 = 0;
LCD5110 myGLCD(2, 3, 4, 6, 5);
extern unsigned char SmallFont[]; 
void setup() {
   
  myGLCD.InitLCD(63);                    // контраст экрана
  myGLCD.setFont(SmallFont);
  Wire.begin();
   dps.init(MODE_ULTRA_HIGHRES, 0, true); 
}
void loop() 
{
  dps.getTemperature(&temp4);
delay(1000);
  dps.getTemperature(&temp3);
    
   myGLCD.clrScr(); // Очистка экрана
  myGLCD.setFont(SmallFont);
  myGLCD.print("Temperature", CENTER, 10); 
  myGLCD.printNumF((temp3-temp4) * 0.1, 2, 5, 36);
     
  myGLCD.update(); // Вывод вместимого буфера на дисплей
 

такая ошибка :note:   no known conversion for argument 1 from 'int*' to 'int32_t* {aka long int*}'

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

skyspirit
Offline
Зарегистрирован: 27.02.2015

Puhlyaviy похоже вы как и я только учитесь и не можете подсказать, ну ничего думаю знающие люди подскажут как решить мою задачу :)

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

skyspirit пишет:

Puhlyaviy похоже вы как и я только учитесь и не можете подсказать, ну ничего думаю знающие люди подскажут как решить мою задачу :)

а вы похоже просто халявщик! обычный такой халявщик, думающий что все ему что то должны, потому что он слишком ленив что бы напряч то место куда ест.

читайте

http://arduino.ru/Reference

skyspirit
Offline
Зарегистрирован: 27.02.2015

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

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

skyspirit пишет:

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

тоесть все таки желаете потратить чьето время на решение ваших проблем и отделаться спасибо? интересная жизненая позиция. 

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

но он пошел, где то разменял и принес оплатил, ибо он знает сколько времени занимает работа.

 но вам видимо это не знакомо..

продолжайте в общем. интересно, когда вы последний раз что то сделал для незнакомого вам человека за просто так?

skyspirit
Offline
Зарегистрирован: 27.02.2015

Puhlyaviy пишет:

продолжайте в общем. интересно, когда вы последний раз что то сделал для незнакомого вам человека за просто так?

если просят то почему бы и не помоч? Но это к данной теме не относится

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

skyspirit пишет:

если просят то почему бы и не помоч? 

отлично... мне нужно тут замостить  200 квадратных метров парковки около дома... там примерно около 8 кубометров глины нужно перевозить и камней.. поможешь?
 

у меня вот даже картинка есть для наглядности

skyspirit
Offline
Зарегистрирован: 27.02.2015

А в каком вы городе живете, если очень надо то мог бы и помоч

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

skyspirit пишет:

А в каком вы городе живете, если очень надо то мог бы и помоч

тоесть вот прям бы приехал и бегал целый день с тачкой? за спасибо?

skyspirit
Offline
Зарегистрирован: 27.02.2015

Puhlyaviy пишет:

skyspirit пишет:

А в каком вы городе живете, если очень надо то мог бы и помоч

тоесть вот прям бы приехал и бегал целый день с тачкой? за спасибо?

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

Та лдно хватит уже ;) а то мы тему програмирования переведем в философские размышления скоро )))

Буду учить потихоньку )

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

long temp4;

жду тебя на беготню с тачкой. я живу в деревне и добирать до меня далеко. но это же ведь не проблема для тебя?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

skyspirit пишет:

Та лдно хватит уже ;) а то мы тему програмирования переведем в философские размышления скоро )))

любая тема есть филосовские размышления! даже процесс прочистки канализации

skyspirit
Offline
Зарегистрирован: 27.02.2015

Большое спасибо Puhlyaviy :)))

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

skyspirit пишет:

А что я не правильно записал

#include <LCD5110_Graph.h>
#include <Wire.h>
#include <BMP085.h>
BMP085 dps = BMP085();
int temp4;
long temp3 = 0;
LCD5110 myGLCD(2, 3, 4, 6, 5);
extern unsigned char SmallFont[]; 
void setup() {
   
  myGLCD.InitLCD(63);                    // контраст экрана
  myGLCD.setFont(SmallFont);
  Wire.begin();
   dps.init(MODE_ULTRA_HIGHRES, 0, true); 
}
void loop() 
{
  dps.getTemperature(&temp4);
delay(1000);
  dps.getTemperature(&temp3);
    
   myGLCD.clrScr(); // Очистка экрана
  myGLCD.setFont(SmallFont);
  myGLCD.print("Temperature", CENTER, 10); 
  myGLCD.printNumF((temp3-temp4) * 0.1, 2, 5, 36);
     
  myGLCD.update(); // Вывод вместимого буфера на дисплей
 

такая ошибка :note:   no known conversion for argument 1 from 'int*' to 'int32_t* {aka long int*}'

Я вообще-то советовал Вам завести локальную переменную temp4. Вы решили, что лучше ей быть глобальной. Но не в этом суть. Поразительно другое: я писал на скорую руку и не обратил внимание, что неправильно описал тип переменной. Вы же разместили новую переменную рядом со старой, неужели Вы не заметили, что они оказались разных типов, тогда как по логике применения должны быть одного?

Замените тип temp4 на тот же, что и у temp3, т.е. на long.

skyspirit
Offline
Зарегистрирован: 27.02.2015

Спасибо все заработало;) теперь разбераюсь как другие данные измерять чтоб динамично выводились, так как столкнулся с тем о чем писали выше что у нас в проге delay(1000); тормозит вывод данных на 1секунду, а другие данные  нужно измерять как минимум чтоб делай был 100. То теперь milis() пытаюсь понять, эсли че подскажите где копать по данному вопросу чтоб доходчиво обяснялось:)

 

Radjah
Offline
Зарегистрирован: 06.08.2014

Сначала всё прочитать, потом всё выводить.

skyspirit
Offline
Зарегистрирован: 27.02.2015

А с помощю milis можно решить такую задачу: если давление на протяжении определенного времени (10минут) меняется на 10 гектопскалей то ...

if (Pressure / 100    ...протяжонность времени...  стает болше или меньше ..  данного давления  )

{виполнение нужного действия}

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

skyspirit пишет:

А с помощю milis можно решить такую задачу: если давление на протяжении определенного времени (10минут) меняется на 10 гектопскалей то ...

if (Pressure / 100    ...протяжонность времени...  стает болше или меньше ..  данного давления  )

{виполнение нужного действия}

а вы можете эту задачу решить при помощи наручных часов и карандашика решить?

миллис это своего рода ваши наручние часы... они тикают тикают

skyspirit
Offline
Зарегистрирован: 27.02.2015

можно,  но как в миллис задавать нужное нам количество времени? в delay(1000) понятно что 1000 это 1 секунда а в милис еще не разобрался

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

skyspirit пишет:

можно,  но как в миллис задавать нужное нам количество времени? в delay(1000) понятно что 1000 это 1 секунда а в милис еще не разобрался

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

skyspirit
Offline
Зарегистрирован: 27.02.2015

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

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

skyspirit пишет:

А с помощю milis можно решить такую задачу: если давление на протяжении определенного времени (10минут) меняется на 10 гектопскалей то ...

if (Pressure / 100    ...протяжонность времени...  стает болше или меньше ..  данного давления  )

{виполнение нужного действия}

сделай на миллис() опрос датчика каждые 10 мин
две переменные - OldPress и CurPress
и сравнивай их каждые 10 мин на предмет изменения на 10 HPa

миллисс() - заменит наручные часы , две переменных - лист бумаги и карандаш :)

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

skyspirit пишет:

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

угу часы идут... но у нас есть листик и карандашик.. мы можем записывать там время а потом смотреть на текущее время и сверять.. а они тикают и тикают...

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

SU-27-16 пишет:

сделай на миллис() опрос датчика каждые 10 мин
две переменные - OldPress и CurPress
и сравнивай их каждые 10 мин на предмет изменения на 10 HPa

миллисс() - заменит наручные часы , две переменных - лист бумаги и карандаш :)

ты вообще не впиливаешь насколько он далек что бы понять твои обьяснения..

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

миллисс() - это часы
варим яйца , запоминаем время по часам - 23:51
занимаемся своими делами и каждую минуту ( например ) смотрим на часы и сравниваем ТекВремя-ЗапомВремя>7 мин ?

нет ? на строку ваше
дат ? яйца сварились :)

skyspirit
Offline
Зарегистрирован: 27.02.2015

:)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

skyspirit пишет:

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

аха , но ничто не мешает нам запоминать время по часам которые всё время идут !

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Puhlyaviy пишет:

SU-27-16 пишет:

сделай на миллис() опрос датчика каждые 10 мин
две переменные - OldPress и CurPress
и сравнивай их каждые 10 мин на предмет изменения на 10 HPa

миллисс() - заменит наручные часы , две переменных - лист бумаги и карандаш :)

ты вообще не впиливаешь насколько он далек что бы понять твои обьяснения..

мне кажется что в посте #47 улыбка вовсе не дауновская :)

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

SU-27-16 пишет:

мне кажется что в посте #47 улыбка вовсе не дауновская :)

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