Gen

GDW#5 Growduino Shield pour MEGA2560 + LCD 4x20 en open source. [TERMINE]

Recommended Posts

Gen

Salut.

 

Les news du jour

 

Partie temporisateurs cycliques terminée avec mise en mémoire des paramètres

 

Quelques tofs

 

gallery_616177_4758_31570.jpg

 

gallery_616177_4758_52739.jpg

 

gallery_616177_4758_34269.jpg

 

 

 

Demain je commence la partie environnementale

- choix mode de culture (cro - flo)

- paramétrage HR et T° max et min de jour et de nuit

 

++

GEN

Share this post


Link to post
Share on other sites
Viker

Salut,

 

je vois que ça avance bien :)

Du coup de mon côté j'ai regardé les pointeurs afin de voir si je me débrouillais avec. En conclusion je trouve cela très pratique.

Grace aux pointeurs je viens de résoudre un problème que j'avais sur un autre projet d'initiation à l'Arduino.

 

Bonne continuation Gen

 

A+

Viker

Share this post


Link to post
Share on other sites
Gen

yop.

 

merci... ;-)

 

mais il y a pointeurs et pointeurs, il est vrai que référencer une variable et jouer avec un pointeur dessus c'est cool..

Par contre, une fois que l'on rentre dans les listes memoire, liste double chainée, arbre binaire, arbre multi, graph et fonction recursive.. c'est là où bcp commencent à ramer grave...

 

Par contre le grand danger, c'est qu'un pointeur accède directement à la mémoire, si tu te plantes.. ca pardonne pas.

 

mais bon, tout s'apprend..

 

++

GEN

Edited by Gen

Share this post


Link to post
Share on other sites
Viker

Po po po. A chaque jour son enseignement. ;)

 

Déjà de jouer avec une variable et surtout que je puisse sortir plusieurs valeurs d'une fonction c'est déjà énorme.

Pour la suite je verrais mais du coup tu as piqué ma curiosité.

 

En tout cas j'imagine bien le genre de plantage si on touche à une mauvaise adresse mémoire.

 

A+

 

Viker

Share this post


Link to post
Share on other sites
Gen

sortir des variables d'une fonction ??? Kesako ?

Une fonction renvoie une expression et rien d'autre

 

Long est le chemin du savoir petit padawan.. ;-)

 

++

GEN

Share this post


Link to post
Share on other sites
Viker

J'ai pas dis variables, j'ai dis valeurs.

Mais ce n'est peut être pas juste non plus? Il est vrai qu'il vaut mieux bien nommer les choses pour ne pas créer de confusion.

D'ailleurs je trouve bien souvent l'utilisation dans les exemples de programmation arduino le nom des variables globale dans la fonction alors que ce n'est qu'une copie et que du coup pour plus de clarté elles pourraient s'appeler de manière différente.

Exemple:

int mavariable1 = 2, mavariable2 =35;

 

mafonction ( mavariable1, mavariable2);

 

void mafonction (int mavariable1, int mavariable2)

{ blablabla }

 

Je préfèrerais:

int mavariable1 = 2, mavariable2 =35;

 

mafonction ( mavariable1, mavariable2);

 

void mafonction (int mavariabledefonction1, int mavariabledefonction2)

{ blablabla }

 

 

En résumé si j'ai bien compris. Un fonction utilise des variables propre à elle qui sont détruites lorsque qu'on quitte la fonction.

Elle transmet donc une expression (qui peut être une valeur) soit un résultat et un seul avec un return.

Grace aux pointeurs je peux donc modifier le contenu de plusieurs variables globales dans une fonction.

 

Je ne dis pas trop de connerie là? :P

 

Mais j'en convient le chemin est long et je ne suis qu'un jeune padawan.

 

A+

Viker

Share this post


Link to post
Share on other sites
Gen

re:

 

Quand la fonction est précédée d'un void on parle alors d'une procédure car elle ne renvoie rien mais peut très bien modifier des valeurs de variables globales.

Quand un type de valeur en retour est défini on appelle cela une fonction.

 

les fonctions et procédures  peuvent contenir des variables définies en interne et dont la visibilité se limite uniquement au corps de celles-ci.

On parle alors de : "portée d'une variable".

 

++

GEN

Edited by Gen

Share this post


Link to post
Share on other sites
Gen

re la room.

 

