jeudi 7 juillet 2016

Position du Soleil et SalatTime pour Arduino



Position du Soleil et heures de prière pour Arduino

Calcul de la position du soleil

Le code suivant (trois fichiers) permet de faire le calcul de la position du soleil à n'importe quelle heure de la journée, de l'année, du lieu.
Il contient une librairie (mainroutines) comportant les fonctions nécessaires au calcul mais aussi les coordonnées de la ville :
[code] const double latitude = 34.88*deg2rd; const double longitude = -1.31*deg2rd; const int TimeZoneTown = 1; const int Convention = 1; const int DST = 0; [/code]

Il comporte aussi les fonctions
GetDate()
et
GetHeure()
qui permettent de spécifier la date et l'heure d'observation.
Ils peuvent être modifiées comme on le verra dans un prochain blog pour utiliser une RTC afin de prendre directement l'heure et la date de l'horloge.

Le calcul de la position du soleil se fait par l'appel de la fonction
Calc_hazClick();

le code ne compile pas sur codebender mais marche très bien avec l'IDE de l'Arduino.

Le résultat pour le 6 juillet à 10h est le suivant :
lat=34.8800010681 long=-1.3099999427
latitude=34°52'48.0038450000" longitude=-1°-18'-35.9997940000"
Conv 1
6/7/2016
6/7/2016
10:0:0
Date=6/7/2016Heure=9.00DST does not apply1
az=273.42° (orgine Sud) ie : azimut 273°25'0.1831054700"
------az=93.42° (orgine Nord) ie -180 : azimut 93°25'0.1281738300"
h=46.98°  ie altitude 46°58'35.1855470000"


A comparer avec la version PC qui donne des résultats à peine plus précis (calcul en double précision : double 64 bits au lieu de float 32 bits de l'Arduino).
Cela suffit amplement pour connaître correctement la position du soleil.
_____________________________________________________________
__ Lieu : Algérie, Tlemcen latitude= 34°52'48"   longitude= -1°-18'-36" Convention 1
latitude=34.88°  longitude=-1.31°
__ Date : Jeudi 6/7/2016 à 9.00833333333333 h UT    *DST does not apply*  TZ (include DST)=1
T=0.165116368164879 JC
Soleil Longitude L=104.731736033691°  ie 06h58'56"
theta0=59.9020313587971°  ie 03h59'36"
theta=58.5920313587971°  ie heure sidérale 03h54'22"
RA=105.991297501229°  ie 07h03'58"
delta=22.6231272290966°  ie DE  22°37'23"
tau=-47.3992661424321°  ie angle horaire -3h-9'-36"
az=273.515069036948° (orgine Sud) ie : azimut273°30'54"
------az=93.5150690369481° (orgine Nord) ie -180 : azimut 93°30'54"
h=47.0992260396189°  ie altitude  47°05'57"

Applications :
Station météo connectée
Orientation des panneaux photovoltaïques (PV)
Automatisation de l'ouverture et de la fermeture des stores

Calcul des horaires de prière

Afin de calculer les horaires de prière, il suffit d'appeler la routine 
ComputeSalatTime();
comme suit
[code] // SalatTime without RTC #include "mainroutines.h" void setup() { Serial.begin(115200); // Init SalatTime STinit(); ComputeSalatTime(); } //---------------------------------------------------------------------------- void loop() { } [/code]

lat=34.8800010681 long=-1.3099999427
latitude=34°52'48.0038450000" longitude=-1°-18'-35.9997940000"
Conv 1
6/7/2016
6/7/2016
T=0.1651197814  JC à 12h GMT
T=0.1651199579  JC à 12h9'43.1027980000"
meridien/Zuhr=13.1577348709 ie : 13h9'27.8455350000"
Fajr    =4:12
Chourouk=5:58
Zuhr    =13:9
Asr     =16:57
Maghrib =20:25
Isha    =22:0

A comparer avec

Applications :
Horloge de calcul des horaires de prières
Athan
Calendriers


Ceci est un doua3ware, c'est-à-dire que, si vous êtes musulman, merci de prier pour mon salut.

6 commentaires:

  1. c génial mercii bcp monsieur barak allah fik =)

    RépondreSupprimer
  2. Salam merci pour avoir partager mais jai un probleme a chaque fois que je verifie sa ne se compile pas et je sai pas pourquoi si tu peux me rependre le plus tot possible je te serai reconaissante merci

    RépondreSupprimer
    Réponses
    1. envoyer votre erreur pour que je vois ce qui ne va pas.
      Contactez moi directement par email

      Supprimer