Pages: 1 2 [3]   Go Down
Author Topic: [résolu] Calcul temps  (Read 3375 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 111
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

suis pas contre remanier mon code, et puis je suis là pour apprendre aussi (du coup j en aurai trois, ma gestion de radiateur, qui fonctionne, me reste le paramétrage à travers l'écran, ma gestion d' aqua marin à revoir, et les terras  smiley-roll )

j ai moins de problème avec mes bases de données  smiley-lol

sinon oui je ferais X version, une fois m a servi de leçon  smiley-wink

@ artouste : tu sais ce qu il te reste à faire  smiley-lol

merci pour votre aide

pour les mois, je comptais faire une condition voir un switch

en comparant le mois courant au mois défini et collé ensuite les actions à faire
« Last Edit: May 10, 2012, 01:22:48 pm by Stef84 » Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 111
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

juste une question, on fait comment pour avoir le delta de brumisation à partir de

heure debut : 8h15
heure fin : 19h30
nombre de pulvérisation : 7

le calcul va faire appel à des divisions et ça ne peut se faire qu a partir d un float non ?
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 111
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J ai trouvé d ou venait le problème dans mon code :


voila comment il est fait maintenant :

dans l'entête :

Quote
// basculement heure/nuit
long heureN=73800L;  // 20h
long heureJ=28800L; // 8h

// brumi jour
long brumiJ=(heureJ+900L); // 08h15
long brumiN=(heureN-3600L); // 19h30

int temps_brumi=20;

int brumi_seche_T1=4; // Nombre brumi periode seche
int mois_sec_T1=6;     // Mois periode seche
int brumi_pluie_T1=7; // Nombre brumi periode pluie
int mois_pluie_T1=9;   // Mois periode Pluie

int brumi_seche_T2=4; // Nombre brumi periode seche
int mois_sec_T2=6;     // Mois periode seche
int brumi_pluie_T2=7; // Nombre brumi periode pluie
int mois_pluie_T2=9;   // Mois periode Pluie

int brumi_seche_T3=4; // Nombre brumi periode seche
int mois_sec_T3=6;     // Mois periode seche
int brumi_pluie_T3=7; // Nombre brumi periode pluie
int mois_pluie_T3=9;   // Mois periode Pluie

int brumi_seche_T4=4; // Nombre brumi periode seche
int mois_sec_T4=6;     // Mois periode seche
int brumi_pluie_T4=7; // Nombre brumi periode pluie
int mois_pluie_T4=9;   // Mois periode Pluie

float espacement_brumi_seche_T1;
float espacement_brumi_pluie_T1;

float espacement_brumi_seche_T2;
float espacement_brumi_pluie_T2;

float espacement_brumi_seche_T3;
float espacement_brumi_pluie_T3;

float espacement_brumi_seche_T4;
float espacement_brumi_pluie_T4;

float compteur_brumi_T1;
float compteur_brumi_T2;
float compteur_brumi_T3;
float compteur_brumi_T4;

dans le void setup :
Quote
espacement_brumi_seche_T1=(((float)brumiN-(float)brumiJ)/(float)brumi_seche_T1);
espacement_brumi_pluie_T1=(((float)brumiN-(float)brumiJ)/((float)brumi_pluie_T1));

espacement_brumi_seche_T2=(((float)brumiN-(float)brumiJ)/((float)brumi_seche_T2));
espacement_brumi_pluie_T2=(((float)brumiN-(float)brumiJ)/((float)brumi_pluie_T2));

espacement_brumi_seche_T3=(((float)brumiN-(float)brumiJ)/((float)brumi_seche_T3));
espacement_brumi_pluie_T3=(((float)brumiN-(float)brumiJ)/((float)brumi_pluie_T3));

espacement_brumi_seche_T4=(((float)brumiN-(float)brumiJ)/((float)brumi_seche_T4));
espacement_brumi_pluie_T4=(((float)brumiN-(float)brumiJ)/((float)brumi_pluie_T4));

et dans le void loop :
Quote
   myLCD.gText(75, 170, Serial_LCD::rgb16(254, 254, 1), (long) espacement_brumi_seche_T1);
    myLCD.gText(75, 150, Serial_LCD::rgb16(254, 254, 1), (long)espacement_brumi_pluie_T1);
 



les compteurs étaient à 0, jusqu’à ce que je mette les calculs dans le setup et non plus dans l’entête

mais je vais le modifier comme cela a été suggéré  smiley-wink
« Last Edit: May 14, 2012, 09:48:53 am by Stef84 » Logged

Offline Offline
Faraday Member
**
Karma: 33
Posts: 4978
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

juste une question, on fait comment pour avoir le delta de brumisation à partir de

heure debut : 8h15
heure fin : 19h30
nombre de pulvérisation : 7

le calcul va faire appel à des divisions et ça ne peut se faire qu a partir d un float non ?

pourquoi ?
il faut raisonner echelon entier , tes "cuisse"s sont sensibles  au nombre de brumisations, à leur frequence et à leur durée , pas au fait qu'elles démarrent à la seconde prés (meme si la durée de brumisation est calibrée à la seconde)  

sauf plantage dans le calcul
il y a 1170-495 minutes =675 minutes entre 8H15 et 19H30
675/7=96 minutes (entieres) entre brumisations
1ere à 495 = 8H15
2eme à 495+96=591 = heure(entiere) = 591/60 =9heure , minute(entiere)= 591 modulo 60=51  =9H51
3eme à 591+96=687 ="                                                                                                          "
etc
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 111
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

je suis d accord : pas à la seconde prêt, mais de ce que j ai compris int=entier et les divisions avec int ne se font pas et donnent comme résultat : 0 et dans ce cas on doit passer par un float mais tenant compte de ce que vous avez dit plus haut les long et float posent des problèmes, je voulais en fait savoir comment vous passez le problème ou si exceptionnellement, vous les utilisez

Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 111
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Le code est pour l'instant (comme çà fonctionne) comme indiqué ci dessus, en attendant de faire les modifications suggérées par les membres.
Les pauvres, le ricard était sec ces derniers temps  smiley-lol

Logged

83 - var
Offline Offline
God Member
*****
Karma: 9
Posts: 863
ARDUINO Powa !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

lol j'ai pas passer beaucoup de temps en compagnie de mon arduino dernièrement, on s'y mets demain allé smiley

Skizo !
Logged

Un tien vaux mieux que deux tu l'auras !

83 - var
Offline Offline
God Member
*****
Karma: 9
Posts: 863
ARDUINO Powa !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bon bon bon, j'ai relu un peu tout ça, il faut que tu mette tout a plat,

en effet les long c'est pas possible et les float c'est sympa mais bon, il faut que tu travaille en minute, malgré tes brumisation en seconde, elle ce font tout les temps de minute, donc pour tout tes calcule tu peut être en minute et passer en seconde seulement pour mesuré ta durée de brumisation.

Apres niveau format, le mieux serais encore ALL INT !!!! pas de confusion, si tu veux pas perdre ta virgule dans une division tu multiplie ton diviser par 10 et tu auras un chiffre après la virgule exemple: 100/7 =14.28 en int 14 ! 1000/7 = 142.8 en int 142 ! tu fait 142%10 et tu obtiendra ta virgule et 142/10 ton entier !  ça déjà c'est une petite technique simple, après ta technique de convertir toute tes durées en seconde ou en minute n'est pas forcément bonne, surtout si les brumisation finissent par tombé le même jour même heure même minute,tu risque de perdre des petite seconde ou minute avec de l’inattention et tu sera de plus en plus décalée, après si tu est sur des période glissante la c’est adapté..

Donc la ce qui serais bien de faire:

tout en minute !!!!!!!!!!!!
Code:

// basculement heure/nuit
int heureN=1200;  // 20h
int heureJ=480; // 8h

// brumi jour
int brumiJ=(heureJ+15); // 08h15
int brumiN=(heureN-30); // 19h30

int temps_brumi=20; //seconde !!!!

int brumi_seche_T1=4; // Nombre brumi periode seche
int mois_sec_T1=6;     // Mois periode seche
int brumi_pluie_T1=7; // Nombre brumi periode pluie
int mois_pluie_T1=9;   // Mois periode Pluie

int brumi_seche_T2=4; // Nombre brumi periode seche
int mois_sec_T2=6;     // Mois periode seche
int brumi_pluie_T2=7; // Nombre brumi periode pluie
int mois_pluie_T2=9;   // Mois periode Pluie

int brumi_seche_T3=4; // Nombre brumi periode seche
int mois_sec_T3=6;     // Mois periode seche
int brumi_pluie_T3=7; // Nombre brumi periode pluie
int mois_pluie_T3=9;   // Mois periode Pluie

int brumi_seche_T4=4; // Nombre brumi periode seche
int mois_sec_T4=6;     // Mois periode seche
int brumi_pluie_T4=7; // Nombre brumi periode pluie
int mois_pluie_T4=9;   // Mois periode Pluie

int espacement_brumi_seche_T1=((brumiN-brumiJ)/(brumi_seche_T1-2L)); 
//tes grenouille ne sont pas a la seconde prête je pense le int fera l'arrondi a la minute dessous donc 3/2 = 1 =)

int espacement_brumi_pluie_T1=((brumiN-brumiJ)/(brumi_pluie_T1-2L));

int espacement_brumi_seche_T2=((brumiN-brumiJ)/(brumi_seche_T2-2L));
int espacement_brumi_pluie_T2=((brumiN-brumiJ)/(brumi_pluie_T2-2L));

int espacement_brumi_seche_T3=((brumiN-brumiJ)/(brumi_seche_T3-2L));
int espacement_brumi_pluie_T3=((brumiN-brumiJ)/(brumi_pluie_T3-2L));

int espacement_brumi_seche_T4=((brumiN-brumiJ)/(brumi_seche_T4-2L));
int espacement_brumi_pluie_T4=((brumiN-brumiJ)/(brumi_pluie_T4-2L));

int compteur_brumi_T1;
int compteur_brumi_T2;
int compteur_brumi_T3;
int compteur_brumi_T4;

int compteur_minute_T1
int compteur_minute_T2   // compteur de minute passer entre deux brumi
int compteur_minute_T3
int compteur_minute_T4




voila tes variables après avec ça tu devrai pouvoir avancer, te manque plus qu'a faire tes if et c'est bon !

Skizo !
Logged

Un tien vaux mieux que deux tu l'auras !

Pages: 1 2 [3]   Go Up
Jump to: