Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Алгоритм предсказания погоды.


Алгоритм предсказания погоды.

Сообщений 1 страница 12 из 12

1

Может кто сталкивался с алгоритмами предсказания погоды по изменению давления и влажности? Есть алгоритм Zambretti, но реализация только на php, а я в нём ни бум-бум. Что скажете.

0

2

Tankor написал(а):

Что скажете


портировать php на basic

0

3

Здесь всё разжевано: http://monatkodenis.blogspot.com/2016/0 … tti-3.html
Как реализуете, поделитесь результатом.  :D

0

4

sasha_1973 написал(а):

портировать php на basic

Если бы понимал язык PHP, не спрашивал бы. Был расчёт восхода и захода солнца и луны на qbasic, это портировал, а к этому не знаю с какой стороны подступиться.

0

5

radan написал(а):

Здесь всё разжевано: http://monatkodenis.blogspot.com/2016/0 … tti-3.html
Как реализуете, поделитесь результатом.

Это я видел, не помогло.... :D Будет результат, поделюсь.

Отредактировано Tankor (2017-06-15 08:23:53)

0

6

radan написал(а):

Zambretti

И

radan написал(а):

Здесь всё разжевано: http://monatkodenis.blogspot.com/2016/0 … tti-3.html

Это одно и тоже. :)

0

7

RDW написал(а):

Это одно и тоже.

Знаю. Но не разжёвано, по крайней мере, для меня (новичок). Есть там параметр ветер, которого у меня нет. Есть только давление, влажность, температура (BME280).

0

8

Без ветра скорее всего не будет заявленной точности 90%.
Можно попробовать в алгоритм анализа ветер передавать как 0.

0

9

Если без ветра, то проще поглядеть на обычный барометр, который на стенке с табличкой висит и повторить конструкцию.  :idea:
А так...
https://lib.rus.ec/i/66/616866/i_003.png

0

10

я пробовал делать.
ничего не предсказывает с точностью даже в половину. Иначе не надо были бы супер-компьютеры и спец.алгоритмы
банальный цифровой барометр, датчик влажности и температуры, три св.диода: давление низко = вероятен дождь, влажность ниже 30%, "нормальное состояние"

+1

11

Ну можно ещё отслеживать скорость динамики, что может влиять реально на предсказание.

0

12

Да, похоже без ветра ничего путного не будет. Тестовый вариант.

Zambretti

'========================= Основные установки ==================================
$regfile = "m644Pdef.dat"                                   'указать нужный
$crystal = 8000000                                          'указать нужный
$lib "i2c_twi.lbx"                                          'Библиотека аппаратного I2C.
$lib "Mcsbyteint.lbx"                                       'Библиотека оптимизации кода
$lib "Mcsbyte.lbx"                                          'Библиотека оптимизации кода
$hwstack = 200
$swstack = 200
$framesize = 200
$version 3 , 0 , 18
$baud = 2400
'*******************************************************************************
'Настройка терминала
Config Portd.1 = Output                                     'Terminal TX
Config Portd.0 = Input                                      'Terminal RX
'***************************************************************************
'*********  конфигурация SCL и SDA, аппаратные выводы МК!! *********************

'**************************BME280***********************************************
Dim Temperature As Single , Humidity As Single , Pressure As Single , Height As Single , Tr As Single
Dim Temperature_int As Integer , Humidity_int As Integer , Pressure_int As Integer

'************************GLOBAL VAR*********************************************
Dim Dim_global(288) As Byte
Dim Dim_arhiv_press(36) As Integer At Dim_global(1) Overlay
Dim Dim_arhiv_temp(36) As Integer At Dim_global(1) + 72 Overlay
Dim Dim_arhiv_humidity(36) As Integer At Dim_global(1) + 144 Overlay
Dim Sortirovka(36) As Integer At Dim_global(1) + 216 Overlay

Dim Text As String * 21
Dim Text1 As String * 16
Dim Text2 As String * 16
Dim Temp_byte As Byte
Dim Temp_byte1 As Byte
Dim Temp_single As Single
Dim Temp_single1 As Single
Dim Temp_single2 As Single
Dim Temp_single3 As Single
Dim Temp_int As Integer
Dim Temp_int1 As Integer
Dim Temp_int2 As Integer
Dim Temp_long As Long
Dim Temp1_long As Long
Dim Temp_word As Word
Dim Temp_d As Double
Dim Temp1_d As Double
Dim Month As Byte : Month = 6

'local dim for test Zambretti
Dim Trend As Byte
Dim Z As Single
Dim Trend_text As String * 16
Dim Weather_text As String * 45
Dim Season As Byte
'**********************************************************************

Pressure_int = 742 : Dim_arhiv_press(1) = 0 : Dim_arhiv_press(2) = 0

