Go Down

Topic: [Résolu] Fonctions trigonométriques et variables à virgule flottante (Read 7421 times) previous topic - next topic

Heloderma-kris

#15
May 23, 2014, 10:52 am Last Edit: May 23, 2014, 11:02 am by Heloderma-kris Reason: 1
oui pas de souci !

alors:
Code: [Select]
#include <Date_heure.h>
#include <ephemeride.h>

#define _latD 48
#define _latM 47
#define _lonD 2
#define _lonM 26
#define _J 23
#define _M 5
#define _A 2014
#define _fuso 1

void setup(){
Serial.begin(9600);

int  n =rangJour(_J,_M,_A);
float HO=angleHoraireSoeil(n,(_latD+(_latM/60))); //lat D=latitude degree //latM Minute
float ET=equationDuTemps(n);
//heure de lever
Serial.print("heure de lever : \t");
int hOnh=int(12-(HO/15)+((_lonD+(_lonM/60))/15)+(ET/60)+_fuso);
Serial.print(hOnh);
Serial.print(":");
int hOnm=int(((12-(HO/15)+((_lonD+(_lonM/60))/15)+(ET/60)+_fuso)-(hOnh))*60);
Serial.print(hOnm);
Serial.println();

Serial.print("heure de coucher : \t");
int hOffh=int(12+(HO/15)+((_lonD+(_lonM/60))/15)+(ET/60)+_fuso);
Serial.print(hOffh);
Serial.print(":");
int hOffm=int(((12+(HO/15)+((_lonD+(_lonM/60))/15)+(ET/60)+_fuso)-(hOffh))*60);
Serial.print( hOffm);
Serial.println();

Serial.print("duree du jour : \t");

Serial.print(hOffh-hOnh);
Serial.print(":");
Serial.print(hOffm-hOnm);
Serial.println();
}
void loop(){}


le resultat :
Code: [Select]

heure de lever : 5:12
heure de coucher : 20:41
duree du jour : 15:29


je vien de modifier pour avoir la duree! pour comparaison j'ai 7 minute de diference par raport a une aplication sur mon tel " LUNASOLCAL"

en esperant que ça t'ira !

XavierMiller

Hello,

Ne serait-il pas plus avantageux de créer une table d'éphémérides au lieu de faire ces calculs lourds sur l'arduino ?

Heloderma-kris

dans mon cas les calcul sont fait une seul fois a 0.00H du coup ça bouffe pas beaucoup de temps de calcule et apres je peut ultiliser la fonction pour traçé des graphe de la duree du jour en fonction de la latitude et de la longitude sinon il me faudrai une table pour chaque valeur que je rentre ( ça risque de faire lour aussi non?)

bricoleau


Hello,

Ne serait-il pas plus avantageux de créer une table d'éphémérides au lieu de faire ces calculs lourds sur l'arduino ?


Ben ça dépend des besoins.
Si c'est par exemple pour piloter un éclairage exterieur sans capteur de luminosité, c'est-à-dire calculer l'éphéméride pour un lieu constant, alors oui, une table en eeprom peut faire l'affaire.
A voir avec la précision requise, car d'une année sur l'autre l'éphéméride varie pour un même jour calendaire (années bissextiles etc.).

De mon côté je cherche à reproduire de manière artificielle un éclairage pour un biotope captif, en respectant la photopériode du lieu d'origine (recentrée sur la photopériode naturelle du lieu de captivité).
Dans ce cas, la longitude / latitude est variable et l'usage de tables ne me semble plus faisable.
D'autant qu'un même arduino peut avoir à piloter simultanément des éclairages pour plusieurs biotopes de différentes localisations d'origine.
Tutoriels arduino : http://forum.arduino.cc/index.php?topic=398112.0

icare

Bonjour,
Pour ceux qui veulent tout savoir sur le calcul astronomique.
Il existe 3 ouvrages remarquables de Jean Meeus (auteur Belge mais en anglais)
- Astronomical Algorithms
- Mathematical Astronomy
- More Mathematical Astronomy
@+
2B OR NOT(2B) = FF
Arduino 1.0.5 à 1.8.5 + gEdit + Ubuntu 18.04 LTS

Heloderma-kris



De mon côté je cherche à reproduire de manière artificielle un éclairage pour un biotope captif, en respectant la photopériode du lieu d'origine (recentrée sur la photopériode naturelle du lieu de captivité).
Dans ce cas, la longitude / latitude est variable et l'usage de tables ne me semble plus faisable.
D'autant qu'un même arduino peut avoir à piloter simultanément des éclairages pour plusieurs biotopes de différentes localisations d'origine.

c'est exactement ce que je fait avec mon systeme mais pour les reptil par pour des poisson ! et ça fonctionne nickel les sorie d'hivernation marche du toner! :smiley-mr-green:

haifger


Il existe 3 ouvrages remarquables de Jean Meeus (auteur Belge mais en anglais)
- Astronomical Algorithms
- Mathematical Astronomy
- More Mathematical Astronomy
@+

Absolument indispensables, le premier en particulier.

