Premier projet !

Hello, la sonde PH c'est une H-101 interface SEN0169 branchement en BNC avec la carte avec le module fourni avec. Je la trouve super précise et en plus ! Elle est déjà calibrée d'usine. Sinon ta les sonde en verre de JBL en BMC aussi mais faut trouver le module pour communiquer sur arduino. Elle sont plutôt faite pour se brancher sur le panel gestion PH/CO2 de JBL.

Niveau tarif tes a 65 euros sur Gotronic.

Hello, tout fonctionne a merveille.

Mon relais s'active bien quand la température descend donnant ainsi la permission au chauffage de s'allumer.

J'ai des témoins lumineux (vert/rouge) qui m'indique si les temp/ph sont ok lorsque l'écran est éteint.

Un buzzer qui hurle si mon eau ou mon ph atteigne des niveau critique.

Bon maintenant je me heurte a un problème prévu... j'ai plus assez de sorties pour gérer le reste de mon matos.

Me reste un relais pour Co2 a branché avec témoin lumineux de fonctionnement.

Un relais pour contrôle de pompe de vidage et de remplissage pour le changement régulier d'eau.

L'entrée du capteur de niveau d'eau en complément de la pompe de vidage et remplissage.

L'entrée du débitmètre avec témoin pour l'entretien du filtre si le débit descend au dessous d'un seuil défini.

Du coup deux/trois questions:

  1. Peut t'on augmenter considérablement le nombre d'entrée sortie d'une UNO ?

  2. Ayant acheté une marque tierce pour débuter je veux finir mon projet sur une carte officielle pour soutenir les développeurs, peut être investir dans la MEGA serait plus intelligent ?

  3. L'intérêt d'une MEGA ADK par rapport a la MEGA CLASSIQUE ? Seulement la connectique USB/ANDROID ?

  4. Je veux prendre un écran plus grand pour afficher toutes mes infos. Le 20x4 est il aussi simple a utiliser que le 16x4 ?

Marci

1°) il est possible d'augmenter les I/O de la UNO par des circuits externes (par ex PCF8574 offre 8 I/O en I2C) mais cela t'oblige a faire un circuit imprimé , de plus tes ressources (Flash et RAM) vont diminuer au fur et a mesure que tu intègre de nouvelles fonctionnalités ....
2°) une MEGA résoud les pb évoqués au 1°, pour la source d'appro c'est toi qui voit ..... mais les clones fonctionnent parfaitement

Pour le circuit c'est pas un soucis j'ai la graveuse et l'insoleuse mais bon de toute façon j'étais parti pour la MEGA question ressources donc ca sera la plus simple et la plus intelligente des solutions de pense.

Pour la marque c'et juste que je trouve le concept Arduino tellement énorme que j'ai envie de soutenir les développeurs voila pourquoi je veut prendre de l'officiel ;).

Premier test sur plusieurs heures (1 nuit).
Au couché affichage impec mais ce matin l'affichage avait planté, plein de caractère bizarre partout et la carte ne répondais plus...

Un reset et ca repare j'ai remis en route a 6h30 je vais voir quand je rentre tout a l'heure mais si ca rebug je miserais sur un soucis avec le DS3231. Et vous ?

Je pense pas que se soit un soucis électrique physique sinon ca planterais tout de suite j'imagine.

Hello,

Petit soucis sur mon sketch…

Ca tourne impec pendant des heures et d’un coup l’affichage disparaît, par contre la carte continue de tourner derrière.

Problème de code ou matériel?

Si vous avez des idées…

Merci

Etternell:
Si vous avez des idées...

il y a des choses bizarres comme ceci

const int PHMAX = 8.20;                    // PIN PH MAXIMUM
const int PHMIN = 6.80;                    // PIN PH MINIMUM

un entier initialisé avec un nombre a virgule .....

as tu essayé de mettre un delay (1 ou 2s) dans ta loop pour ralentir les mesures et mises à jour de l'affichage ?

Mhhh j'ai pas fait gaffe mais pour du virgule je dois mettre en Float non ?

Tu devrais utiliser la librairie "DallasTemperature" plutôt que ta fonction qui contient un "delay(800);", ça ne m'inspire pas vraiment confiance...
Sinon, vu que seulement ton LCD semble planter, vérifie quand même que son câblage est bon, qu'il n'y a pas de mauvaise soudure ou une source d'interférences forte ou à défaut que les contacts sont "francs" (pas de jeu anormal)

Zorro_X:
Tu devrais utiliser la librairie “DallasTemperature” plutôt que ta fonction qui contient un “delay(800);”, ça ne m’inspire pas vraiment confiance…

le delay(800) est nécessaire pour une résolution maxi cf tableau ci dessous
config_ds18b20.jpg
mais il est possible de travailler avec une moins bonne résolution cf

Un truc tout bête mais je vais tester de brancher mon lcd direct sur la carte avec un simple code pour l'ecran qui affiche 4 mots et faire tourner comme ca pour voir.

Tu peux ne pas utiliser delay() mais millis() pour éviter que ton programme ne tourne qu'une fois par seconde (900ms exactement car 800ms de température + 10x10ms =100ms de PH). Ça commence à faire beaucoup...
Sinon ton idée de tester l'écran LCD tout seul se défend, au moins t'ecarteras tout souci physique de son ressort.

Millis() j'ai testé, relu et relu le tuto mais je n'arrive pas a le mettre a exécution.
Pas encore assez d'exp avec le C mais je progresse je code quasiement tout a la main sans copier coller ca me permet d'apprendre et comprendre ce que j'écris.

Par contre c'est sur que si mon programme bug a cause de ca va sérieusement faloir que je m'en serve.

Et pas bêtement en recopiant du code mais intelligemment en fesant des essais de sketch etccc.

pour l'utilisation de millis() ce n'est pas le C/C++ qu'il faut comprendre mais le principe.

le principe "millis()" est assez simple
pour "planifier" une tache t1 il faut deux variables :

  • la durée t1 entre 2 exécutions
  • la dernière fois t1 qu'elle a été exécuté en unsigned long initialisée a 0
    dans ta loop() tu test
    si (millis() - dernière fois t1 > durée t1)
    alors je lance la tache t1
    et on met à jour dernière fois t1 = millis()
    fin si

tes mesures de ph et temp pourraient être plus espacées vu que les variations doivent être lentes

Si je modifie le delay(10) de la sonde ph elle devient dingo et m'affiche n'importe mais j'aimerais bien faire 1 mesure par minute qui suffiront largement.

Encore une fois : faire du code sans comprendre ce qu'on fait, c'est comme écrire sans savoir lire. Le résultat est forcément autre chose que ce qu'on veut, et ça ne fonctionnera pas tant qu'on ne se donne pas la peine de comprendre...

Etternell:
Si je modifie le delay(10) de la sonde ph elle devient dingo et m'affiche n'importe mais j'aimerais bien faire 1 mesure par minute qui suffiront largement.

il ne faut pas toucher a ce type de delay qui est nécessaire pour respecter des temps de commutation ....
dans ton prog il faut que tu fasse 2 fonctions : mesuretemp() et mesureph() dans lesquels tu coupe et colle le code concerné
ensuite dans la loop() ou il ne reste rien tu appliques ce que je t'ai expliqué au #40

Ah merci j'ai pigé je vais voir ca ce soir.