Francenanorecif

Bienvenue, Invité
Nom d'utilisateur : Mot de passe : Se souvenir de moi

SUJET : Librairie éclairage progressif soleil/lune (v1.05)

Re: Librairie éclairage progressif soleil et lune 09 Jan 2013 20:29 #368141

  • the_ccm
  • Portrait de the_ccm
  • Hors Ligne
  • Administrateur Technique
  • Messages : 1197
  • Remerciements reçus 25
Yep tu as raison la correction n'est que dans l'exemple. J'ai rajouter une fonction SetLuneMax qui prends un seul paramètre sous le format timestamp unix je mettrais en ligne ce soir ou demain et également un warning pour l'année.
L'administrateur a désactivé l'accès en écriture pour le public.

Re: Librairie éclairage progressif soleil et lune 22 Jan 2013 12:49 #370956

  • Janpolanton
  • Portrait de Janpolanton
  • Hors Ligne
  • Membre
  • Messages : 54
  • Remerciements reçus 1
Bonjour,
J'ai posé une question à billyboyk sur un autre fil et il m'a conseiilé de voir avec toi. :blush:

J'aurais aimé te poser une question sur un passage de variables de la librarie aqualight vers mon sketch principal.

Il s'agit de la variable v.

Comment la déclarer dans aqualight.c pour pouvoir la reprendre?

Elle me servira a afficher différentes vues des phases lunaires (je suis un peu à la ramasse en langage c et les tutos que j'ai trouvés sont un peu hermétiques pour moi)

je te remercie d'avance
Dernière édition: 22 Jan 2013 12:49 par Janpolanton.
L'administrateur a désactivé l'accès en écriture pour le public.

Re: Librairie éclairage progressif soleil et lune 22 Jan 2013 17:26 #371027

  • the_ccm
  • Portrait de the_ccm
  • Hors Ligne
  • Administrateur Technique
  • Messages : 1197
  • Remerciements reçus 25
Je te demande des précisions en MP , pas tout compris :)
L'administrateur a désactivé l'accès en écriture pour le public.

Re: Librairie éclairage progressif soleil et lune 07 Juil 2013 13:02 #399386

  • the_ccm
  • Portrait de the_ccm
  • Hors Ligne
  • Administrateur Technique
  • Messages : 1197
  • Remerciements reçus 25
Mise à jour en v1.05, cf première page de ce post :)
L'administrateur a désactivé l'accès en écriture pour le public.

Re: Librairie éclairage progressif soleil/lune (v1.05) 17 Juil 2013 15:38 #400776

  • cyberwater
  • Portrait de cyberwater
  • Hors Ligne
  • Membre
  • Messages : 984
  • Remerciements reçus 18
Bonjour,
dit moi la méthode SunOrRain de l'objet AquaLight
elle s'utilise comment?
j'ai pas trouvé d'exemple

en tout cas big merci pour la bibliothèque est super simple d'utilisation maintenant manque plus que a tester sur ma rampe
L'administrateur a désactivé l'accès en écriture pour le public.

Re: Librairie éclairage progressif soleil/lune (v1.05) 17 Juil 2013 16:37 #400783

  • the_ccm
  • Portrait de the_ccm
  • Hors Ligne
  • Administrateur Technique
  • Messages : 1197
  • Remerciements reçus 25
la fonction est comme ceci :
bool AquaLight::SunOrRain(tmElements_t RTC_datas)

il faut donc envoyer la date courante et tu récupères 0 ou 1, 1 étant la valeur s'il pleut.

donc avec un exemple simple (je l'ai pas compilé attention à la syntaxe)
// La valeur PWM calculée 
// (pour info ou affichage, le digitalWrite étant directement dans la librairie)
int PWM_Led_Blanc=0;

int heures, minutes, secondes, jour, mois, annee;

time_t RTCTime;
tmElements_t RTCtm;


AquaLight LED_Blanc(LED_Blanc_PIN,PWM8,DAYLIGHTMODE);

byte RainyDay;

void setup()
{

//Ordre des paramètres : DUREE_TOTALE, DURE_RAMPE, MAX, ZENITH,
  // Attention aux valeurs de MAX et ZENITH , les valeurs max sont 1024 en mode 10 bits et 255 en mode 8 bits !
  // Pour la lune pas de valeur Max à l'initialisation, on calcule après en fonction du jour de l'année.
LED_Blanc.SetParams(750,240,240,945);
}


void loop
{


SetTime();  // cf exemple complet, renvoie la date/heure dans RTCtm

PWM_Led_Blanc = LED_Blanc.LisserRampeLED(heures,minutes);    

RainyDay=LED_Blanc.SunOrRain(RTCtm);

if (RainyDay==1)
    {
    Serial.println("Il pleut !!");
    }
else
    {
    Serial.println("Fait beau aujourd'hui");
    }

}



pour rappel la fonction est pseudo aléatoire, pour le calcul compliqué dans la librairie tu vois avec Billybok :)