Zambretti:

   If Pressure_int > Dim_arhiv_press(1) Then
      Trend = 1
      Trend_text = "Рост давления"
   Elseif Pressure_int < Dim_arhiv_press(1) Then
      Trend = 2
      Trend_text = "Падение давления"
   Else
      Trend = 0
      Trend_text = "Не меняется"
   End If

   Temp_single = Pressure_int * 133.322
   Temp_single = Temp_single / 100

   If Trend = 1 Then                                        'По тренду
      Z = Temp_single * 2
      Z = Z / 12.9
      Z = 179 - Z
   End If

   If Trend = 2 Then
      Z = Temp_single / 8.1
      Z = 130 - Z
   End If

   If Trend = 0 Then
      Z = Temp_single * 5
      Z = Z / 37.6
      Z = 179 - Z
   End If

   If Month >= 5 Or Month <= 9 Then
      Season = 1                                            'лето
   Else
      Season = 2                                            'Зима
   End If
     ' В нижнекамске роза ветров преимущественно югозападная, поэтому от z отнимаем 1.5 (от балды, потом скорректируем)
   Z = Z + 1.5
    'Повышение давления, как правило, говорит об улучшении прогноза, поэтому Летом мы отнимаем 2, а Зимой отнимаем 1.
    'Понижение Давления , Напротив , Говорит Об Ухудшении Погоды , Поэтому Летом Мы Прибавляем 2 , А Зимой Мы Прибавляем 1.
   If Trend = 1 Then
      If Season = 1 Then Z = Z -2
      If Season = 2 Then Z = Z -1
   End If
   If Trend = 2 Then
      If Season = 1 Then Z = Z + 2
      If Season = 2 Then Z = Z + 1
   End If

   Z = Int(z)

   If Season = 1 Then
      Select Case Z
         Case 0
         Case 1 : Weather_text = "Установится хорошая погода"
         Case 2 : Weather_text = "Хорошая погода"
         Case 3 : Weather_text = "Хорошая, возможна перемена"
         Case 4 : Weather_text = "Довольно хорошая, позже возможен дождь"
         Case 5 : Weather_text = "Дождь и возможно ухудшение"
         Case 6 : Weather_text = "Нестабильно, к вечеру дождь"
         Case 7 : Weather_text = "Временами ожидаются осадки"
         Case 8 : Weather_text = "Временами осадки, неустойчиво"
         Case 9 : Weather_text = "Дождь, очень неустойчиво"
         Case 10 : Weather_text = "Установится хорошая погода"
         Case 11 : Weather_text = "Хорошая погода"
         Case 12 : Weather_text = "Хорошая, возможен дождь"
         Case 13 : Weather_text = "Очень хорошая погода с вероятностью осадков"
         Case 14 : Weather_text = "Дожди с краткими просветлениями"
         Case 15 : Weather_text = "Переменно, возможен дождь"
         Case 16 : Weather_text = "Нестабильно, возможен дождь"
         Case 17 : Weather_text = "Дождь с частыми интервалами"
         Case 18 : Weather_text = "Дождь, очень неустойчиво"
         Case 19 : Weather_text = "Ветер с дождем"
         Case 20 : Weather_text = "Установится хорошая погода"
         Case 21 : Weather_text = "Хорошая погода"
         Case 22 : Weather_text = "Ожидается улучшение"
         Case 23 : Weather_text = "Довольно хорошая погода и улучшится"
         Case 24 : Weather_text = "Довольно хорошая, утром возможны осадки"
         Case 25 : Weather_text = "Утром дождь, ожидается улучшение"
         Case 26 : Weather_text = "Переменно, ожидается улучшение"
         Case 27 : Weather_text = "Переменчиво, возможно улучшение погоды"
         Case 28 : Weather_text = "Нестабильно, вероятно улучшение"
         Case 29 : Weather_text = "Пасмурно с просветлениями"
         Case 30 : Weather_text = "Облачно, погода неустойчива"
         Case 31 : Weather_text = "Ветер, возможно улучшение"
         Case 32 : Weather_text = "Ветер с дождем"
      End Select
   End If

   If Season = 2 Then
      Select Case Z
         Case 0
         Case 1 : Weather_text = "Установится хорошая погода"
         Case 2 : Weather_text = "Хорошая погода"
         Case 3 : Weather_text = "Хорошая, возможна перемена"
         Case 4 : Weather_text = "Довольно хорошая, позже возможен снег"
         Case 5 : Weather_text = "Снег и возможно ухудшение"
         Case 6 : Weather_text = "Нестабильно, к вечеру снег"
         Case 7 : Weather_text = "Временами ожидаются осадки"
         Case 8 : Weather_text = "Временами осадки, неустойчиво"
         Case 9 : Weather_text = "Снег, очень неустойчиво"
         Case 10 : Weather_text = "Установится хорошая погода"
         Case 11 : Weather_text = "Хорошая погода"
         Case 12 : Weather_text = "Хорошая, возможен снег"
         Case 13 : Weather_text = "Очень хорошая погода с вероятностью осадков"
         Case 14 : Weather_text = "Снег с краткими просветлениями"
         Case 15 : Weather_text = "Переменно, возможен снег"
         Case 16 : Weather_text = "Нестабильно, возможен снег"
         Case 17 : Weather_text = "Снег с частыми интервалами"
         Case 18 : Weather_text = "Снег, очень неустойчиво"
         Case 19 : Weather_text = "Ветер со снегом"
         Case 20 : Weather_text = "Установится хорошая погода"
         Case 21 : Weather_text = "Хорошая погода"
         Case 22 : Weather_text = "Ожидается улучшение"
         Case 23 : Weather_text = "Довольно хорошая погода и улучшится"
         Case 24 : Weather_text = "Довольно хорошая, утром возможны осадки"
         Case 25 : Weather_text = "Утром снег, ожидается улучшение"
         Case 26 : Weather_text = "Переменно, ожидается улучшение"
         Case 27 : Weather_text = "Переменчиво, возможно улучшение погоды"
         Case 28 : Weather_text = "Нестабильно, вероятно улучшение"
         Case 29 : Weather_text = "Пасмурно с просветлениями"
         Case 30 : Weather_text = "Облачно, погода неустойчива"
         Case 31 : Weather_text = "Ветер, возможно улучшение"
         Case 32 : Weather_text = "Ветер со снегом"
      End Select
   End If

   Print Trend_text
   Print Z
   Print Season
   Print Weather_text
   End

+4


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Алгоритм предсказания погоды.