I.E.S. Francisco Romero Vargas
    Jerez de la Frontera (Cádiz)           Tlf.: 671 530 256 /7 /8  -  956 70 99 17                    
 
Desde 2007
   
Visitas:
Estadísticas
Zona restringida:
Código Profesor:
Clave SGD:

 

 

Fórmulas meteorológicas y programación con AutoIt

Fórmulas meteorológicas y programación con AutoIt

Información relacionada:
0.- Los datos de nuestra estación meteorológica.
1.- Estación meteorológica. Cuaderno de bitácora .

2.- Instalación del servidor web Apache
3.- Vinculación de datos de la estación meteorológica a una página web. Cumulus.
4.- Creación de un temporizador para subir los archivos automáticamente mediante FTP.
5.- Realización de un programa personalizado basado en el Cumulus. Visual Basic.
6.- Realización de un programa personalizado con el AutoIt.
7.- Cambiar la apariencia de Cumulus, EasyWeather,... con Reshacker. Traducción al español .
8.-
Control de un dispositivo conectado al Puerto paralelo del ordenador mediante los datos de la estación meteorológica
8B.- Controlar un dispositivo externo mediante la estación meteorológica y Arduino. (NUEVO)
9.- La estación en UBUNTU - LINUX.
10.-
Construcción de un reloj analemático
11.- Nos damos de alta en AWEKAS, red internacional de estaciones meteorológicas.
12.- Nos damos de alta en Weather Underground, red internacional de estaciones meteorológicas.
13.- Nos damos de alta en Personal Weather Stations, red internacional de estaciones meteorológicas.
14.- Utilización del archivo realtime.txt y PHP para crear una página web personalizada.
15.- Configuración de la Cámara web

16.- ¡¡¡Se me apaga el ordenadorrrr!!!
17.- Formulario y programación en AutoIt
18.- Capturas automáticas de mapas meteorológicos de una página web

_________________________________________________

Formulario y programación en Autoit.

Esta página tiene dos objetivos: hacer una recopilación de una serie de fórmulas que nos pueden ayudar a interpretar los datos de nuestra estación meteorológica y dar unas nociones de programación básica mediante Autoit.

Nuestra estación meteorológica tiene sensores de temperatura, humedad y presión (además de un anemómetro y un pluviómetro). Con los valores que aportan estos sensores, nuestra estación base o el software utilizado obtiene otros datos tales como el punto de rocío (dew point), la sensación térmica (wind chill), el índice de calor, índice de humedad... para ello utiliza expresiones matemáticas. Algunas de ellas la hemos encontrado en Internet, aunque a veces encontramos distintas expresiones para un mismo dato según el autor o el organismo que la expone.

Por otra parte queremos mostrar de manera sencilla la forma de realizar programas elementales utilizando las expresiones matemáticas que vamos a utilizar en nuestra estación de meteorología. Hay dos sencillos lenguajes de programacion el Visual Basic (especialmente el Visual Basic 6.0) y el Autoit (gratuito). Tal vez habría sido más sencillo con el Visual Basic, sobre todo la parte de poner los elementos del formulario: botones, casilleros y demás controles, pero hemos elegido el Autoit. No pregunten porqué.

Además del AutoIt v3 vamos a utilizar otro programa llamado Koda para facilitar la colocación de botones, casilleros, etiquetas,... en nuestro programa.

Recursos utilizados:
- MathCast089, para escribir las expresiones matemáticas.
- AutoIt v3, lenguaje de programación similiar a Visual Basic 6.0
- Koda, para establecer los controles del AutoIt.
- Wikipedia en español y en inglés, como fuente de información.
- http://www.unit-conversion.info/metric.html

_________________________________________________

Comenzamos

- Bajamos Autoit V3 (Página de bajadas: AutoIt Full Installation ). Lo instalamos en "C:\Archivos de programa\AutoIt3"

- Botón derecho en un espacio vacío de la carpeta C:\Archivos de programa\AutoIt3 / Nuevo / AutoIt v3 Script

- Le ponemos un nombre por ejemplo centigra.au3 (Siempre debe llevar la extensión .au3)

- Para entrar en el código fuente: Botón derecho / Edit Script

- Compile Script es para convertirlo en ejecutable, para hacerlo .exe. Cuando nuestro programa esté terminado y funcionando correctamente pulsaremos sobre Complile Script para compilarlo.