Je complèterai l'exemple du Zip
L'administrateur a désactivé l'accès en écriture pour le public.

Re: Librairie éclairage progressif soleil/lune (v1.05) 18 Juil 2013 06:40 #400818

  • billyboyk
  • Portrait de billyboyk
  • Hors Ligne
  • Chargé de Rédaction
  • Messages : 2258
  • Remerciements reçus 58
Salut Laurent, salut tout le monde! :)

Bon alors, si notre "libraireur" se lance dans la météo, allons-y, soyons fous!

Mon idée était la suivante:
1.Déterminer si le jour est nuageux ou pas, en prenant en compte les saisons (moins de nuages en été en général).
2.Déterminer dans le cas d'un jour nuageux, si on a un ciel couvert, très couvert, ou seulement voilé.
3.Simuler les nuageux en fonction des 2 paramètres précédents.

Le tout génère un coefficient que l'on applique aux sortie PWM. Dans mon cas, je voulais que les nuages arrivent d'un côté du bac et partent à l'opposé.

A l'époque, je me souviens que tout était fait mais j'avais eu un gros coup de flemme et je n'avais pas intégré les fonctions à mon code.

Pour la première fonction, c'est ici:
bool JourNuageux()
{
    float chanceDePluie;
    
    if (jourDeLannee < 183)
    {
      chanceDePluie = 80.0 / (1.0 + exp(-(13.0/250.0)*(91.0 - jourDeLannee)))+ 10;      
    }
    else
    {
      chanceDePluie = 80.0/(1.0 + exp((-(13.0/250.0)*(jourDeLannee - 271.0))))+10;      
    }
 
    if(chanceDePluie > random(0,100)) 
    {
         return 1;       //Jour Nuageux  
    }
    else
    {
         return 0;       //Jour Ensoleillé 
    }
}

Ce qui donne ça:



On vois bien que le ciel est plus nuageux en hiver/automne. Et en plus, on peut ajuster comme on veux!

Pour déterminer si le ciel est couvert, très couvert, voilé, il suffit de récupérer la valeur de la variable "chancedepluie" que l'on pourrait utiliser en pourcentage de nuages.

Pour la simulation des nuages, je dois retrouver mon code mais ça donnait ça sur 8 bits, il suffit de multiplier par 4 pour passer en 14 bits:

Dernière édition: 18 Juil 2013 07:10 par billyboyk.
L'administrateur a désactivé l'accès en écriture pour le public.

Re: Librairie éclairage progressif soleil/lune (v1.05) 18 Juil 2013 08:01 #400826

  • cyberwater
  • Portrait de cyberwater
  • Hors Ligne
  • Membre
  • Messages : 984
  • Remerciements reçus 18
merci
mais je ne vois pas comment simuler les nuage vus que la fonction retourne 1 ou 0
meme en récuperant la variable "chance de pluie"

tu pourrais mettre un bout de ton code loop?
L'administrateur a désactivé l'accès en écriture pour le public.

Re: Librairie éclairage progressif soleil/lune (v1.05) 18 Juil 2013 08:03 #400827

  • billyboyk
  • Portrait de billyboyk
  • Hors Ligne
  • Chargé de Rédaction
  • Messages : 2258
  • Remerciements reçus 58
Cette partie du code s'execute une fois par jour, à 00h01 par exemple pour savoir le jour est nuageux ou pas.

Pour les nuages, comme je l'ai expliqué, j'ai égaré le code, je vais essayer de remettre la main dessus ;)
L'administrateur a désactivé l'accès en écriture pour le public.

Re: Librairie éclairage progressif soleil/lune (v1.05) 18 Juil 2013 08:20 #400830

  • cyberwater
  • Portrait de cyberwater
  • Hors Ligne
  • Membre
  • Messages : 984
  • Remerciements reçus 18
