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


Gen

Messages recommandés

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

Lien à poster
Partager sur d’autres sites

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

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

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

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

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

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

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 ^^

Lien à poster
Partager sur d’autres sites

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

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

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

Lien à poster
Partager sur d’autres sites

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

Lien à poster
Partager sur d’autres sites

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

 

 

Lien à poster
Partager sur d’autres sites

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

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

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

Lien à poster
Partager sur d’autres sites

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

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

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

Lien à poster
Partager sur d’autres sites

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

Lien à poster
Partager sur d’autres sites

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

Lien à poster
Partager sur d’autres sites
Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.