Sinon, pour ceux que ça intéresse, la version de développement de avr-libc[1] inclut désormais tout ce qu'il faut pour la gestion du temps, avec les habituelles time_t, mktime(), etc. mais aussi des fonctions pour calculer les heures de lever et coucher du Soleil (ou les phases de la Lune, ...). Le but étant bien sûr d'avoir du code optimisé pour AVR. Je ne sais pas où ils en sont dans le portage, mais il y a certainement pas mal d'idées à aller piquer là-dedans.

[1] http://svn.savannah.nongnu.org/viewvc/trunk/avr-libc/libc/time/?root=avr-libc

Heloderma-kris

ha ba si j'avais eu connaissance de ça avant je me serai moins pris la tete  :smiley-red:

icare

Bonjour,

ha ba si j'avais eu connaissance de ça avant je me serai moins pris la tete  :smiley-red:

Il suffit de demander les forums sont là pour cela.
;)
2B OR NOT(2B) = FF
Arduino 1.0.5 à 1.8.5 + gEdit + Ubuntu 18.04 LTS

haifger


Bonjour,

ha ba si j'avais eu connaissance de ça avant je me serai moins pris la tete  :smiley-red:

Il suffit de demander les forums sont là pour cela.
;)

Oui et puis il faut voir le bon côté des choses : en prenant des codes tout faits tu te serais peut-être moins «pris la tête», mais tu aurais également appris beaucoup moins de choses sur cette belle (et difficile) science qu'est l'astrométrie :)

Heloderma-kris

ha la je suis complétement daccord avec toi , ça ma obliger a replonger dans la trigo et en plus je prefere utiliser la ma version pour le moment qui me semble moins compliqué ( peut'etre parceque je l'ai ecrite :smiley-mr-green:)

mais au fait ou est passer le principale intérésé du topic ? ( il bosse peut'etre cela dit :smiley-mr-green:)

icare

Re,

Bonjour,
Pour ceux qui veulent tout savoir sur le calcul astronomique.
Il existe 3 ouvrages remarquables de Jean Meeus (auteur Belge mais en anglais)
- Astronomical Algorithms
- Mathematical Astronomy
- More Mathematical Astronomy
@+

Même si c'est un peu HS mais toujours bon à prendre pour les discutions de salon :)
J'ai retrouvé dans la bibliothèque une traduction partielle (principaux chapitres de Astronomical Algorithms) dans un livre intitulé "Calculs Astronomiques à l'usage des amateurs de Jean Meeus" publiée par la Société Astronomique de France
2B OR NOT(2B) = FF
Arduino 1.0.5 à 1.8.5 + gEdit + Ubuntu 18.04 LTS

Uzuma

#27
May 23, 2014, 06:24 pm Last Edit: May 23, 2014, 06:29 pm by Uzuma Reason: 1

mais au fait ou est passer le principale intérésé du topic ? ( il bosse peut'etre cela dit :smiley-mr-green:)


Chui là gros  XD

Petite question : Si j'ai Lat = 45°56'30" et Lon = 2°36'48" alors selon ta lib, LatD = 45 et LatM = 56 c'est ça ?!
Si oui alors voilà j'ai testé ton code en entrant la latitude et la longitude de ma zone puis j'ai comparé les résultats avec ceux fourni par le site de l'IMCCE : http://www.imcce.fr/fr/ephemerides/phenomenes/rts/index.php Faut dire que le résultat est quand même assez proche de ceux fourni par la site de l'IMCCE (petite différence de 4 min environ).

Résultats 5h 44min avec ta lib et 5h 40min avec l'IMCCE.

Contrairement à vous, moi je destine cette application à un tracker solaire. Et comme vous le savez il faut, si l'on veut faire un asservissement basé sur des calculs des calculs et encore des calculs astronomique, connaître un peu ces notions. Y a beaucoup de possibilités mais je vais faire simple pour le moment.

Avec le fichier de @bricoleau, j'obtiens un écart de 8 à 10 min environ. Je crois que cette nette différence doit venir des paramètres que chacun prend en compte.
Avec l'IMCCE j'obtiens 5h40min.
Avec www.keskeces.com j'obtiens 5h26min et tout cela en fonction de la latitude et la longitude de ma zone.
Le jour approche et je crois que je ne vais pas trop me plonger là dedans pour voir ce qui ne va pas. Je vais me contenter de ce que vous m'avez donné.

Au départ je suis tombé sur le même site que toi c'est-à-dire Jean Paul Cornec et par la suite j'ai aussi trouvé www.herve.silve.pagesperso-orange.fr/solaire.htm Mais bon je m'en suis toujours référer au 1er.

Euh encore un truc : Avec ma Lat et ma Lon j'ai trouvé : durée du jour : 13:-35
Dois-je en conclure que chez moi la durée du jour est de 13h - 35 min c'est à dire 12h25 ?

icare

Re,
Dans tes calculs, as-tu intégré l'altitude du lieu ?
Les minutes négatives ne semblent pas forcément juste.
@+
2B OR NOT(2B) = FF
Arduino 1.0.5 à 1.8.5 + gEdit + Ubuntu 18.04 LTS

Uzuma

Non je n'ai pas intégré l'altitude. Les seules données à changer son la Latitude, la Longitude et le fuseau horaire du lieu si l'on considère la lib de @Heloderma-kris et le site qui lui a servi de base de départ.

Go Up