Omgprod 80 Posté(e) février 15, 2018 Partager Posté(e) février 15, 2018 (modifié) EDIT sur le boulot que j'effectue en ce moment en bas du thread ! ( MAJ 1 , NEW : MAJ 2 ! ) Bonjour a tous ! Je viens en ce jour vous présentez mon projet de ré-édition du projet de @windaube21 et son Automate en GMBB " GrowMyBox Bit**'s " tout ça 5 ans après le tuto original : N'étant pas calé du tout ( de base ) en électronique , légèrement en programmation ( mais pas vraiment en C ) , j'ai réussi a me monter deux automates ! ( puis un MiniGrowDuino , @Gen ) Tombant sur quelques embûches aux passage , j'ai du faire légèrement évoluer son automate ( problème de relais je dirais même grillé , d'alim , réduire le nombre de prises , écran en I2C ) Et donc pour en venir ici , je me suis dis que après avoir ses deux automates et un rajeunissement ( léger ) du code Pourquoi pas vous proposer une ré-édition de son automate . En vue de l'absence de windaube 21 depuis , je pourrais assurer une aide sur ce post pour tout nouveau ou débutant voulant se lancer dans le " TRIP " C'est partit ?!! Liste des pré-requis : Spoiler - un Arduino ( UN VRAI S'il vous plait ) - un fer a souder - de l'etain - 3 resistances 10 ohm - 4 bouttons poussoir - des Wires ( fils ) Arduino - un ecran LCD I2C 20x4 - des dominos , wago ( 5 broches ) , connecteurs - Relais SSR High Relay State ( un par prise donc si vous voulez 6 prises = 6 relais SSR ) (Je conseille des dissipateur thermique sur les SSR lampes , extra , chauffage .. tous ce qui gros wattage ) - des prises étanche ip54 - un coffret ip54 a ip65 - une rallonge de 10 m ( pour avoir du câble et garder la prise mâle avec 1 m de câble pour le boitier ) et j'alimente mon Arduino avec un cable USB B coupé raccorder - a une alim 5v 6A optionel : connecter l'entrée phase neutre 230v a un disjoncteur ( pour ma part 10A , sécu je pense ) je fais cette liste de courses a la main en ne mettant aucun prix , ou site marchand ( je pense que tout le monde connait soit les sites chinois ou ebay et amazon , bref google est votre ami ) et vue que les prix diffères de sites ou de mois en années je mettrais que le prix approximatif de 80 euros ( peut être moins , peut être plus ) Le Câblage et la Programmation de l' Arduino : Spoiler je pars du principe que vous n'avez toucher un arduino donc je vais essayer d’être le plus clair que possible : Câblage : Programmation : Vous avez maintenant , ou aller recevoir votre arduino et vos câbles tout ça .. c'est bien mais comment dire a l'arduino quoi faire ?? Rendez vous ici : https://www.arduino.cc/en/Main/Software ou en cliquant simplement ici ! une fois installé , copier les dossiers du dossier libraries dans Documents/Arduino/libraries/ Maintenant si vous ouvrez mon GMBB_TUT.ino vous aurez ceci .. ( Descendez plus bas est modifier votre plage horaire souhaitez ainsi que vos temp/humi ) connecter votre Arduino au PC , aller dans : Outils et sélectionner Arduino /Genuino Uno . Selectionner le port COM ou est connecté votre Arduino . Vérifier , puis téléverser vers votre Arduino ! ( vous pouvez vérifier avec CTRL+R et ensuite le téléverser avec CTRL+U ) ENJOY ! EDIT : si , une fois le tout monté et téléversé , l'écran s'allume mais n'affiche rien .. il faut son changer l'adresse I2C //----------------- Declaration des Include & ecran ----------------\\ #include <SPI.h> #include <Ethernet.h> #include <LiquidCrystal_I2C.h> #include <Wire.h> #include <Arduino.h> #include <DS1307.h> #include <DHT.h> #define DHTPIN A0 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); LiquidCrystal_I2C lcd(0x3F, 20, 4); // LA ICI !!! l'adresse de base est .. 0x24, 20, 4); je l'ai modifié par 0x3F Résultat : Spoiler mon premier en 4 prises ( Lampe , Brasseur , hydro ,Extra & Intra ) : Le deuxieme 6 prises ( Lampe , Chauffage , Extra , Intra , Brasseur , Hydro ) : EDIT : Mon GMBB de prototypage : accès a l'ardui , ainsi je peux brancher mes SSR et faire mes tests Don't Worry , Be Happy .. je vous rassure il est pas branché en 230v ( c'etait un test ) Ce tuto est fais par un nul , pour les nuls ! le .ino est fonctionnel a ce jour( je l'utilise ) mais reste dans une version beta test pour le moment .. je travail toujours en ce moment même dessus Voulant héberger mon .ino sur le site pour éviter un liens mort j'ai changer l'extension .rar par .pdf ( je ne sais pas si c'est autorisé , et si je risque quelque chose .. si quelqu’un connait la meilleure soluce a ce problème je prend ) GMBB.pdf renommer le GMBB.pdf par GMBB.rar et vous accederez au dossier contenant l'ino un dossier lib Je vous souhaite une bonne lecture , réalisation , grow ! EDIT - Suivre le boulot en cours : MAJ 1 Spoiler - Je continue de ré-agencer le visu de l'ardui , j'ai gagné une ligne sur la première page ... qu'est ce que je pourrais bien y rajouter - j'ai ajouté une sonde d'humidité du sol ( sur les photos aucune sonde n'est branché ) mais tout fonctionne si branché !! Je demande des avis sur la sonde sol , Utile ou useless ?? pour ma part c'est un peu sans intérêt ( j'ai deux pots ) mais je me dis des grosses box , ou des pots pas très accessible .. .... je travail aussi pour intégrer les classes DailyTimer , CyclicTimer , je verrais ça très vite Si ca intéresse certains : Spoiler /*********************************************************************************** * * * Tuto proposé par OMGPROD | DVH * * pour www.cannaweed.com , credits : * * https://www.tubefr.com/sonde-d-humidite-du-sol-arduino-lcd_5.html#title * * ENJOY ! * * tut noob for noob #2 * **********************************************************************************/ #include <LiquidCrystal_I2C.h> // Inclus la lib I2C #include <Wire.h> #define PotPIN A0 //PIN d’entrée data sonde A0 LiquidCrystal_I2C lcd(0x27, 16, 2); int sol = 0; //integer de la sonde d'humidité du sol int ledR = 8; // pin " si led rouge ajouté " int ledV = 9; // pin " si led vert ajouté " int ledB = 10; // pin " si led bleue ajouté " int ledJ= 11; // pin " si led jaune ajouté " void setup() { Wire.begin(); pinMode(ledR, OUTPUT); lcd.init(); lcd.backlight(); lcd.print("ww.CannaWeed.com"); lcd.setCursor(0, 1); lcd.print(" OMGPROD || DVH"); delay(3000); lcd.clear(); } void loop() { int sol = analogRead(PotPIN); sol = constrain (sol, 485, 1023); sol = map(sol, 485, 1023, 100, 0); lcd.print("CannaWeed || DVH"); lcd.setCursor(0, 1); lcd.print(" Humidite = "); lcd.print(sol); lcd.print("%"); delay(75); lcd.print(" "); delay(1); if (sol <= 3) { // si l'integer des datas de la sonde qui revient est plus petit que 3 la led s'eteint digitalWrite(ledR, LOW); delay(1000); } else if (sol <= 25) { // si l'integer des datas de la sonde qui revient est plus petit que 25 la led rouge s'allume digitalWrite(ledR, HIGH); delay(1000); } else if (sol <= 50) { // si l'integer des datas de la sonde qui revient est plus petit que 50 la led jaune s'allume et la rouge s'éteint digitalWrite(ledJ, HIGH); digitalWrite(ledR, LOW); delay(1000); } else if (sol <= 75) { digitalWrite(ledV, HIGH); digitalWrite(ledR, LOW); digitalWrite(ledJ, LOW); delay(1000); } else if (sol <= 100) { digitalWrite(ledB, HIGH); digitalWrite(ledR, LOW); digitalWrite(ledJ, LOW); digitalWrite(ledV, LOW); delay(3000); } lcd.clear(); } c'est le code pour un , la sonde d'humidité du sol sur LCD I2C 16x2 , bref en gros ça ( ne vous préoccupez pas des LED , c'est pas intéressant .. je pensais a un module connecter en wifi sans écran ) Petit récap du cablage : LCD I2C 16x2 = GND/GND VCC/5V SDA/SDA SCL/SCL | SONDE SOL I2C = GND/GND VCC/5V A0/A0 D0/ sur le pin de votre choix ex : PIN digital 1 , 2 , 3 , 4 , 5 .... Pour toutes questions n'hésitez pas ! @Omgprod !! PEACE !! MAJ 2 Salut a tous , j’espère que vous allez bien !! je viens aujourd'hui avec une petite MAJ , pas trop de boulot d'ajouté en vue , je en attente de commande , mais je vous rapporte un de news , histoire de ne pas oublier le thread ou de le laisser a l'abandon ! Je sais pas si certains suivent l'évolution du thread mais toute manière je récapépéte ! Le code de Windaube va peut être finir ses jours ici , vu l'apparition du rafraîchissement que @Gen ( ) en as fait , je posterais la dernière source que j'ai mise la version de son code que j'ai modifié .. Pour en venir au code de Gen , pour ceux qui ont jeté un coup d’œil dedans .. c'est très propre et agréable de partir sur de bonne base ( Windaube ne m'en veux pas ) J'ai commencé a ré-agencer le visuel a ma sauce vu que je suis en l'attente de boutons 3 positions ( a moins que je trouve une autre méthode d'ici la ) avec le boutons , j'ai deux trois trucs qui vont arriver et sur lesquels je vais essayer de les intégrer a mon projet ( changement d'écran soit plus grand 128x64 , soit la gamme nextion et je vais voir .. pour l'ajout soit un module Wifi , ou du module bluetooth qui as l'air plutôt pas mal est simpliste et très facile d’accès ( merci a @B.ganja pour le bout de code ) Bref un peu de photos non ? Spoiler Voila pour un petit aperçue , je vous laisse mon salon discord si certains voudraient papoter en vocal ou textuel directe , pour de l'aide ou juste pour bavarder entre growers https://discord.gg/XfC3n4V A plus l'équipe !! Modifié mars 5, 2018 par Omgprod 3 4 Lien à poster Partager sur d’autres sites
Ravier17 172 Posté(e) février 15, 2018 Partager Posté(e) février 15, 2018 Salut, Bien joué... A+ 1 Lien à poster Partager sur d’autres sites
Omgprod 80 Posté(e) février 16, 2018 Auteur Partager Posté(e) février 16, 2018 Hey @Ravier17 Merci d'etre passé et pour ton premier message A la pro ! Lien à poster Partager sur d’autres sites
tizi59 17 Posté(e) février 17, 2018 Partager Posté(e) février 17, 2018 salut, belle initiative pour le rajeunissement du code gen a mis a dispositions 3 classes MistControler, DailyTimer et CyclicTimer ça pourra peut-être t'aider. a+++ Lien à poster Partager sur d’autres sites
Omgprod 80 Posté(e) février 17, 2018 Auteur Partager Posté(e) février 17, 2018 Yo @tizi59 !! Je te remercie du message ! Éhé nice idea ! Faudrais je me penche dessus effectivement .. je vais regarder voir ce que je peux faire ( sans prétention d’etre un coddeur en C ) See ya ! 1 Lien à poster Partager sur d’autres sites
frenchiemaan 70 Posté(e) février 17, 2018 Partager Posté(e) février 17, 2018 (modifié) Impressionnante persévérance !! J'adore ton proto, vive le recyclage Ca fait un paquet de boulot, bravo à toi ! Bon bricolage et bonne continuation Modifié février 17, 2018 par frenchiemaan 1 Lien à poster Partager sur d’autres sites
Omgprod 80 Posté(e) février 17, 2018 Auteur Partager Posté(e) février 17, 2018 Yo @frenchiemaan !! Merci a toi pour l’encouragement ! Sache que le proto est née un peu grace a ton ghost in the shell un montage simple pour de simple tests Encore merci frenchie je te dis a la pro ! Lien à poster Partager sur d’autres sites
frenchiemaan 70 Posté(e) février 17, 2018 Partager Posté(e) février 17, 2018 et j'avais pas fait attention que tu étais sur le front GROWDUINO en meme temps ! Sacré toi Pour ma part, le level etait trop éloigné de la confiance que j'avais dans mes compétences et jsuis repartit sur un montage ... épuré En plus, mon enthousiasme m'a fait raté mon jeux de mots puisque j'avais en tete GHOST IN THE SHIELD Hésites pas à faire croquer de tes aventures et vive les nounous CAO Lien à poster Partager sur d’autres sites
Omgprod 80 Posté(e) février 17, 2018 Auteur Partager Posté(e) février 17, 2018 Re @frenchiemaan ! Éhé GrowDuino oblige ! @Gen c’est le patron dans cette section ah ouais ? Faut pas te sous estimer ! J’avoue que c’est un Level au dessus , moi j’ai pas touché le code , je l’ai monté , config et c’est partit pour le moment comme ça C’est pour ça que je comprenais pas vraiment le titre je repasserais voir aussi ou tu en ai ! Helas ce que je pourrais vous faire croquer ne seras jamais a un top niveau , je me lance a peine dans le C , le développement en langue informatique c’est juste un hobby pour moi + la weed on verra bien avec le temps .. A plus frenchie ! Lien à poster Partager sur d’autres sites
Omgprod 80 Posté(e) février 23, 2018 Auteur Partager Posté(e) février 23, 2018 Salut salut ! Je sais pas si vous avez vu la MAJ 1 sur le thread ! mais sa avance ! en parlant d'avancer !! @tizi59 j'ai ajouté la lib dailyTimer qui contrôle la lampe , je vais surement rajouter pour contrôler l'extra mais laisser l'intra s'activer avec la température je vais rajouter la lib cyclic pour le brasseur , et je pense que la version ALPHa seras prête des avis sur la sonde d'humidité du sol ? @frenchiemaan , @Ravier17 vu sur l'ajout de la lib DailyTimer : Spoiler L'ajout de la lib , on délcare la lampe sur le pin 7 oui oui je spliff quand je code , y'a pas de fumée sans feu la led du SSR s'éclair , le + est bien branché sur le port 7 de l'arduino . et le retour LCD la LAMPE est bien activé ! Lien à poster Partager sur d’autres sites
frenchiemaan 70 Posté(e) février 23, 2018 Partager Posté(e) février 23, 2018 La sonde d'humidité au sol ! je l'ai dans un coin de la tete, bien possible que je fasse ce petit montage un peu plus tard !! Je viens de sortir d'une période de récup après être passé pas loin de la correctionnelle ... Mon fils de 4 ans "m'assiste" depuis le départ des graines de "persil et coriandre" ... bien sur attentionnée, il me mettait de la flotte des qu'il avait une fenêtre de tir et la petite sonde m'aurait bien aidé à me rendre compte de son manège et du coup, il pourrait y avoir une interaction avec une pompe ou ca serait peut etre hasardeux ?? Lien à poster Partager sur d’autres sites
Omgprod 80 Posté(e) février 23, 2018 Auteur Partager Posté(e) février 23, 2018 Re @frenchiemaan rigolo que tu m’en parles , hein @keteki m’as parlé de la même chose tout a l’heure , mais comme je lui ai dis , je pense qui faut faire un minimum 2 jours pour que l’arrosage se lance ou placer la sonde vraiment dans le milieu du pot .. puis calculer combien de centilitres administrer au pot ... sans quoi on risque le sur arrosage a coup sur j’en pense ... faut en parler , lancer des testes sur des plants de tomates ... perso j’ai pas de pompe 5 ou 12 volt mais a l’avenir sa peux arriver Lien à poster Partager sur d’autres sites
keteki 116 Posté(e) février 23, 2018 Partager Posté(e) février 23, 2018 Bonjour à tous, Super ton tafs @Omgprod cela te fait une bonne approche pour découvrir et bouffé, forgé du code pour pouvoir concevoir tes fonctionnalités Pour l'arrosage je pense qu'il faut travailler sur une base de 3j à 1 semaine (sa va poser pb?), avec simplement une durée de distribution, l'ajout de la sonde peut être un plus avec arrosage anticipé ou retardé celon l'état du sol Nous devrions partager nos avis et suggestions pour définir les besoin et tenter de proposer une solution utile à tous Bonne prog A+ Respect humain Lien à poster Partager sur d’autres sites
Omgprod 80 Posté(e) février 24, 2018 Auteur Partager Posté(e) février 24, 2018 Spoiler il y a 29 minutes, keteki a dit: Bonjour à tous, Super ton tafs @Omgprod cela te fait une bonne approche pour découvrir et bouffé, forgé du code pour pouvoir concevoir tes fonctionnalités Pour l'arrosage je pense qu'il faut travailler sur une base de 3j à 1 semaine (sa va poser pb?), avec simplement une durée de distribution, l'ajout de la sonde peut être un plus avec arrosage anticipé ou retardé celon l'état du sol Nous devrions partager nos avis et suggestions pour définir les besoin et tenter de proposer une solution utile à tous Bonne prog A+ Respect humain Yop keteki ! merci beaucoup mais je fais avec ce que je trouve surtout , on se depatouille commme on peux ! Pour te répondre .. je sais pas si 3 jours c’est pas trop long , si ça peut rentrer en compréhension soit en minutes , ou peut être en sélectionnant que certains jours ( faut vraiment que j’en apprenne plus sur l’horloge rtc ) et toujours avec le contrôle de la sonde si le taux d’humidité après 3 jours et en dessous de temps ... oui c’est possible , après c’edt toujours plus facile a dire que as faire je verrais dans la semaine prochaine pour commencer a feuilleter les tutos du net pour avoir des débuts de code et rajouter le if du temps rtc et l’humidite Du sol ... mais comme dis plus haut je n’ai pas de pompe pour des testes :/ pour le débit je pense que chaque pompe auras son réglage a faire et selon le tuyau utilisé aussi .... voili voilou merci les loulous de rajouter du taff , et de quoi débattre un temps sois peu a ce thread Lien à poster Partager sur d’autres sites
keteki 116 Posté(e) février 24, 2018 Partager Posté(e) février 24, 2018 Re, il y a 52 minutes, Omgprod a dit: Révéler le contenu masqué Yop keteki ! merci beaucoup mais je fais avec ce que je trouve surtout , on se depatouille commme on peux ! je ne te tiens pas pour responsable et dans l'obligation de mettre en fonction mes divagations Plus sérieusement mon idée était de balancer quelques idée pour ce donner des pistes de réflexions. Je suis parfaitement incapable actuellement de mettre en "code" les idées que j'émet. Mais je compte mi mettre... Oui jme doute que que la prise en charge sur plusieurs jours dois poser un pb de mémoire, c'est plus facile (+léger en code je présume)avec une valeur mini est un capteur. Oui celon la config d'irrigation et la pompe les debit/temps d'arrosage seront très variable. Et doivent être testé pour mesurer leur débit en situation. Bonne prog!! A+ Respect humain Lien à poster Partager sur d’autres sites
Omgprod 80 Posté(e) février 24, 2018 Auteur Partager Posté(e) février 24, 2018 Bonjour humain a un humain @keteki ne me tiens pas pour responsable , mais c’est sur mon thread et faut bien que je m’occupe Puis l’idee reste intéressante , puis pour une fois sa débat un petit peu mais avant ça je me suis rendu compte que j’ai fail a un endroit ... avec la lib dailyTimer la lampe s’allume mais ne s’eteint Plus , faut que je cherche ou j’ai foiré , ou ce qui ne vas pas ... j’ai un doute sur la vielle lib RTC ... Spoiler la lampe est allumé , il est 1h44 alors que dans les réglages c’est Sur 5h00 a 23h00 1 Lien à poster Partager sur d’autres sites
tizi59 17 Posté(e) février 26, 2018 Partager Posté(e) février 26, 2018 (modifié) Le 24/02/2018 à 13:32, Omgprod a dit: mais avant ça je me suis rendu compte que j’ai fail a un endroit ... avec la lib dailyTimer la lampe s’allume mais ne s’eteint Plus , faut que je cherche ou j’ai foiré , ou ce qui ne vas pas ... j’ai un doute sur la vielle lib RTC ... Révéler le contenu masqué la lampe est allumé , il est 1h44 alors que dans les réglages c’est Sur 5h00 a 23h00 salut ! dommage fait voir le code que tu utilise si tu veux bien a++ Modifié février 26, 2018 par tizi59 Lien à poster Partager sur d’autres sites
Omgprod 80 Posté(e) février 26, 2018 Auteur Partager Posté(e) février 26, 2018 Plop @tizi59 !! Merci d'étre repassé et de vouloir me dépanne J'ai un poil avancé j'arrive a allumé et éteindre la lampe , mais je dois mal régler l'heure actuelle en minute , ou un problème RTC de la vielle lib ds1307 , mais je pense que cela proviens de moi Spoiler tout le code des includes a la partit croissance //----------------- Declaration des Include & ecran ----------------\\ #include <SPI.h> #include <Ethernet.h> #include <LiquidCrystal_I2C.h> #include <Wire.h> #include <Arduino.h> #include <DS1307.h> #include <DHT.h> #include "DailyTimer.h" #define DHTTYPE DHT22 #define PotPIN A0 #define DHTPIN A1 DHT dht(DHTPIN, DHTTYPE); LiquidCrystal_I2C lcd(0x3F, 20, 4); #define CROISSANCE 0 #define FLORAISON 1 #define SECHAGE 2 #define LAMPE_PIN 7 DailyTimer LAMPE(LAMPE_PIN); //------------- PIN DHT , Ne pas changer les bouttons --------------\\ const int bp1 = 1; const int bp2 = 2; const int bp3 = 3; int buttonState1 = 0; int buttonState2 = 0; int buttonState3 = 0; int sol = 0; //------------------- Declaration des PIN Arduino ------------------\\ int extracteur2 = 10; int extracteur = 10; int hydro = 11; int brasseur = 12; int lampe = 9; int chauffage = 8; int minut; int heure; int seconde; int date; int mois; int annee; int temps_perso; //------------- Reglage Temperature , Hygro , Extracteur ------------\\ float chauffage_on = 23.00; //Temp Chauff float chauffage_off = 24.00; //Temp Chauff int hydro_on = 20; //VALEUR EN CRO int hydro_off = 80; //VALEUR EN CRO int hydro_on_flo = 20; //VALEUR EN FLO int hydro_off_flo = 60; //VALEUR EN FLO int hydro_on_flo2 = 20; //VALEUR EN fin FLO int hydro_off_flo2 = 50; //VALEUR EN fin FLO float extracteur_on = 70.00; float extracteur_off = 15.00; float extracteur2_on = 70.00; float extracteur2_off = 15.00; int lampe_on_flo = 500; int lampe_off_flo = 1700; //------------- Creation de Caractere pour LCD -----------------\\ byte COEUR[8] = { B00000, B00000, B01010, B11111, B11111, B01110, B00100, B00000 }; byte ROND[8] = { B11111, B10001, B10001, B10001, B10001, B10001, B11111, }; /* byte ROND[8] = { B11111, B10001, B10101, B10101, B10101, B10001, B11111, }; */ byte CARRE[8] = { B11111, B10001, B11011, B10101, B11011, B10001, B11111, }; byte CEL[8] = { B00010, B00101, B00010, B00000, B00000, B00000, B00000, }; byte CANNA[8] = { B00100, B10101, B10101, B01100, B11111, B01110, B10101, }; byte GOUTTE[8] = { B00100, B00100, B01010, B01010, B10001, B10001, B01110, }; byte TEMP[8] = { B00100, B01010, B01010, B01110, B11111, B11111, B01110, }; byte AMPOULE[8] = { B01110, B10001, B10001, B10001, B01010, B01010, B01110, }; int rond = 0; int carre = 3; int cel = 2; int coeur = 1; int canna = 4; int goutte = 5; int temp = 6; int ampoule = 7; // TEST // fin TEST //------------- Fin des declaration , debut Partit SETUP ------------\\ void setup() { /* Reglage de la pile ! Decomenter et recommenter ! RTC.stop(); RTC.set(DS1307_SEC,00); //Reglage secondes RTC.set(DS1307_MIN,06); //Reglage minutes RTC.set(DS1307_HR,01); //Reglage heures RTC.set(DS1307_DOW,2); //Reglage jour de la semaine RTC.set(DS1307_DATE,20); //Reglage date RTC.set(DS1307_MTH,02); //Reglage mois RTC.set(DS1307_YR,18); //Reglage année RTC.start(); */ pinMode(bp1, INPUT); pinMode(bp2, INPUT); pinMode(bp3, INPUT); pinMode(chauffage, OUTPUT); pinMode(lampe, OUTPUT); pinMode(brasseur, OUTPUT); pinMode(hydro, OUTPUT); pinMode(extracteur, OUTPUT); pinMode(extracteur2, OUTPUT); digitalWrite(LAMPE_PIN, LOW); digitalWrite(chauffage, LOW); digitalWrite(lampe, LOW); digitalWrite(brasseur, LOW); digitalWrite(hydro, LOW); digitalWrite(extracteur, LOW); digitalWrite(extracteur2, LOW); lcd.createChar(coeur, COEUR); lcd.createChar(carre, CARRE); lcd.createChar(rond, ROND); lcd.createChar(cel, CEL); lcd.createChar(temp, TEMP); lcd.createChar(canna, CANNA); lcd.createChar(goutte, GOUTTE); lcd.createChar(ampoule, AMPOULE); LAMPE.setValue(GROW_START,00,00); // 05:00 LAMPE.setValue(GROW_STOP ,18,00); // 23:00 LAMPE.setValue(FLO_START ,11,20); // 11:20 LAMPE.setValue(FLO_STOP ,23,20); // 23:20 dht.begin(); lcd.init(); lcd.backlight(); lcd.print(" GrowMyBox Bitch's "); lcd.setCursor(0, 1); lcd.print(" Thank's to "); lcd.setCursor(0, 2); lcd.print(" Windaube & Gen "); lcd.setCursor(0, 3); lcd.write(byte(canna)); lcd.setCursor(2, 3); lcd.print("OMGPROD Edition "); lcd.write(byte(canna)); delay(3000); lcd.clear(); } void loop() { lcd.createChar(coeur, COEUR); lcd.createChar(carre, CARRE); lcd.createChar(rond, ROND); lcd.createChar(cel, CEL); lcd.createChar(temp, TEMP); lcd.createChar(canna, CANNA); lcd.createChar(goutte, GOUTTE); lcd.createChar(ampoule, AMPOULE); buttonState1 = digitalRead(bp1); buttonState2 = digitalRead(bp2); buttonState3 = digitalRead(bp3); int sol = analogRead(PotPIN); sol = constrain (sol, 485, 1023); sol = map(sol, 485, 1023, 100, 0); if (buttonState1 == LOW && buttonState2 == LOW && buttonState3 == LOW) { lcd.setCursor(0, 0); lcd.print(" Selection du mode :"); lcd.setCursor(0, 1); lcd.print(" [ CROISSANCE ] "); lcd.setCursor(0, 2); lcd.print(" [ FLORAISON ] "); lcd.setCursor(0, 3); lcd.print(" [ FIN FLO ] "); delay(1000); lcd.clear(); } if (buttonState1 == HIGH && buttonState2 == HIGH && buttonState3 == LOW) { lcd.setCursor(0, 0); lcd.print(" Selection du mode :"); lcd.setCursor(0, 1); lcd.print(" [ CROISSANCE ] "); lcd.setCursor(0, 2); lcd.print(" [ FLORAISON ] "); lcd.setCursor(0, 3); lcd.print(" [ FIN FLO ] "); delay(1000); lcd.clear(); } if (buttonState1 == HIGH && buttonState2 == LOW && buttonState3 == HIGH) { lcd.setCursor(0, 0); lcd.print(" Selection du mode :"); lcd.setCursor(0, 1); lcd.print(" [ CROISSANCE ] "); lcd.setCursor(0, 2); lcd.print(" [ FLORAISON ] "); lcd.setCursor(0, 3); lcd.print(" [ FIN FLO ] "); delay(1000); lcd.clear(); } if (buttonState1 == LOW && buttonState2 == HIGH && buttonState3 == HIGH) { lcd.setCursor(0, 0); lcd.print(" Selection du mode :"); lcd.setCursor(0, 1); lcd.print(" [ CROISSANCE ] "); lcd.setCursor(0, 2); lcd.print(" [ FLORAISON ] "); lcd.setCursor(0, 3); lcd.print(" [ FIN FLO ] "); delay(1000); lcd.clear(); } if (buttonState1 == HIGH && buttonState2 == HIGH && buttonState3 == HIGH) { lcd.setCursor(0, 0); lcd.print(" Selection du mode :"); lcd.setCursor(0, 1); lcd.print(" [ CROISSANCE ] "); lcd.setCursor(0, 2); lcd.print(" [ FLORAISON ] "); lcd.setCursor(0, 3); lcd.print(" [ FIN FLO ] "); delay(1000); lcd.clear(); } //------------------------ Partit Croissance ------------------------------ if (buttonState1 == HIGH && buttonState2 == LOW && buttonState3 == LOW) { for (;;) { lcd.createChar(coeur, COEUR); lcd.createChar(carre, CARRE); lcd.createChar(rond, ROND); lcd.createChar(cel, CEL); lcd.createChar(temp, TEMP); lcd.createChar(canna, CANNA); lcd.createChar(goutte, GOUTTE); lcd.createChar(ampoule, AMPOULE); digitalWrite(brasseur, HIGH); digitalWrite(extracteur, HIGH); digitalWrite(extracteur2, HIGH); for (int i = 0; i < 50; i++) // on brasseur { dht.begin(); lcd.init(); for (int i = 0; i < 20; i++) // lcd page 1 { LAMPE.run(31,CROISSANCE); // regler l'heure actuelle en minute heure = RTC.get(DS1307_HR, true); minut = RTC.get(DS1307_MIN, false); seconde = RTC.get(DS1307_SEC, false); date = RTC.get(DS1307_DATE, false); mois = RTC.get(DS1307_MTH, false); annee = RTC.get(DS1307_YR, false); temps_perso = (heure * 100) + minut; //creation temps_perso float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(t) || isnan(h)) { } else { if (t >= chauffage_off) { digitalWrite(chauffage, LOW); } if (t <= chauffage_on) { digitalWrite(chauffage, HIGH); } if (t >= extracteur_on) { digitalWrite(extracteur, HIGH); } if (t <= extracteur_off) { digitalWrite(extracteur, LOW); } if (h <= hydro_off) { digitalWrite(hydro, LOW); } if (h >= hydro_on) { digitalWrite(hydro, HIGH); } if (t >= extracteur2_on) { digitalWrite(extracteur2, HIGH); } if (t <= extracteur2_off) { digitalWrite(extracteur2, LOW); } } // Fin Verif des Temp / Hum / temps pour lampe lcd.setCursor(0, 0); lcd.write(byte(canna)); lcd.print(" [ CROISSANCE ] "); lcd.write(byte(canna)); lcd.setCursor(0, 2); lcd.write(byte(temp)); lcd.print(" "); lcd.print(t); lcd.write(byte(cel)); lcd.print("C"); lcd.setCursor(11, 2); lcd.write(byte(goutte)); lcd.print(" "); lcd.print(h); lcd.print(" %"); lcd.setCursor(10, 3); lcd.print("LAMPE "); if (digitalRead(LAMPE_PIN) == HIGH) { lcd.write(byte(ampoule)); lcd.print(" "); lcd.write(byte(carre)); } else { lcd.write(byte(ampoule)); lcd.print(" "); lcd.write(byte(rond)); } delay(10); lcd.setCursor(0, 3); lcd.print("|"); lcd.setCursor(2, 3); if (heure < 10) { lcd.print("0"); } lcd.print(RTC.get(DS1307_HR, true)); lcd.print("H"); if (minut < 10) { lcd.print("0"); } lcd.print(RTC.get(DS1307_MIN, false)); lcd.print(" "); lcd.setCursor(8, 3); lcd.print("|"); } delay(3000); lcd.clear(); for (int i = 0; i < 10; i++) // lcd pages 2 { //Recuperer l'heure du DS1307 heure = RTC.get(DS1307_HR, true); minut = RTC.get(DS1307_MIN, false); seconde = RTC.get(DS1307_SEC, false); date = RTC.get(DS1307_DATE, false); mois = RTC.get(DS1307_MTH, false); annee = RTC.get(DS1307_YR, false); temps_perso = (heure * 100) + minut; //creation temps_perso float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(t) || isnan(h)) { } else { if (t >= chauffage_off) { digitalWrite(chauffage, LOW); } if (t <= chauffage_on) { digitalWrite(chauffage, HIGH); } if (t >= extracteur_on) { digitalWrite(extracteur, HIGH); } if (t <= extracteur_off) { digitalWrite(extracteur, LOW); } if (h <= hydro_off) { digitalWrite(hydro, LOW); } if (h >= hydro_on) { digitalWrite(hydro, HIGH); } if (t > extracteur2_on) { digitalWrite(extracteur2, HIGH); } if (t < extracteur2_off) { digitalWrite(extracteur2, LOW); } } lcd.setCursor(9, 2); lcd.print("| EXTRA "); if (digitalRead(extracteur) == HIGH) { lcd.write(byte(carre)); } else { lcd.write(byte(rond)); } lcd.setCursor(9, 3); lcd.print("| INTRA "); if (digitalRead(extracteur2) == HIGH) { lcd.write(byte(carre)); } else { lcd.write(byte(rond)); } lcd.setCursor(9, 1); lcd.print("| POMPE "); if (digitalRead(chauffage) == HIGH) { lcd.write(byte(carre)); } else { lcd.write(byte(rond)); } lcd.setCursor(0, 1); lcd.print("CHAUF "); if (digitalRead(chauffage) == HIGH) { lcd.write(byte(carre)); } else { lcd.write(byte(rond)); } lcd.setCursor(0, 2); lcd.print("HYDRO "); if (digitalRead(hydro) == HIGH) { lcd.write(byte(carre)); } else { lcd.write(byte(rond)); } lcd.setCursor(0, 3); lcd.print("BRASS "); if (digitalRead(brasseur) == HIGH) { lcd.write(byte(carre)); } else { lcd.write(byte(rond)); } lcd.setCursor(0, 0); lcd.write(byte(goutte)); lcd.print(" SUBSTRACT "); lcd.write(byte(goutte)); lcd.print(" = "); lcd.print(sol); lcd.print("%"); delay(10); } delay(3000); lcd.clear(); } digitalWrite(brasseur, HIGH); for (int i = 0; i < 50; i++) // OFF brasseur { dht.begin(); lcd.init(); for (int i = 0; i < 20; i++) // lcd page 1 { // debut du texte a modif de A a Z //Recuperer l'heure du DS1307 heure = RTC.get(DS1307_HR, true); minut = RTC.get(DS1307_MIN, false); seconde = RTC.get(DS1307_SEC, false); date = RTC.get(DS1307_DATE, false); mois = RTC.get(DS1307_MTH, false); annee = RTC.get(DS1307_YR, false); temps_perso = (heure * 100) + minut; //creation temps_perso float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(t) || isnan(h)) { } else { if (t >= chauffage_off) { digitalWrite(chauffage, LOW); } if (t <= chauffage_on) { digitalWrite(chauffage, HIGH); } if (t >= extracteur_on) { digitalWrite(extracteur, HIGH); } if (t <= extracteur_off) { digitalWrite(extracteur, LOW); } if (h >= hydro_off) { digitalWrite(hydro, LOW); } if (h <= hydro_on) { digitalWrite(hydro, HIGH); } if (t >= extracteur2_on) { digitalWrite(extracteur2, HIGH); } if (t <= extracteur2_off) { digitalWrite(extracteur2, LOW); } } lcd.setCursor(0, 0); lcd.write(byte(canna)); lcd.print(" [ CROISSANCE ] "); lcd.write(byte(canna)); lcd.setCursor(0, 2); lcd.write(byte(temp)); lcd.print(" "); lcd.print(t); lcd.write(byte(cel)); lcd.print("C"); lcd.setCursor(11, 2); lcd.write(byte(goutte)); lcd.print(" "); lcd.print(h); lcd.print(" %"); lcd.setCursor(10, 3); lcd.print("LAMPE "); if (digitalRead(LAMPE_PIN) == HIGH) { lcd.write(byte(ampoule)); lcd.print(" "); lcd.write(byte(carre)); } else { lcd.write(byte(ampoule)); lcd.print(" "); lcd.write(byte(rond)); } delay(10); lcd.setCursor(0, 3); lcd.print("|"); lcd.setCursor(2, 3); if (heure < 10) { lcd.print("0"); } lcd.print(RTC.get(DS1307_HR, true)); lcd.print("H"); if (minut < 10) { lcd.print("0"); } lcd.print(RTC.get(DS1307_MIN, false)); lcd.print(" "); lcd.setCursor(8, 3); lcd.print("|"); } delay(3000); lcd.clear(); for (int i = 0; i < 10; i++) // lcd pages 2 { heure = RTC.get(DS1307_HR, true); minut = RTC.get(DS1307_MIN, false); seconde = RTC.get(DS1307_SEC, false); date = RTC.get(DS1307_DATE, false); mois = RTC.get(DS1307_MTH, false); annee = RTC.get(DS1307_YR, false); temps_perso = (heure * 100) + minut; //creation temps_perso float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(t) || isnan(h)) { } else { if (t >= chauffage_off) { digitalWrite(chauffage, LOW); } if (t <= chauffage_on) { digitalWrite(chauffage, HIGH); } if (t >= extracteur_on) { digitalWrite(extracteur, HIGH); } if (t <= extracteur_off) { digitalWrite(extracteur, LOW); } if (h >= hydro_off) { digitalWrite(hydro, LOW); } if (h <= hydro_on) { digitalWrite(hydro, HIGH); } if (t >= extracteur2_on) { digitalWrite(extracteur2, HIGH); } if (t <= extracteur2_off) { digitalWrite(extracteur2, LOW); } } lcd.setCursor(9, 2); lcd.print("| EXTRA "); if (digitalRead(extracteur) == HIGH) { lcd.write(byte(carre)); } else { lcd.write(byte(rond)); } lcd.setCursor(9, 3); lcd.print("| INTRA "); if (digitalRead(extracteur2) == HIGH) { lcd.write(byte(carre)); } else { lcd.write(byte(rond)); } lcd.setCursor(9, 1); lcd.print("| POMPE "); if (digitalRead(chauffage) == HIGH) { lcd.write(byte(carre)); } else { lcd.write(byte(rond)); } lcd.setCursor(0, 1); lcd.print("CHAUF "); if (digitalRead(chauffage) == HIGH) { lcd.write(byte(carre)); } else { lcd.write(byte(rond)); } lcd.setCursor(0, 2); lcd.print("HYDRO "); if (digitalRead(hydro) == HIGH) { lcd.write(byte(carre)); } else { lcd.write(byte(rond)); } lcd.setCursor(0, 3); lcd.print("BRASS "); if (digitalRead(brasseur) == HIGH) { lcd.write(byte(carre)); } else { lcd.write(byte(rond)); } lcd.setCursor(0, 0); lcd.write(byte(goutte)); lcd.print(" SUBSTRACT "); lcd.write(byte(goutte)); lcd.print(" = "); lcd.print(sol); lcd.print("%"); delay(10); } delay(3000); lcd.clear(); } } } Du temps j'ai ré-organiser l'affichage , tout recentré Spoiler je vais remplacer le VENTI par POMPE peut être , dés que je pourrais teste ça #define WATERPIN 2 #define READSOILPIN A0 // higher number is more dry #define MAXDRYNESS 700 #define WATERDELAY 750 #define WATERPOSTDELAY 5000 void setup() { Serial.begin(9600); pinMode(READSOILPIN, INPUT); pinMode(WATERPIN, OUTPUT); } void loop() { int SensorValue = analogRead(READSOILPIN); //take a sample Serial.print(SensorValue); Serial.print(" - "); if(SensorValue >= MAXDRYNESS) { // if the soil is too dry start watering for 3/4 a second then // wait for 5 seconds before monitoring again Serial.println("Soil dry start watering"); digitalWrite(WATERPIN, HIGH); delay(WATERDELAY); digitalWrite(WATERPIN, LOW); delay(WATERPOSTDELAY); } delay(50); } c'est très simplifier , mais c'est déjà une base @frenchiemaan , @keteki Je te remercie encore tizi de jeter un coup d'oeil la dessus Lien à poster Partager sur d’autres sites
Gen 2 808 Posté(e) février 26, 2018 Partager Posté(e) février 26, 2018 (modifié) Yop.. J'ai essayé je vous jure, j'ai essayé.. mais non je peux pas Ce code n'est pas structuré, il n'y a pas de découpage de code, pas de fonctions, pas d'appel.. Et c'est bourré d'erreurs int extracteur2 = 10; int extracteur = 10; la création des chars perso se fait dans le setup et non dans le loop void loop() { lcd.createChar(coeur, COEUR); lcd.createChar(carre, CARRE); lcd.createChar(rond, ROND); lcd.createChar(cel, CEL); lcd.createChar(temp, TEMP); lcd.createChar(canna, CANNA); lcd.createChar(goutte, GOUTTE); lcd.createChar(ampoule, AMPOULE); Bref ! Il n'y a pas que la syntaxe et la sémantique à revoir, mais des process ne sont pas efficients Je vais essayer de trouver le temps de vous pondre un code structuré ++ GEN Modifié février 26, 2018 par Gen 1 Lien à poster Partager sur d’autres sites
Omgprod 80 Posté(e) février 26, 2018 Auteur Partager Posté(e) février 26, 2018 Spoiler il y a 52 minutes, Gen a dit: Yop.. J'ai essayé je vous jure, j'ai essayé.. mais non je peux pas Ce code n'est pas structuré, il n'y a pas de découpage de code, pas de fonctions, pas d'appel.. Et c'est bourré d'erreurs int extracteur2 = 10; int extracteur = 10; la création des chars perso se fait dans le setup et non dans le loop void loop() { lcd.createChar(coeur, COEUR); lcd.createChar(carre, CARRE); lcd.createChar(rond, ROND); lcd.createChar(cel, CEL); lcd.createChar(temp, TEMP); lcd.createChar(canna, CANNA); lcd.createChar(goutte, GOUTTE); lcd.createChar(ampoule, AMPOULE); Bref ! Il n'y a pas que la syntaxe et la sémantique à revoir, mais des process ne sont pas efficients Je vais essayer de trouver le temps de vous pondre un code structuré ++ GEN Merci d’être passé par la @Gen ! Je tiens a te rappeler que je ne suis pas un coddeur , que je ne suis en aucun cas diplômé , que je fais ça pour le plaisir et que j'apprend par plaisir .. Je sais bien que je fais beaucoup d'erreurs , mais c'est comme ça que l'on apprend , non ? ( il y a moins d' un mois de ça je ne savais même pas téléverser sur l'IDE d'arduino ) La partie intéressante de ton message c'est celle pour les chars perso , et encore tu n'explique pas vraiment pourquoi on ne place pas de chars dans le loop ( même si j'ai deviné pourquoi pour le coup ) pour les extracteurs je l'ai réglé comme ça vu que mon premier boitier n'avait que 4 prises au début ( c'est vrai que j'aurais pu simplement supprimé extracteur 2 ) mais comme dit dans le premier thread de ce post : http://prntscr.com/ijyhwq ( je ne sais pas si tu avais fait gaffe ) Donc je suis désolé de te faire mal aux yeux avec tout ce code remplis d'erreurs mais j'apprend petit a petit . Lien à poster Partager sur d’autres sites
Messages recommandés