Aujourd'hui j'ai quasi terminé la partie environnement

 

voici les tofs

 

gallery_616177_4758_48929.jpg

 

gallery_616177_4758_39659.jpg

 

gallery_616177_4758_179.jpg

 

gallery_616177_4758_57864.jpg

 

gallery_616177_4758_12753.jpg

 

gallery_616177_4758_40976.jpg

 

Je devrais normalement avoir terminé le programme ce WE

 

++

GEN

Edited by Gen

Share this post


Link to post
Share on other sites
Viker

Super cela me semble très bien.

 

Bon suite ;)

 

A+

 

Viker

Share this post


Link to post
Share on other sites
Gen

Salut à tous.

 

J'ai terminé le menu, l'intégration des classes, ainsi que la correction de la librairie hysteresis, et tout fonctionne à merveille.

Demain j'écris la partie gestion moteurs (intracteur et extracteur)

 

donc sont faits et testés

 

Timer 1 avec différenciation cro/flo

Timer 2 idem

Cyclic 1 avec différenciation jour/nuit

Cyclic 2 idem

temp up avec hystérésis

temp down avec hystérésis

hr up avec hystérésis

hr down avec hystérésis

 

A bientôt pour la fin :-)

 

++

GEN

Edited by Gen

Share this post


Link to post
Share on other sites
Viker

Salut.

 

Dernière ligne droite. J'attends avec fébrilité, surtout la gestion des moteurs.

 

A bientôt

 

Viker

Share this post


Link to post
Share on other sites
Daddario

Yop,

 

Awé, je vois que toi tu fais ça bien xD.

 

Comme les autres, la curiosité piqué tout ça, je regarde et j'apprends.

 

Par contre, pour l’hystérésis, t'as carrément créé une librairie, chapeau. Je suis pressé de pouvoir lire le projet en entier ^^

Share this post


Link to post
Share on other sites
Gen

Salut.

 

Logiciel terminé et testé. (version 2)

 

Vous trouverez dans l'archive ci-dessous, le programme complet ainsi que les librairies à jour

(j'y ai également ajouté la librairie Keypad, mais normalement celle-ci n'est pas nécessaire car inclue d'office dans l'environnement arduino)

 

Je l'ai écrit de la manière la plus structurée possible en évitant l'usage de pointeurs afin de ne pas compliquer le code pour les néophytes.

 

Editeur utilisé : sublime-text build 3126

Environnement de test : Arduino 1.6.8

Sketch uses 27,662 bytes (10.9%) of 253,952 bytes.
Global variables use 2,604 bytes (31.8%) of  8,192 bytes

 

Téléchargement : miniGrowDuinoV1.2.zip

 

les modification à faire dans le code sont : (à partir de la ligne 49)

//********************************************************************************************************************
//***                                         !!! CONFIGURATION PARAMETRAGE !!!                                              ***
//********************************************************************************************************************
bool     pH_activated          = false;                // mettez la variable à true si vous possédez un module pH
bool     eC_activated          = false;                // mettez la variable à true si vous possédez un module EC
bool     co2_activated         = false;                // mettez la variable à true si vous possédez un module MH-Z14
int      humidityHysteresisPercent = 5;             // HUMIDITE valeur de l'hystérésis en %  (défaut 5)
int      temperatureHysteresisInDegreeCelcius = 2;  // TEMPERATURE valeur de l'hystérésis en degrés celcius (défaut 2)
int      extractMinSpeed    = 0;                    // vitesse minimum de l'extracteur 0 = coupé au repos
int      intractMinSpeed    = 1;                    // vitesse minimum de l'intracteur 0 = coupé au repos
int      extra_intra_delta  = 0;                     // différentiel de palier entre l'extract et l'intract (peut être négatif)
int      motorDelayInSec    = 1;                    // delais d'envois en secondes des commandes moteurs
//*********************************************************************************************************************
//*********************************************************************************************************************

 

pour accéder au menu, appuyez sur la touche * de votre pavé numérique.

 

Plan de cablâge et vidéo démo vont suivre

Amusez-vous bien!

 

Si vous avez des questions ou des commentaires, n'hésitez pas ;-)

++

GEN

Edited by Gen

Share this post


Link to post
Share on other sites
Viker

Salut Gen,

 

Je regarde tout ça ce soir afin de décortiquer, comprendre et apprendre.

 