_________________________________________________

- De Centígrados a Fahrenheit.

fahrenheit.au3 fahrenheit.exe

; Las líneas que comienzan por punto y coma son solo comentarios
; Las variables comienzan con el caracter dolar $
; El separador decimal es el punto


$C = InputBox("Conversión a Fahrenheit", "Introduce grados Centígrados")
$F= 1.8 * $C + 32

; El ampersand & lo utilizamos para unir variables y cadenas de textos.
$texto= $C & " grados Centígrados son " & $F & " grados Fahrenheit."
Msgbox(0,"Conversión a Fahrenheit.",$texto)

_________________________________________________

- De Fahrenheit a Centígrados.

 

centigrados.au3 centigrados.exe

; Las líneas que comienzan por punto y coma son solo comentarios
; Las variables comienzan con el caracter dolar $
; El separador decimal es el punto

$contesta="S"
; Mientras $contesta es "S" hace el bucle While - Wend
While $contesta="S"

$F = InputBox("Conversión a Centígrados", "Introduce grados Fahrenheir")
$C= ($F - 32) / 1.8

; El ampersand & lo utilizamos para unir variables y cadenas de textos.
$texto= $F & " grados Fahrenheit son " & $C & " grados Centígrados."
Msgbox(0,"Conversión a Centígrados.",$texto)

$contesta = InputBox("Nuevo cálculo", "¿Quieres hacer otro cálculo? (S/N)")

Wend

_________________________________________________

- De mph a km/h.

- De km/h a mph.

mph.au3 mph.exe

; @CRLF es para cambiar de línea
; $texto = $texto & añade al texto anterior

$texto = "Elige opción" & @CRLF
$texto= $texto & "Pulsa 1 para pasar de mph a km/h" & @CRLF
$texto= $texto & "Pulsa 2 para pasar de km/h a mph"
$opcion = InputBox("Millas por hora y kilómetros por hora", $texto)

If $opcion = 1 Then

$mph = InputBox("Conversión a km/h", "Introduce mph")
$kmh= $mph * 1.6093

$texto= $mph & " mph son " & $kmh & " km/h."
Msgbox(0,"Conversión de mph a km/h.",$texto)

EndIf

If $opcion = 2 Then

$kmh = InputBox("Conversión a mph", "Introduce km/h")
$mph= $kmh / 1.6093

$texto= $kmh & " km/h son " & $mph & " mph"
Msgbox(0,"Conversión de km/h a mph.",$texto)

EndIf

_________________________________________________

- De m/s a km/h.

- De km/h a m/s.

ms.au3 ms.exe

; @CRLF es para cambiar de línea
; $texto = $texto & añade al texto anterior
; Las frases van entre comillas
; No utilizar el / en el nombre de la variable

$contesta="S"
; Mientras $contesta es "S" hace el bucle While - Wend
While $contesta="S"

$texto = "Elige opción" & @CRLF
$texto= $texto & "Pulsa 1 para pasar de m/s a km/h" & @CRLF
$texto= $texto & "Pulsa 2 para pasar de km/h a m/s"
$opcion = InputBox("Metros por segundo y kilómetros por hora", $texto)

If $opcion = 1 Then

$ms = InputBox("Conversión a km/h", "Introduce m/s")
$kmh= $ms * 3.6

$texto= $ms & " m/s son " & $kmh & " km/h."
Msgbox(0,"Conversión de ms a km/h.",$texto)

EndIf

If $opcion = 2 Then

$kmh = InputBox("Conversión a m/s", "Introduce km/h")
$ms= $kmh / 3.6

$texto= $kmh & " km/h son " & $ms & " m/s"
Msgbox(0,"Conversión de km/h a m/s.",$texto)

EndIf

$contesta = InputBox("Nuevo cálculo", "¿Quieres hacer otro cálculo? (S/N)")

Wend


_________________________________________________

Koda

Para facilitar la inserción de controles tales como botones(Button), casilleros(Input), etiquetas (Label),... en nuestro programa, vamos a utilizar una utilidad llamada Koda.

Bajar Koda (1,5 MB)

Web de Koda

_________________________________________________

- De mm a in.


Copiamos el código que ha generado en Koda en nuestro AutoIt.

Eliminamos las líneas indicadas.

