Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 06.09.2012, 00:13  
alexust
Частый гость
 
Регистрация: 14.08.2006
Сообщений: 27
Сказал спасибо: 3
Сказали Спасибо 27 раз(а) в 7 сообщении(ях)
alexust на пути к лучшему
Счастье Re: Метеостанция с web-сервером и дата-логгером на ATMega128

Приветствую, коллеги.

По просьбе уважаемого читателя I@COM - "вы не могли бы растолковать на пальцах и примерах, как рисуются и выводятся графики и что для этого надо (голова закипает)" - излагаю...

На самом деле, я тоже долго ее (голову) "кипятил", прежде чем...

Итак.
1. Измеренные (полные) значения в формате "000.0" или "000" сохраняются в файлах на флешке.
2. Исторические значения - массивы за последние 25 часов и временная шкала - хранятся в обновляемом на флешке файле "history.dat" (обновляется раз в час) в усеченном формате - массивы типа unsigned char, поскольку:
- на графиках все равно этих десятых долей не видно будет (1 пиксел - величина дискретная ),
- на одном графике изображать в одном масштабе давление на семь с лишним сотен и температуру на минус несколько десятков - никаких экранов не хватит
- да и память, вообще-то, экономить надо.

А посему (кстати - все есть в комментариях как раз при объявлении этих массивов в главном модуле программы):
unsigned char bars_P[25] - массив разницы давлений между 700 мм.рт.ст. и текущими ежечасными давлениями - величина не более 100;
unsigned char bars_T0[25] и unsigned char bars_T1[25] - температуры (внутр. и наружная), со смещением на +100 градусов, чтобы всегда была положительная величина, даже при -90 градусах будет +10;
unsigned char bars_H[25] - ну и влажность - целая 0...100%
unsigned char clock_scale[7] - а это шкала времени.

И в этом случае получается, что все эти усеченно-смещенные величины "укладываются на один и тот же график, имеющий по вертикали всего 80 единиц - температуру -40...+40 градусов (у нас еще не было ниже и выше, хотя что будет в будущем... кто знает, кто знает), давление 710...790мм.рт.ст. (вполне достаточный диапазон, даже в самолетах ниже 710 не должно опускаться, иначе - некомфортно будет пассажирам) и влажность 20...100%

Естественно, имея по вертикали на дисплее 240 пикселов глупо было бы их не использовать, поэтому при отображении координаты всех точек (величины значений из массивов) умножаются на 2. Таким образом, графики занимают 160 пикселов по вертикали.
Раз в час при обновлении значений, поле, охватываемое сеткой графика, а также строка временнОй шкалы внизу стираются (заливаются черным цветом), заново рисуется сетка.
После этого все значения в массивах параметров сдвигаются влево на 1 позицию, в последние элементы с индексом [24] записываются новые, только что измеренные значения.
Также производится перерасчет - прибавляется "1" к значениям шкалы времени, естественно, с проверкой перехода через 24-часовой рубеж.
И вуаля - отображаются смещенные графики и новая шкала времени.

Маленькая хитрость для контроля - если между текущим временем (в значении часов) и последним членом массива clock_scale[6] разница более 1 часа - значит в файлы ничего не писалось - скорее всего, не было питания. Поэтому автоматически делается сдвиг всех исторических массивов на количество пропущенных часов, при этом в массивы параметров записываются нижние предельные величины, отображаемые на графике.
Поэтому на графиках будут видны провалы, соответствующие отсутствующим данным.

Эту же процедуру, похоже, надо сделать и для файлов полных значений - писать туда либо нули, либо минимальные значения измеряемых параметров.

Дополнительно: сейчас отображение часов и календаря (белый цвет) смещено вверх, ближе к графику, примерно на 14 пикселов и весь низ, до названия текущего дня недели занимают две горизонтальные шкалы скорости ветра: текущая скорость, измеряемая 1 раз в секунду, и усредненная за 64 секунды - ведь у программиста и километр = 1024 метра, и минута = 64 секунды
Сетка шкалы - пока примерная, логарифмическая 0,5...50 м/с. Не калибровал - так, на глаз.
До записи в файл, как и до калибровки, тоже еще руки не дошли, но планирую усреднять еще за 64 минуты = 1 час, и записывать в файл эту среднюю величину, и максимум / минимум секундных замеров.

Вот, примерно, "в таком плане, в таком разрезе, в таком масштабе", как говорил великий Аркадий Райкин.
Реклама:
__________________
________________________________________
Примите заверения в совершеннейшем к Вам почтении....
alexust вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дата-кабель на Samsung C200 crocker Поиск схем. Делимся схемами 1 12.09.2011 23:28
Домашняя метеостанция с календарем,будильником и часами Vladimirk68 Proteus 23 23.03.2011 17:55
Дата кабель для LG T5100 Evgenggg Автоматика и аппаратура связи 0 09.07.2008 02:33
Вопрос по дата-кабелю DKU-5 gegelcopy Информация по радиокомпонентам 0 25.12.2007 20:30
Дата кабель для нокия 3120 Tisho88 Автоматика и аппаратура связи 0 24.02.2006 20:56


Часовой пояс GMT +4, время: 23:03.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot