[GMBB] Re-Edition de l'Automate de Windaube


Messages recommandés

il y a 11 minutes, Gen a dit:

La récré est terminée, fini de te tourner les pouces !!

Ahaha !! c'est ça que j'aime entendre ! :wub: 

 

il y a 11 minutes, Gen a dit:

Je n'ai bien entendu pas fait le programme à ta place,

Et M**de ! :mdr: 330 lignes en si peux de temps , qu'est ce qu'on vas demander de plus ! 

 

En tous cas un gros GG , et je te remercie beaucoup pour ce boulot d’orfèvre :D  j'ai de quoi passer de bonnes nuits maintenant :coffee: :lire:

 

 Je vais " Zieuter " tous ça dans la soirée ! 

 

Encore un BIG UP :plusun: pour le grand Gen'ius ! 

 

Sur ce ,  ého, éhooo, Je retourne au boulot ! ;) 

Modifié par Omgprod
  • Like 1
Lien à poster
Partager sur d’autres sites

Aller.. Au tour de @tizi59 d'avoir les oreilles qui chauffent :-)

 

perso j' ais fais ça pour la tmax/hmax et tmin/hmin et sa fonctionne

la tempMax et Min est "sauvegarder ?" pendant 24h 

 

int tmin=100;
int tmax=0;
int hmin=100;
int hmax=0;

 

Si la lecture déconne tu es mal.. tu n'as rien qui gère une erreur éventuelle
float t = dht.readTemperature();  //dht22

float h = dht.readHumidity();

 

 

ci dessous pourquoi définir 2 paramètres de dimension vu que tu n'as qu'une dimension de tableau ?

int TabEvt [1][3] = {{9,6,00},}; // grow
int TabEvt1 [1][3] = {{11,00,00},}; // flow

 

cela s'écrit :

int TabEvt [3] ={9,6,0}; // grow
int TabEvt1 [3] = {11,0,0}; // flow

 

if(t >= tmax)

{ tmax=t; }

if(t <= tmin)

{ tmin=t; }

if(h >= hmax)

{ hmax=h; }

if(h <= hmin)

{ hmin=h; }

 

 

/ je réinitialise la tmax/hmax et tmin/hmin a l'allumage à l'aide d'un tableau d' événement 
if ((digitalRead(A2) == true) && now.hour() == TabEvt [0][0] && now.minute() == TabEvt [0][1] && now.second() == TabEvt [0][2] )

{tmax=0;tmin=100;hmax=0;hmin=100;}
if ((digitalRead(A2) == false) && now.hour() == TabEvt1 [0][0] && now.minute() == TabEvt1 [0][1] && now.second() == TabEvt1 [0][2] )

 

Ci-dessus, pourquoi avoir fait une condition à rallonge quand tu peux avoir le nombre de secondes depuis minuit très facilement?

de plus cela te permet de te passer de ton tableau

if(digitalRead(A2) && now.unixtime()%86400 == 32760)   // 32760 est egal à 9hr 6min 0sec

Autres avantages en cas d'écriture des valeurs dans une EEPROM, c'est plus simple de faire 1 ecriture que 3 , économie d'espace et

cela permet de gagner du temps processeur.

 

pourquoi

if(digitalRead(A2)....  et non if(digialRead(A2) == true

if(!digitalRead(A2)....  et non if(digialRead(A2) == false

car digitalRead() renvoie déjà une expression, donc pas besoin de refaire une comparaison

 

LOW = False = 0

HIGH = True = 1

 

En espérant que cela t'aide

++

GEN

Modifié par Gen
  • Like 1
Lien à poster
Partager sur d’autres sites
Le 01/03/2018 à 17:30, Gen a dit:

 

pourquoi

if(digitalRead(A2)....  et non if(digialRead(A2) == true

if(!digitalRead(A2)....  et non if(digialRead(A2) == false

car digitalRead() renvoie déjà une expression, donc pas besoin de refaire une comparaison

 

LOW = False = 0

HIGH = True = 1

 

 

re,

 @Gen tu veut dire que 

 

if(digitalRead(A2) = ( if(digialRead(A2) == true )

if(!digitalRead(A2) = (  if(digialRead(A2) == false )

 

merci d'avance.

Modifié par tizi59
Lien à poster
Partager sur d’autres sites

re:

 

Toutafet !

 

ne pas oublier de mettre la seconde parenthèse

if(digitalRead(A2))

 

 

Syntax

digitalRead(pin)

Parameters

pin: the number of the digital pin you want to read

Returns

HIGH or LOW

 

++

GEN

Modifié par Gen
Lien à poster
Partager sur d’autres sites
il y a 1 minute, Gen a dit:

re:

 

Toutafet !

 

++

GEN

merci @gen en effet cela simplifie l'écriture du code

 

Le 01/03/2018 à 17:30, Gen a dit:

 

ci dessous pourquoi définir 2 paramètres de dimension vu que tu n'as qu'une dimension de tableau ?

int TabEvt [1][3] = {{9,6,00},}; // grow
int TabEvt1 [1][3] = {{11,00,00},}; // flow

 

cela s'écrit :

int TabEvt [3] ={9,6,0}; // grow
int TabEvt1 [3] = {11,0,0}; // flow

 

 

je le sais bien 

 

j'ais une erreur si je le laisse pas et je comprend pas pourquoi.

 

braces around scalar initializer for 'int'.

 

 

Lien à poster
Partager sur d’autres sites

parce que maintenant,quelque part dans ton code, tu références un tableau à 2 dimensions, alors qu'il n'en a plus qu'une.

 

++

GEN

Lien à poster
Partager sur d’autres sites

Bien..

 

par contre je ne suis pas trop partisan de mettre des valeurs en dur dans le code, le jour où il faut changer l'heure, il faut se farcir tout le code pour la retrouver

ce que je te propose c'est de créé une fonction qui renvoie le temps écoulé depuis minuit en secondes

et elle prendra les valeurs de variables déclarées en tête du programme

int startH = 9;

int startM = 6;

int startS = 0;

 

 

ensuite ajouter cette fonction

 

long secondsSinceMidnight(int hour,int minute, int second)

{

    return (hour * 3600) + (minute * 60) + second;

}

 

et maintenant tu fais ton test ainsi :

if(digitalRead(A2) && now.unixtime()%86400 == secondsSinceMidnight(startH,startM, startS))

 

Si tu as plusieurs fois et successivement le même genre de comparaison, pour gagner du temps processeur, tu peux déclarer une variable (a toi de voir sa portée, qu'elle soit locale, ou globale)

d'y assigner la valeur via la fonction secondsSince... et de faire le comparatif avec la valeur de cette vazriable et non plus appeler la fonction

 

++

GEN

Lien à poster
Partager sur d’autres sites
Il y a 2 heures, Gen a dit:

Bien..

 

par contre je ne suis pas trop partisan de mettre des valeurs en dur dans le code, le jour où il faut changer l'heure, il faut se farcir tout le code pour la retrouver

ce que je te propose c'est de créé une fonction qui renvoie le temps écoulé depuis minuit en secondes

et elle prendra les valeurs de variables déclarées en tête du programme

int startH = 9;

int startM = 6;

int startS = 0;

 

 

ensuite ajouter cette fonction

 

long secondsSinceMidnight(int hour,int minute, int second)

{

    return (hour * 3600) + (minute * 60) + second;

}

 

et maintenant tu fais ton test ainsi :

if(digitalRead(A2) && now.unixtime()%86400 == secondsSinceMidnight(startH,startM, startS))

 

Si tu as plusieurs fois et successivement le même genre de comparaison, pour gagner du temps processeur, tu peux déclarer une variable (a toi de voir sa portée, qu'elle soit locale, ou globale)

d'y assigner la valeur via la fonction secondsSince... et de faire le comparatif avec la valeur de cette vazriable et non plus appeler la fonction

 

++

GEN

merci @Gen

 

j'utilise 

int getTimeInMinutes(DateTime currentTime)
{
  return ((currentTime.hour() * 60) + currentTime.minute());
}

 

pour gérer l'allumage.

 

c'est pareil ?  

 

 

 

Modifié par tizi59
Lien à poster
Partager sur d’autres sites

yop

 

c'est le même principe mais l'un travail en secondes (impératif si on travail avec unixtime() car c'est en secondes également

et l'autre en minutes

 

++

GEN

 

 

 

Lien à poster
Partager sur d’autres sites
il y a 40 minutes, Gen a dit:

yop

 

c'est le même principe mais l'un travail en secondes (impératif si on travail avec unixtime() car c'est en secondes également

et l'autre en minutes

 

++

GEN

 

 

 

merci 

 

a+++

Lien à poster
Partager sur d’autres sites

Salut a tous je vous annonce juste qu'il y a la : 

 

MAJ 2 EN FIN DE THREAD ! a plus tard l'équipe :wub::plus::lire:

 

 

EDIT ECRAN RECU , NOUVEAUX TESTS :

 

IMG_0723.thumb.jpg.074cedff837d923cdf445b3f3f8900fa.jpgScreenshot_2.thumb.png.d0e809b928c98eafea852efeff2d79b6.png 

Modifié par Omgprod
  • Like 4
Lien à poster
Partager sur d’autres sites

Ha ha !! On veut devenir Vizir  à la place du Vizir je vois ... LOL

Belle personnalisation du Growduino. Proficiat !

Vive l'open source.

++

GEN

 

edit : MAJ 2 EN FIN  DEBUT DE THREAD ! a plus tard l'équipe :wub::plus::lire:

Faut arrêter de poster après avoir fumer....

 

Modifié par Gen
  • Haha 2
Lien à poster
Partager sur d’autres sites

Re les loulous ! je suis en pleine fascination :wub: c'est de la bombe !!! 

 

@Gen Jamais j'oserais ! jamais je pourrais ! je te l'ai dit en com je sais pas qui a fait siffler les oreilles de l'autre .. je l'ai commandé dans la semaine dernière et comme par hasard t'en as parlé aussi :D  en tous cas c'est vraiment pas mal du tout !!

 

mais faut faire chauffer Photoshop !! ( contacter vos GFX :P ) je prévois une autre template plus en osmose quand même que les screens d'en haut ... se sont juste des testes :)     

Lien à poster
Partager sur d’autres sites

lol... je rigoleuuuu.

j'ai depuis plus de 2 mois un nextion 3.5" et un 7".. j'ai commencé les tests,  mais ça va pas encore tout a fait comme je veux (création de graphiques) .. Mais ce va le faire, je fini toujours par trouver une solution..

Pour info, il y a une connexion nextion le nouveau shield  mini-GrowDuino :-)

 

++

GEN

 

 

  • Thanks 1
Lien à poster
Partager sur d’autres sites

Re !!! 
 

En meme temps vu les questions que je te poses des fois tu peux que rigoler :mdr: 

 

Ahhhh yesss bien ! bah envoie un MP si tu veux des " croquis " de templates tu m'envoies ta couleurs background et l'autre couleur flashiii et je te prépare ca si tu veux ;) ( enfin avec ton cahiers des charges :P  ) 

Nice la connectique ! , après c'est pas bien compliqué si on as un bornier reste juste a brancher le rx , tx en fuck*** slave :fouet::siff:  :mdr: 

 

 

petite vu sur le nouvel écran d'acceuil  http://prntscr.com/in86zc ;) 

Modifié par Omgprod
Lien à poster
Partager sur d’autres sites