pulgadas.au3 pulgadas.exe

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 362, 216, 220, 123)
$Label1 = GUICtrlCreateLabel("Introduce los milímetros", 16, 24, 147, 17)
$Input1 = GUICtrlCreateInput("Input1", 200, 24, 113, 21)
$Button1 = GUICtrlCreateButton("Button1", 104, 56, 99, 33, 0)
$Label2 = GUICtrlCreateLabel("El resultado es", 16, 112, 97, 17)
$Label3 = GUICtrlCreateLabel("Label3", 160, 112, 140, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$msg = GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop


; Cuando presiona el botón realiza el cálculo.
Case $msg = $Button1
$milimetros = GUICtrlRead($Input1)
$pulgadas = $milimetros / 25.4
GUICtrlSetData($Label3,$pulgadas)
EndSelect
Wend
Exit

_________________________________________________

- De in a mm.

Font: para cambiar el tipo de letra.
Caption: es la frase que verá.
Estilos (pestaña de abajo): ES_Right, es para situarlo a la derecha

 

milimetros.au3 milimetros.exe

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Paso a milímetros", 295, 166, 220, 123)
$Label1 = GUICtrlCreateLabel("Introduce las pulgadas", 16, 16, 195, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Input1 = GUICtrlCreateInput("0", 216, 8, 49, 28, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Button1 = GUICtrlCreateButton("Pulsa para calcular", 88, 48, 123, 33, 0)
$Label2 = GUICtrlCreateLabel("El resultado es", 8, 112, 124, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel(" ", 144, 112, 127, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$msg = GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop


; Cuando presiona el botón realiza el cálculo.
Case $msg = $Button1
$pulgadas = GUICtrlRead($Input1)
$milimetros = $pulgadas * 25.4
GUICtrlSetData($Label3,$milimetros)
EndSelect
Wend
Exit

_________________________________________________

- Punto de rocío.

punto_de_rocio.au3 punto_de_rocio.exe

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Calculo del Punto de Rocío", 270, 218, 220, 123)
$Label1 = GUICtrlCreateLabel("Humedad", 24, 16, 81, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Input1 = GUICtrlCreateInput("0", 152, 16, 49, 28, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Button1 = GUICtrlCreateButton("Calcula Punto de Rocío", 64, 96, 147, 33, 0)
$Label2 = GUICtrlCreateLabel("Temperatura", 24, 56, 106, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("Punto de Rocío", 16, 144, 135, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Input2 = GUICtrlCreateInput("0", 152, 56, 49, 28, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label4 = GUICtrlCreateLabel("Label4", 160, 144, 58, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$msg = GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop


; Cuando presiona el botón realiza el cálculo.
Case $msg = $Button1
$H = GUICtrlRead($Input1)
$T = GUICtrlRead($Input2)
$Pr = ($H/100)^(1/8) * (112 + 0.9 * $T) + (0.1 * $T) - 112
GUICtrlSetData($Label4,$Pr)
EndSelect
Wend
Exit


_________________________________________________

- Humedad.

humedad.au3 humedad.exe


#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Calculo de la Humedad", 249, 245, 220, 123)
$Label1 = GUICtrlCreateLabel("Temperatura", 16, 16, 106, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Input1 = GUICtrlCreateInput("0", 152, 16, 49, 28, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Button1 = GUICtrlCreateButton("Calcula la Humedad", 48, 96, 147, 33, 0)
$Label2 = GUICtrlCreateLabel("Punto de rocío", 16, 56, 120, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("Humedad", 16, 144, 81, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Input2 = GUICtrlCreateInput("0", 152, 56, 49, 28, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label4 = GUICtrlCreateLabel("Label4", 160, 144, 58, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Button2 = GUICtrlCreateButton("Borrar", 24, 192, 73, 25, 0)
$Button3 = GUICtrlCreateButton("Salir", 136, 192, 73, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$msg = GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop


; Cuando presiona este el botón realiza el cálculo.
Case $msg = $Button1
$T = GUICtrlRead($Input1)
$Pr = GUICtrlRead($Input2)
$H = (($Pr - 0.1 * $T + 112) / (112 + 0.9 * $T)) ^ 8 * 100
GUICtrlSetData($Label4,$Pr)


; Cuando presiona este el botón borra.
Case $msg = $Button2
GUICtrlSetData($Input1,0)
GUICtrlSetData($Input2,0)
GUICtrlSetData($Label4," ")


; Cuando presiona este el botón sale.
Case $msg = $Button3
Exit
EndSelect
WEnd
Exit


_________________________________________________

- Altura de la base de las nubes.

altura_de_las_nubes.au3 altura_de_las_nubes.exe

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Altura de la base de las nubes", 496, 152, 192, 122)
$Label1 = GUICtrlCreateLabel("Temperatura (ºC)", 24, 24, 142, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Input1 = GUICtrlCreateInput("", 176, 16, 49, 28, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Punto de Rocío (ºC)", 240, 24, 163, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Input2 = GUICtrlCreateInput("", 416, 16, 49, 28, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Button1 = GUICtrlCreateButton("Pulsa para calcular", 168, 56, 169, 33, 0)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("Altura de la base de las nubes:", 16, 104, 252, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label4 = GUICtrlCreateLabel("", 288, 104, 164, 20)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

 

While 1
$msg = GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
; Cuando pulsa este el botón realiza el cálculo.
Case $msg = $Button1
$T = GUICtrlRead($Input1)
$Pr = GUICtrlRead($Input2)
$altura_de_las_nubes = (($T - $Pr) / 8.02) * 1000

; Dos decimales
$altura_de_las_nubes = Round($altura_de_las_nubes, 2)
GUICtrlSetData($Label4,$altura_de_las_nubes & " m")

EndSelect
WEnd
Exit

_________________________________________________

- Sensación térmica.

 

sensacion_termica.au3 sensacion_termica.exe

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Sensación térmica", 330, 239, 192, 124)
$Label1 = GUICtrlCreateLabel("Temperatura", 8, 40, 106, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Input1 = GUICtrlCreateInput("Input1", 144, 32, 65, 28, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Velocidad del viento en km/h", 8, 80, 233, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Input2 = GUICtrlCreateInput("Input2", 248, 72, 65, 28, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Button1 = GUICtrlCreateButton("Pulsa para calcular", 88, 120, 129, 33, 0)
$Label3 = GUICtrlCreateLabel("Sensación térmica", 8, 192, 152, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label4 = GUICtrlCreateLabel("Label4", 168, 192, 90, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$msg = GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
; Cuando presiona este el botón realiza el cálculo.
Case $msg = $Button1
$T = GUICtrlRead($Input1)
$V = GUICtrlRead($Input2)
$ST = 13.12 + 0.6215 * $T - 11.37 * $V ^ 0.16 + 0.3965 * $T * $V ^ 0.16
; Dos decimales
$ST = Round($ST, 2)
GUICtrlSetData($Label4,$ST)

EndSelect
WEnd
Exit

_________________________________________________

- Índice de calor .

 

indice_de_calor.au3 indice_de_calor.exe

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Índice de calor", 341, 425, 192, 124)
$Group1 = GUICtrlCreateGroup("Introducción de datos", 24, 8, 289, 105)
$Label1 = GUICtrlCreateLabel("Temperatura", 48, 40, 106, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Humedad", 48, 72, 81, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Input1 = GUICtrlCreateInput("Input1", 184, 40, 65, 28, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Input2 = GUICtrlCreateInput("Input2", 184, 72, 65, 28, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label6 = GUICtrlCreateLabel("ºC", 264, 40, 23, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label7 = GUICtrlCreateLabel("%", 264, 72, 19, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("Índice de calor", 96, 128, 137, 33, 0)
$Group2 = GUICtrlCreateGroup("Saliida de datos", 24, 184, 289, 217)
$Label3 = GUICtrlCreateLabel("Índice de calor", 40, 216, 122, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label4 = GUICtrlCreateLabel("Label4", 184, 216, 58, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label5 = GUICtrlCreateLabel("Label5", 40, 264, 258, 128)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label8 = GUICtrlCreateLabel("ºC", 256, 216, 23, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

 

While 1
$msg = GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
; Cuando presiona este el botón realiza el cálculo.
Case $msg = $Button1
$C = GUICtrlRead($Input1)
; Pasamos la Temperatura a Fahrenheit
$T = 1.8 * $C + 32
; Los coeficientes
$H = GUICtrlRead($Input2)
$c1 = -42.379
$c2 = 2.04901523
$c3 = 10.14333127
$c4 = -0.22475541
$c5 = -6.83783 * 10 ^ -3
$c6 = -5.481717 * 10 ^ -2
$c7 = 1.22874 * 10 ^ -3
$c8 = 8.5282 * 10 ^ -4
$c9 = -1.99 * 10 ^ -6
; Fórmula
$HF = $c1 + $c2 * $T + $c3 * $H + $c4 * $T * $H + $c5 * $T ^ 2 + $c6 * $H ^ 2 + $c7 * $T ^ 2 * $H + $c8 * $T * $H ^ 2 + $c9 * $T ^ 2 * $H ^ 2
; Pasamos $HF a Centrígrados
$HC = ($HF - 32) / 1.8
$HC = Int($HC * 10) / 10
GUICtrlSetData($Label4,$HC)
; Efecto del índice de calor
$texto1 = "Precaución - posible fatiga si hay una larga exposición y actividad. Una actividad continua podría desencadenar en calambres."
$texto2 = "Mucha preacución - calambres, posible agotamiento por calor. Una actividad continua podría desencadenar en un golpe de calor."
$texto3 = "Peligro - calambres, probabilidad de calambres y agotamiento por calor, probable golpe de calor si realiza una actividad continua."
$texto4 = "Muy peligroso - inminente golpe de calor."
If $HC >= 23 and $HC <= 32 then GUICtrlSetData($Label5, $texto1)
If $HC > 32 and $HC <= 41 then GUICtrlSetData($Label5, $texto2)
If $HC > 41 and $HC <= 54 then GUICtrlSetData($Label5, $texto3)
If $HC > 54 then GUICtrlSetData($Label5, $texto4)

EndSelect
WEnd
Exit


_________________________________________________

- Índice de humedad.

indice_de_humedad.au3 indice_de_humedad.exe


#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Ìndice de humedad", 272, 239, 192, 124)
$Label1 = GUICtrlCreateLabel("Temperatura", 24, 40, 106, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Input1 = GUICtrlCreateInput("Input1", 144, 32, 65, 28, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Humedad", 24, 72, 81, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Input2 = GUICtrlCreateInput("Input2", 144, 72, 65, 28, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Button1 = GUICtrlCreateButton("Pulsa para calcular", 72, 120, 129, 33, 0)
$Label3 = GUICtrlCreateLabel("Índice de humedad", 8, 192, 157, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label4 = GUICtrlCreateLabel("Label4", 176, 192, 90, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

 

While 1
$msg = GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
; Cuando presiona este el botón realiza el cálculo.
Case $msg = $Button1
$T = GUICtrlRead($Input1)
$H = GUICtrlRead($Input2)
$Pr = (($H/100)^(1/8) * (112 + 0.9 * $T) + (0.1 * $T) - 112) + 273.16
$e = 6.11 * exp(5417.7530 * (1 / 273.16 - 1 / $Pr))
$IH = $T + (0.5555) * ($e - 10)

; Dos decimales
$IH = Round($IH, 2)
GUICtrlSetData($Label4,$IH)

EndSelect
WEnd
Exit

_________________________________________________

- Altura por relación de presiones.

 

altura.au3 altura.exe


#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Cálculo de la altura mediante presiones", 350, 224, 268, 202)
$Label1 = GUICtrlCreateLabel("Presión estática (Po)", 24, 24, 171, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Presión de referencia (Pr)", 24, 64, 209, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Input1 = GUICtrlCreateInput("", 248, 24, 65, 28, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Input2 = GUICtrlCreateInput("", 248, 64, 65, 28, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Button1 = GUICtrlCreateButton("Pulsa para realizar el cálculo", 88, 128, 177, 33, 0)
$Label3 = GUICtrlCreateLabel("(ambas presiones en la misma unidad)", 24, 96, 182, 17)
$Label4 = GUICtrlCreateLabel("Altura en metros:", 24, 184, 142, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label5 = GUICtrlCreateLabel("", 176, 184, 66, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$msg = GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
; Cuando pulsa este el botón realiza el cálculo.
Case $msg = $Button1
$Po = GUICtrlRead($Input1)
$Pref = GUICtrlRead($Input2)
$altura = ((1 - ($Po / $Pref) ^ 0.19026) * 288.15 * 0.3048) / 0.00198122

; Dos decimales
$altura = Round($altura, 2)
GUICtrlSetData($Label5,$altura)

EndSelect
WEnd
Exit


_________________________________________________

- Cálculo de la fase lunar.

fase_lunar.au3

fase_lunar.exe


#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("Fase Lunar", 361, 271, 192, 124)
$Label1 = GUICtrlCreateLabel("Día", 32, 40, 31, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Input1 = GUICtrlCreateInput("", 72, 32, 33, 28, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Mes", 128, 40, 37, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Input2 = GUICtrlCreateInput("", 176, 32, 33, 28, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("Año", 232, 40, 36, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Input3 = GUICtrlCreateInput("", 280, 32, 49, 28, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Button1 = GUICtrlCreateButton("Pulsa para obtener la fase lunar", 80, 72, 201, 33)
$Label4 = GUICtrlCreateLabel("Fase lunar:", 24, 128, 94, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label5 = GUICtrlCreateLabel("", 128, 128, 172, 20)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Pic1 = GUICtrlCreatePic("C:\estacion_meteorologica\imagenes\fase_lunar.gif", 32, 176, 305, 57, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
GUISetState(@SW_SHOW)

#EndRegion ### END Koda GUI section ###

While 1
$msg = GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
; Cuando pulsa el botón realiza el cálculo.
Case $msg = $Button1

$dia = GUICtrlRead($Input1)
$mes = GUICtrlRead($Input2)
$anno = GUICtrlRead($Input3)

$c = 0
$e = 0
$jd = 0
$b = 0

If ($mes < 3) Then
$anno = $anno - 1
$mes = $mes + 12
EndIf

$mes = $mes + 1
$c = 365.25 * $anno
$e = 30.6 * $mes
$jd = $c + $e + $dia - 694039.09 ; jd es el tiempo total transcurrido

$jd = $jd / 29.5305882 ; divide por el ciclo lunar

$b = Int ($jd)
$jd = $jd - $b
$b = Round($jd * 8)

If ($b >= 8 ) Then $b = 0

Switch $b
Case 0
$fase = "Luna nueva"
Case 1
$fase = "Poco creciente"
Case 2
$fase = "Cuarto creciente"
Case 3
$fase = "Muy creciente"
Case 4
$fase = "Luna llena"
Case 5
$fase = "Poco menguante"
Case 6
$fase = "Cuarto menguante"
Case 7
$fase = "Muy menguante"
EndSwitch

GUICtrlSetData($Label5, $b & "-" & $fase)

EndSelect
WEnd
Exit


_________________________________________________

- Cálculo de la salida y puesta de sol.

¿Te atreves con esto? Se trata de pasar un algoritmo que calcula la salida y la puesta del sol a un lenguaje de programación, en nuestro caso el AutoIt.
- El algoritmo lo encontramos en: http://williams.best.vwh.net/sunrise_sunset_algorithm.htm.
- Los datos de entrada son el día, mes, año, longitud y latitud.

- Los lenguajes de programación realizan las funciones seno, coseno, tangente, arcoseno, arcocoseno y arcotangente en radianes, y el algoritmo hace los cálculos en grados, por lo cual debemos hacer conversiones de grados a radianes y viceversa:
- g = (r * 360) / (2 * PI) = 57.29578 * r
- r = (g * 2 * PI) / 360 = 0.0174532 * g

Notas palurdas:

sin (angulogrados * r)
cos (angulogrados * r)
tan (angulogrados * r)
g * asin(valor)
g * acos(valor)
g * atan(valor)

- floor es un redondeo al menor entero. floor(4.76) = 4          floor(-4.29) = -5

- Construye el formulario con KODA. Para la elección de orto/ocaso coloca dos RadioButton. La salida debe estar en hora, minutos y segundos.

- Nota sabia: si hablas con un argentino, no le menciones el orto ;-)

 


IES Fco. Romero Vargas
Avda. Moreno Mendoza, s/n - 11408 Jerez de la Frontera (Cádiz) -
Tlf.: 671 530 256 /7 /8  -  956 70 99 17
  email: 11007922.edu@juntadeandalucia.es
Las informaciones ofrecidas por este medio tienen exclusivamente carácter ilustrativo, y no originarán derechos ni expectativas de derechos.
(Decreto 204/95, artículo 4; BOJA 136 de 26 de Octubre)