oky j'attend de tes news
L'administrateur a désactivé l'accès en écriture pour le public.

Re: Librairie éclairage progressif soleil/lune (v1.05) 18 Juil 2013 08:45 #400831

  • billyboyk
  • Portrait de billyboyk
  • Hors Ligne
  • Chargé de Rédaction
  • Messages : 2258
  • Remerciements reçus 58
Bon ben ça aura été rapide, j'ai retrouvé!

Voici donc le code pour les passages nuages, alératoires, que ce soit pour leur durée, leur intensité, leur temps de "montée/descente":
bool jourNuageux         = 1;
bool nuageEnCours        = 0;
bool nouveauNuage        = 0;

float dureeDuNuage       = 0;
float dureeRampeDuNuage  = 0;
long demarrageNuage      = 0;
long millisPrecedent     = 0;

float valeurCoefNuage    = 0.0;

float coefMeteo          = 1.0;
float valeurLED          = 0.0;

int i                    = 0;

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

void loop() 
{
  LancerNuage();
  CalculCoefNuage(dureeDuNuage, dureeRampeDuNuage);
  valeurLED = 255.0 * coefMeteo;
  
  Serial.print(i++);
  Serial.print(" ");
  Serial.println(valeurLED);


  
}

void LancerNuage()                                        // Executer toutes les secondes
{
    if(jourNuageux && !nuageEnCours)                      // Si c'est un jour nuageux et qu'un nuage n'est pas en train de passer
    {
         if (random(0,1000) > 995)                          //On lance un tirage pour nuage ou pas
         {
             nuageEnCours = 1;                            //Nouveau nuage 
             dureeDuNuage =  random(5.0, 20.0) * 1000.0;  //Calcul aléatoire de la duree du nuage
             dureeRampeDuNuage = dureeDuNuage * 0.3;      //Calcul du temps de diminution et de remontée
             demarrageNuage = millis();                   //Point de repère du début du nuage
             millisPrecedent = demarrageNuage;
             valeurCoefNuage = float(random(10,40))/100.0;
         }
     }    
}

void CalculCoefNuage(float duree, float dureeRampe)
{
    if(nuageEnCours)
    {
        if(millis() >= demarrageNuage && millis() < demarrageNuage + (dureeRampe))
        {
            coefMeteo = 1.0 - ((float(millis()-demarrageNuage)/(dureeRampe))  *  valeurCoefNuage);       
        }
        else if(millis() >= (demarrageNuage + duree - dureeRampe) && millis() <= demarrageNuage + (duree))
        {
            coefMeteo = (1 - valeurCoefNuage) + (((float(millis()- (demarrageNuage + (duree) - (dureeRampe)))) / (dureeRampe)) * valeurCoefNuage);
        }
        else
        {
            coefMeteo = 1 - valeurCoefNuage;
        }
        
        if(millis() > (demarrageNuage + (duree))) 
        {
            coefMeteo = 1.0;
            nuageEnCours = 0;  
        }
    }
    

}

Je viens de tester et j'ai obtenu cela(résultat en sortie de l'Arduino et non simulation Excel):



Maintenant il ne reste plus qu'à l'intégrer dans le code général et c'est là que j'avais laissé tomber à l'époque, il faudrait je pense une base temps où l'on applique le "coef nuage" mais à l'époque, j'avais pas réussi à trouver car j'étais trop dans le code. :silly:
L'administrateur a désactivé l'accès en écriture pour le public.

Re: Librairie éclairage progressif soleil/lune (v1.05) 18 Juil 2013 09:55 #400843

  • cyberwater
  • Portrait de cyberwater
  • Hors Ligne
  • Membre
  • Messages : 984
  • Remerciements reçus 18
ok merci je vais essayer de mettre a jour la bibliotheque

je vous la renvois modifier pour vérification
L'administrateur a désactivé l'accès en écriture pour le public.
Modérateurs: unjall, tulottes
Temps de génération de la page : 0.368 secondes

Une bouteille à la mer

billyboyk - 17:19

20 kilos de PV avec du mou, ça tiendra 2 jours dans un bidon brassé/chauffé ;)

billyboyk - 08:22

:D Bonne année à tous !!! xD

habaqouq - 22:06

bonsoir comme insérer une image dans un post merci

delphizorglub - 18:08

Ouaou :p super

babe91800 - 12:18

Bonjour à tous :) petit come back après un moment d'absence

The shoutbox is unavailable to non-members