En tout cas je suis certain que cela doit être comme d'habitude super pro.

 

Bravo et merci.

 

A+

 

Viker

Share this post


Link to post
Share on other sites
Gen

Salut.

 

Je vais modifier le code sous peu pour permettre l'inversion des commandes relais, car certaines platines relais fonctionnent à l'inverse. càd activé à LOW et désactivé à HIGH.

Ce qui devrait vous éviter des soucis de compatibilité entre l'arduino et les platines relais

 

++

GEN

Share this post


Link to post
Share on other sites
Gen

Voila, cela m'a pris moins de temps que prévu

 

la nouvelle archive avec les classes et code principal modifiés afin de permettre le travail avec des platines à relais dont les commandes sont inversées (je vous expliquerai dans le futur le pourquoi de la chose)

 

Téléchargement :  miniGrowDuinoV1.3.zip

 

Comment cela marche :

 

Dans le code de l'application, ligne 53

 

#define  invertedRelay       true

 

Si c'est à true, les commandes sont inversées

Si c'est à false, les commandes ne sont pas inversées

attention, comme c'est un #define, pas de signe '=' ni de ';' en fin de ligne

 

N-Joy

++

GEN

 

 

Share this post


Link to post
Share on other sites
Gen

Salut.

 

J'avais oublié de faire également l'inversion pour les commandes moteurs

Voilà chose faite ;-)

 

Téléchargement : miniGrowDuinoV1_31.zip

 

 

Voila, les cartes sont dans vos mains, modifiez le programme comme bon vous semble et amusez-vous bien.

 

++

GEN

Edited by Gen

Share this post


Link to post
Share on other sites
Gen

Salut.

 

je suis en train de faire ma platine de démo pour la chtite vidéo explicative.

 

Une tof pour vous faire patienter.

 

gallery_616177_4758_17309.jpg

 

@pluche.

GEN

Share this post


Link to post
Share on other sites
Viker

Salut,

 

C'est bien propre tout ça.

 

Je ne peux clairement pas montrer mon vrac, tas, pieuvre (entourez la mention utile)  d'arduino et de platines relais étalés sur ma table; ça ferait tâche à coté de ta belle platine.

 

Mais un jours, promis, je mets le boitier final en photo.

 

A+

 

Viker

Edited by Viker

Share this post


Link to post
Share on other sites
Guest elvirinix

plop gen

 

cest vraiment trop balaise pour moi de le faire moi mêmes

 

sa assure  ;-)  :respect: 

Edited by elvirinix

Share this post


Link to post
Share on other sites
Gen

Salut.

 

La platine de test est montée, et tout fonctionne correctement.

Vidéo dès demain

 

gallery_616177_4758_136725.jpg

 

++

GEN

Share this post


Link to post
Share on other sites
Gen

plop gen

 

cest vraiment trop balaise pour moi de le faire moi mêmes

 

sa assure  ;-)  :respect: 

 

Yop Elvi

 

De base, il n'y a rien à faire !

Tu câbles et basta.

Maintenant si tu veux faire des modifs ou personnaliser le truc, c'est clair que tu devras tripatouiller dans le code.

 

++

GEN

Share this post


Link to post
Share on other sites
Gen

Salut

 

Dernière version, avec mise à jour des librairies

 

Téléchargement :miniGrowDuinoV1_32.zip

 

Pour l'instant je fais le burning test, cela tourne sans problème depuis près de 24 hr.

Demain soir fin du test et mise en ligne de la vidéo démo complète

 

++

GEN

Share this post


Link to post
Share on other sites
Gen

Vidéo démo du projet terminé

 

 

Si vous avez des questions, n'hésitez pas

N-Joy

 

++

GEN

  • Like 3

Share this post


Link to post
Share on other sites
joebartoon

Bonsoir GEN ! !! ;)

 

Pour répondre a ta question sur la vidéo, je penses en effet que ton code répond au moins à 70% des utilisateurs que nous sommes!!

 

Enfin pour ma part, pour t'avoir sollicité pour essayer de coder, j'écrase "mon" code par celui-ci!

 

Pour conclure, je suis heureux que les idées de l'open source converge avec l'auto-production même si ici en France: "Nous avons les larmes aux Yeux!" 

 

MP bientôt,

 

GooD Luk

 

Thanks

Share this post


Link to post
Share on other sites