Gen 2 808 Posté(e) avril 12, 2016 Partager Posté(e) avril 12, 2016 (modifié) Salut les arduinoteurs. Voici une nouvelle classe qui permet très facilement de piloter un brumisateur. Ce process fonctionne par hystérésis, afin d'éviter les sollicitations intempestives et vous pouvez y introduite les valeurs d'humidité (min et max) pour la croissance ou la flo mais également pour le jour ou pour la nuit. le fonctionnement est basé sur les données récupérées d'un DHT 22 (je déconseille les DHT11, moins précis) Dans cette classe, j'utilise un pointeur sur l'objet dht, ce qui vous évite de devoir implémenter du code et vous offre un degré d'abstraction plus élevé exemple du code principal // MistControl.ino #include "DHT.h" #include "MistControler.h" #define DHT_PIN 8 #define MISTMAKER_PIN 9 #define DHTTYPE DHT22 DHT dht(DHT_PIN, DHTTYPE); MistControler brumi(&dht,MISTMAKER_PIN); void initialiseObjets() { brumi.initialise( GROW_DAY_MIN, 50); brumi.initialise( GROW_DAY_MAX, 70); brumi.initialise( GROW_NIGHT_MIN, 40); brumi.initialise( GROW_NIGHT_MAX, 55); brumi.initialise( FLO_DAY_MIN, 30); brumi.initialise( FLO_DAY_MAX, 50); brumi.initialise( FLO_NIGHT_MIN, 30); brumi.initialise( FLO_NIGHT_MAX, 40); } void setup() { dht.begin(); initialiseObjets(); } void loop() { //exemple : bool jour = true; bool nuit = false; bool croissance = true; bool floraison = false; // remplacez les valeurs booléennes par vos variables de programme brumi.run(nuit, croissance); // si je desire modifier une valeur en cours de process // pour faire passer par exemple la valeur de 70% HR à 60% HR pour GROW_DAY_MIN // brumi.setValue(GROW_DAY_MIN,60); // pour arrêter le brumisateur si nécessaire // brumi.stop(); } Voici l'archive contenant l'exemple et les librairies Vous pouvez instancier grâce à cette classe la gestion de plusieurs brumisateurs pointant sur un même ou sur plusieurs dht.. MistControl.zip N-Joy Et Komdab, si vous avez des questions n'hésitez pas.. ++ GEN Modifié avril 12, 2016 par Gen 4 Lien à poster Partager sur d’autres sites
joebartoon 0 Posté(e) avril 12, 2016 Partager Posté(e) avril 12, 2016 Bonsoir GEN, Comme tu le sais tu m'aide grandement dans ma tâche avec toutes ces classes. Merci! Lien à poster Partager sur d’autres sites
rotavap' 0 Posté(e) avril 22, 2016 Partager Posté(e) avril 22, 2016 Encore un super outil que tu nous met à disposition, merci pour le partage ! Lien à poster Partager sur d’autres sites
kannapwet 293 Posté(e) octobre 10, 2016 Partager Posté(e) octobre 10, 2016 Merci beaucoup Gen ! Lien à poster Partager sur d’autres sites
tizi59 17 Posté(e) janvier 17, 2018 Partager Posté(e) janvier 17, 2018 (modifié) salut et merci pour la classe gen j'ais un soucis avec mon code j'essaye d'utiliser le classe mistcontroler mais quand je sélectionne le mode flow le programme utilise les valeurs grow et inversement désolé pour le code il y certainement des choses inutile. quelqu'un pourrait m'aider s'il vous plait merci d'avance #include "DHT.h" #include <LiquidCrystal_I2C.h> #include <Wire.h> #include "RTClib.h" #include "MistControler.h" #include "DailyTimer.h" #include "CyclicTimer.h" LiquidCrystal_I2C lcd(0x3F,20,4); #define DHT_PIN 8 #define DHTTYPE DHT22 DHT dht(DHT_PIN, DHTTYPE); RTC_DS3231 RTC; DateTime now; #define AERO_PUMP1_PIN 11 CyclicTimer aero1(AERO_PUMP1_PIN); #define COB_PIN 10 DailyTimer COB(COB_PIN); #define MISTMAKER_PIN 13 MistControler brumi(&dht,MISTMAKER_PIN); #define bp1_PIN 2 //reset #define bp2_PIN A2 #define EXTRA1_PIN 3 //gestion temperature #define EXTRA2_PIN 4 #define EXTRA3_PIN 5 #define EXTRA4_PIN 6 int tmin=100; int tmax=0; int hmin=100; int hmax=0; int growingMode; bool croissance = true; bool floraison = false; // fonction qui te permet de recupérer le nombre de minutes écoulées depuis minuit. int getTimeInMinutes(DateTime currentTime) { return ((currentTime.hour() * 60) + currentTime.minute()); } String TabEvt2 [6][5] = { {"VENTI ON","VENT OFF","","",""}, {"BRUMI ON","BRUM OFF","","",""}, {"FAP V1","FAP V2","FAP V3","FAP V4",""}, {"LIGHTS ON","LIGHTS OFF"," ","",""}, {"INTRA ON","INTR OFF","","",""}, {"FLOW","GROW","","",""}, }; // ° byte degree[8] = {B00110,B01001,B01001,B00110,B00000,B00000, B00000}; // Bottom to top byte maxArrow[8] = {B11111,B00100,B01110,B11111,B00100,B00100,B00100,B00100}; // Top to botton r byte minArrow[8] = {B00100,B00100,B00100,B00100,B11111,B01110,B00100,B11111}; void initialiseObjets() { brumi.initialise( FLO_DAY_MIN, 40); brumi.initialise( FLO_DAY_MAX, 50); brumi.initialise( FLO_NIGHT_MIN, 30); brumi.initialise( FLO_NIGHT_MAX, 40); brumi.initialise( GROW_DAY_MIN, 75); brumi.initialise( GROW_DAY_MAX, 80); brumi.initialise( GROW_NIGHT_MIN, 75); brumi.initialise( GROW_NIGHT_MAX, 80); } void setup() { Serial.begin(9600); dht.begin(); initialiseObjets(); Wire.begin(); RTC.begin(); lcd.begin (20,4); lcd.setBacklight(true); lcd.createChar(0, degree); lcd.createChar(1, minArrow); lcd.createChar(2, maxArrow); //RTC.adjust(DateTime(__DATE__, __TIME__)); pinMode(EXTRA1_PIN, OUTPUT); pinMode(EXTRA2_PIN, OUTPUT); pinMode(EXTRA3_PIN, OUTPUT); pinMode(EXTRA4_PIN, OUTPUT); pinMode(INTRA_PIN, OUTPUT); pinMode(bp1_PIN, OUTPUT); pinMode(bp2_PIN, INPUT); digitalWrite(bp2_PIN, HIGH); COB.setValue(GROW_START,9,6); // 21:00 COB.setValue(GROW_STOP ,15,00); // 15:00 COB.setValue(FLO_START ,11,00); // 11:20 COB.setValue(FLO_STOP ,23,00); // 23:20 aero1.initialise(DAY_DURATION_ON,900); aero1.initialise(DAY_DURATION_OFF,900); aero1.initialise(NIGHT_DURATION_ON,1800); aero1.initialise(NIGHT_DURATION_OFF,1800); } void loop(){ now = RTC.now(); if(digitalRead(A2)==false){growingMode = FLORAISON ; lcd.setCursor(7, 2);lcd.print(TabEvt2[5][0]);} else{growingMode = CROISSANCE; lcd.setCursor(7,2);lcd.print(TabEvt2[5][1]);} float h = dht.readHumidity(); //lecture de l’humidité et affectation à la variable de type « float » float t = dht.readTemperature(); //lecture de la température et affectation à la variable de type // »float » //COB/////////////////////////////// COB.run(getTimeInMinutes(now),growingMode); //brumisateur****************************************************************************** brumi.run(growingMode, COB.isWorking()); //ventilation****************************************************************************** aero1.run(now.unixtime(), COB.isWorking()); //gestion extra if (t >= 26) {digitalWrite(6, true);digitalWrite(5, true);digitalWrite(4, false);digitalWrite(3, false);lcd.setCursor(0,2);lcd.print(TabEvt2[2][3]);} if ((t >= 24) && (t < 26)) {digitalWrite(6, true);digitalWrite(5, true);digitalWrite(4, true);digitalWrite(3, false);lcd.setCursor(0, 2);lcd.print(TabEvt2[2][2]);} if ((t >= 22) && (t < 24)) {digitalWrite(6, true);digitalWrite(5, false);digitalWrite(4, true);digitalWrite(3, false);lcd.setCursor(0, 2);lcd.print(TabEvt2[2][1]);} if (t < 22 ) {digitalWrite(6, true);digitalWrite(5, false);digitalWrite(4, true);digitalWrite(3, true);lcd.setCursor(0, 2);lcd.print(TabEvt2[2][0]);} if (isnan(t) || isnan(h)) { delay(100);} else{ lcd.setCursor(0, 0);lcd.print(t); lcd.setCursor(4,0); lcd.write(byte(0)); lcd.setCursor(5,0); lcd.write(byte(1));lcd.print(tmin); lcd.setCursor(8,0);lcd.write(byte(2));lcd.print(tmax); lcd.setCursor(0, 1);lcd.print(h); lcd.setCursor(4, 1);lcd.print("%"); lcd.setCursor(5,1);lcd.write(byte(1));lcd.print(hmin); lcd.setCursor(8,1);lcd.write(byte(2));lcd.print(hmax);} ///////////////////////////////////// // Afficher l'heure lcd.setCursor(12, 0);if (now.hour() < 10) {lcd.print("0");}lcd.print(now.hour());lcd.print(":"); if (now.minute() < 10) {lcd.print("0");}lcd.print(now.minute());lcd.print(":"); if (now.second() < 10) {lcd.print("0");}lcd.print(now.second());lcd.print(""); ///////////////////////////brumi lcd if(digitalRead(13) == true){lcd.setCursor(12, 3);lcd.print(TabEvt2[1][0]);} else{lcd.setCursor(12, 3);lcd.print(TabEvt2[1][1]); } ///////////////////////////venti lcd if(digitalRead(11) == true){lcd.setCursor(12, 1);lcd.print(TabEvt2[0][0]);} else{lcd.setCursor(12, 1);lcd.print(TabEvt2[0][1]);} ///////////////////////////cob lcd if (digitalRead(10) == true){ lcd.setCursor(0, 3);lcd.print(TabEvt2[3][0]);lcd.print(TabEvt2[3][2]);} else { lcd.setCursor(0, 3);lcd.print(TabEvt2[3][1]);} } Modifié janvier 19, 2018 par tizi59 correction Lien à poster Partager sur d’autres sites
Gen 2 808 Posté(e) janvier 17, 2018 Auteur Partager Posté(e) janvier 17, 2018 (modifié) Salut... Ton code n'est pas bien structuré déjà sans aller plus loin, il y a déjà des incohérences Ex : bool isWorking() n'a rien a faire là, le isWorking() est une méthode de classe qui te renseigne lors de son appel sur le fait que les lampes sont allumées ou non. cala s'utilise ainsi : nomdelobjet.isWorking() te renvoie un booléen Dans l'exemple suivant tu utilises des variables qui servent à rien, met dans le code directement l'appel de la méthode bool jour = true; bool nuit = false; if (COB.isWorking()){dayMode = jour;} else {dayMode = nuit;} Ton instantiation de classe LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7); est fausse, c'est un appel de classe pour LCD qui n'est pas I2c etc.etc.. il y a vraiment bcp d'erreurs dans ce code, fait le ménage, corrige ce que tu peux et ensuite soumet moi le code à nouveau ++ GEN Modifié janvier 17, 2018 par Gen Lien à poster Partager sur d’autres sites
tizi59 17 Posté(e) janvier 17, 2018 Partager Posté(e) janvier 17, 2018 salut et merci gen pour le lcd c'est mieux comme ça ? Il y a 9 heures, Gen a dit: bool isWorking() n'a rien a faire là, le isWorking() est une méthode de classe qui te renseigne lors de son appel sur le fait que les lampes sont allumées ou non. cala s'utilise ainsi : nomdelobjet.isWorking() te renvoie un booléen Dans l'exemple suivant tu utilises des variables qui servent à rien, met dans le code directement l'appel de la méthode bool jour = true; bool nuit = false; if (COB.isWorking()){dayMode = jour;} else {dayMode = nuit;} comme cela ? COB.isWorking() merci Lien à poster Partager sur d’autres sites
Gen 2 808 Posté(e) janvier 18, 2018 Auteur Partager Posté(e) janvier 18, 2018 re: Non, c'est pas mieux une déclaration d'écran LCD en I2c ce fait généralement de cette manière : LiquidCrystal_I2C LCD1(I2C_LCD_ADDRESS,LCDCOLS,LCDROWS); Ce que toi tu fais c'est une défibnition d'un LCD qui n'est pas I2c avec une librairie I2C pour le COB, c'est bon, c'est ainsi que tu remplaceras la variable dayMode Aller, on continue : au lieu de pisser du code, essaie de l'écrire de manière à être réutilisable un peu partout, exemple le formatage des nombres String formatNumberInXdigits(int number, int nbDigit) { String stringNumber = String(number); while(stringNumber.length() < nbDigit) { stringNumber = "0"+stringNumber; } return stringNumber; } valeur renvoyée = une chaine de charactères param1, la valeur param2, la taille au lieu de faire if(truc >=10) ... else.... tu fais display(formatNumberInXdigits(minutes,2)); Aller, tu y retournes et tu me représentes le BB apres modif ++ GEN Lien à poster Partager sur d’autres sites
tizi59 17 Posté(e) janvier 18, 2018 Partager Posté(e) janvier 18, 2018 (modifié) salut et merci gen pour le COB.isWorking() je dois juste l'insérer que cela dans le loop ou alors je dois faire quelque chose comme ça ? if (COB.isWorking()) { brumi.run(growingMode, ???); } else { brumi.run(growingMode, ???); } pour utiliser brumi.run il me faut bien deux variable? LiquidCrystal_I2C lcd(0x3F,20,4); j'avais utilisé cette méthode pour le lcd et il se met a clignoter a+++ Il y a 21 heures, Gen a dit: Modifié janvier 18, 2018 par tizi59 Lien à poster Partager sur d’autres sites
Gen 2 808 Posté(e) janvier 18, 2018 Auteur Partager Posté(e) janvier 18, 2018 (modifié) re nan... hihihihihi Juste brumi.run(growingMode, COB.isWorking()); rien de plus, rien de moins, et pas besoin de if else etc.. concernant ton LCD, file moi une tof de la face arrière ainsi qu'une copie du fichier .h de ta librairie LCD ++ GEN Modifié janvier 18, 2018 par Gen Lien à poster Partager sur d’autres sites
tizi59 17 Posté(e) janvier 18, 2018 Partager Posté(e) janvier 18, 2018 (modifié) merci gen voici la librairie LiquidCrystal_I2C j' ai édité le code et toujours le même soucis. a++ Modifié janvier 18, 2018 par tizi59 Lien à poster Partager sur d’autres sites
Gen 2 808 Posté(e) janvier 18, 2018 Auteur Partager Posté(e) janvier 18, 2018 (modifié) re : Quel souci LOL, pour moi ça ne passe pas la compilation Impossible de télécharger, il faut une identification et un mot de passe Zip le fichier et fout le ici dans un message ou copie/colle le contenu du fichier.h ++ GEN Modifié janvier 18, 2018 par Gen Lien à poster Partager sur d’autres sites
tizi59 17 Posté(e) janvier 18, 2018 Partager Posté(e) janvier 18, 2018 (modifié) le soucis avec le code qui passe la compilation pour le brumi en mode jour le programme utilise les variables de nuit et en mode nuit il utilise les variables jour le fichier .h // --------------------------------------------------------------------------- // Created by Francisco Malpartida on 20/08/11. // Copyright 2011 - Under creative commons license 3.0: // Attribution-ShareAlike CC BY-SA // // This software is furnished "as is", without technical support, and with no // warranty, express or implied, as to its usefulness for any purpose. // // Thread Safe: No // Extendable: Yes // // @file LiquidCrystal_I2C.h // This file implements a basic liquid crystal library that comes as standard // in the Arduino SDK but using an I2C IO extension board. // // @brief // This is a basic implementation of the LiquidCrystal library of the // Arduino SDK. The original library has been reworked in such a way that // this class implements the all methods to command an LCD based // on the Hitachi HD44780 and compatible chipsets using I2C extension // backpacks such as the I2CLCDextraIO with the PCF8574* I2C IO Expander ASIC. // // The functionality provided by this class and its base class is identical // to the original functionality of the Arduino LiquidCrystal library. // // // @author F. Malpartida - fmalpartida@gmail.com // --------------------------------------------------------------------------- #ifndef LiquidCrystal_I2C_h #define LiquidCrystal_I2C_h #include <inttypes.h> #include <Print.h> #include "I2CIO.h" #include "LCD.h" class LiquidCrystal_I2C : public LCD { public: /*! @method @abstract Class constructor. @discussion Initializes class variables and defines the I2C address of the LCD. The constructor does not initialize the LCD. @param lcd_Addr[in] I2C address of the IO expansion module. For I2CLCDextraIO, the address can be configured using the on board jumpers. */ LiquidCrystal_I2C (uint8_t lcd_Addr); // Constructor with backlight control LiquidCrystal_I2C (uint8_t lcd_Addr, uint8_t backlighPin, t_backlighPol pol); /*! @method @abstract Class constructor. @discussion Initializes class variables and defines the I2C address of the LCD. The constructor does not initialize the LCD. @param lcd_Addr[in] I2C address of the IO expansion module. For I2CLCDextraIO, the address can be configured using the on board jumpers. @param En[in] LCD En (Enable) pin connected to the IO extender module @param Rw[in] LCD Rw (Read/write) pin connected to the IO extender module @param Rs[in] LCD Rs (Reset) pin connected to the IO extender module */ LiquidCrystal_I2C( uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs); // Constructor with backlight control LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t backlighPin, t_backlighPol pol); /*! @method @abstract Class constructor. @discussion Initializes class variables and defines the I2C address of the LCD. The constructor does not initialize the LCD. @param lcd_Addr[in] I2C address of the IO expansion module. For I2CLCDextraIO, the address can be configured using the on board jumpers. @param En[in] LCD En (Enable) pin connected to the IO extender module @param Rw[in] LCD Rw (Read/write) pin connected to the IO extender module @param Rs[in] LCD Rs (Reset) pin connected to the IO extender module @param d4[in] LCD data 0 pin map on IO extender module @param d5[in] LCD data 1 pin map on IO extender module @param d6[in] LCD data 2 pin map on IO extender module @param d7[in] LCD data 3 pin map on IO extender module */ LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7 ); // Constructor with backlight control LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t backlighPin, t_backlighPol pol); /*! @function @abstract LCD initialization and associated HW. @discussion Initializes the LCD to a given size (col, row). This methods initializes the LCD, therefore, it MUST be called prior to using any other method from this class or parent class. The begin method can be overloaded if necessary to initialize any HW that is implemented by a library and can't be done during construction, here we use the Wire class. @param cols[in] the number of columns that the display has @param rows[in] the number of rows that the display has @param charsize[in] size of the characters of the LCD: LCD_5x8DOTS or LCD_5x10DOTS. */ virtual void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS); /*! @function @abstract Send a particular value to the LCD. @discussion Sends a particular value to the LCD for writing to the LCD or as an LCD command. Users should never call this method. @param value[in] Value to send to the LCD. @param mode[in] DATA - write to the LCD CGRAM, COMMAND - write a command to the LCD. */ virtual void send(uint8_t value, uint8_t mode); /*! @function @abstract Sets the pin to control the backlight. @discussion Sets the pin in the device to control the backlight. This device doesn't support dimming backlight capability. @param 0: backlight off, 1..255: backlight on. */ void setBacklightPin ( uint8_t value, t_backlighPol pol ); /*! @function @abstract Switch-on/off the LCD backlight. @discussion Switch-on/off the LCD backlight. The setBacklightPin has to be called before setting the backlight for this method to work. @see setBacklightPin. @param value: backlight mode (HIGH|LOW) */ void setBacklight ( uint8_t value ); private: /*! @method @abstract Initializes the LCD class @discussion Initializes the LCD class and IO expansion module. */ int init(); /*! @function @abstract Initialises class private variables @discussion This is the class single point for initialising private variables. @param lcd_Addr[in] I2C address of the IO expansion module. For I2CLCDextraIO, the address can be configured using the on board jumpers. @param En[in] LCD En (Enable) pin connected to the IO extender module @param Rw[in] LCD Rw (Read/write) pin connected to the IO extender module @param Rs[in] LCD Rs (Reset) pin connected to the IO extender module @param d4[in] LCD data 0 pin map on IO extender module @param d5[in] LCD data 1 pin map on IO extender module @param d6[in] LCD data 2 pin map on IO extender module @param d7[in] LCD data 3 pin map on IO extender module */ void config (uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7 ); /*! @method @abstract Writes an 4 bit value to the LCD. @discussion Writes 4 bits (the least significant) to the LCD control data lines. @param value[in] Value to write to the LCD @param more[in] Value to distinguish between command and data. COMMAND == command, DATA == data. */ void write4bits(uint8_t value, uint8_t mode); /*! @method @abstract Pulse the LCD enable line (En). @discussion Sends a pulse of 1 uS to the Enable pin to execute an command or write operation. */ void pulseEnable(uint8_t); uint8_t _Addr; // I2C Address of the IO expander uint8_t _backlightPinMask; // Backlight IO pin mask uint8_t _backlightStsMask; // Backlight status mask I2CIO _i2cio; // I2CIO PCF8574* expansion module driver I2CLCDextraIO uint8_t _En; // LCD expander word for enable pin uint8_t _Rw; // LCD expander word for R/W pin uint8_t _Rs; // LCD expander word for Register Select pin uint8_t _data_pins[4]; // LCD data lines }; #endif Modifié janvier 18, 2018 par tizi59 Lien à poster Partager sur d’autres sites
Gen 2 808 Posté(e) janvier 18, 2018 Auteur Partager Posté(e) janvier 18, 2018 re: Cette librairie date de 2011, il y a eu mieux depuis... LOL Je te conseille de prendre la librairie LiquidCrystal_I2c de l'archive du GrowDuino ou la dernière version récente dans l'environnement arduino. Concernant ton inversion : dans ton code il y a bool croissance = false; bool floraison = true; et dans la classe MistControler croissance est associé à true et floraison à false , voila pourquoi les process sont inversés ++ GEN Lien à poster Partager sur d’autres sites
tizi59 17 Posté(e) janvier 18, 2018 Partager Posté(e) janvier 18, 2018 merci gen je regarderais tout ça demain a +++ et encore merci Lien à poster Partager sur d’autres sites
tizi59 17 Posté(e) janvier 19, 2018 Partager Posté(e) janvier 19, 2018 salut parfait pour le lcd gen ! merci Dans mon code j' ai bien bool croissance = true; bool floraison = false; alors pour revenir sur le problème du brumi comme indiqué en commentaire - en mode floraison COB allumées le prog utilise le paramètre GROW_DAY - en mode croissance COB allumées le prog utilise le paramètre GROW_NIGHT etc... brumi.initialise( GROW_DAY_MIN, 70); // flow on brumi.initialise( GROW_DAY_MAX, 80); brumi.initialise( GROW_NIGHT_MIN, 60) ; //grow on brumi.initialise( GROW_NIGHT_MAX, 70); brumi.initialise( FLO_DAY_MIN, 40); //flow off brumi.initialise( FLO_DAY_MAX, 50); brumi.initialise( FLO_NIGHT_MIN, 30); //grow off brumi.initialise( FLO_NIGHT_MAX, 40); merci pour l'aide a+++ Lien à poster Partager sur d’autres sites
Gen 2 808 Posté(e) janvier 19, 2018 Auteur Partager Posté(e) janvier 19, 2018 re: Dans mon code j' ai bien bool croissance = true; bool floraison = false; Maintenant car ce n'était pas le cas avant .. on ne me la fait pas à moi hihihihih vu que j'avais fait un copier coller de ton code plus haut. Mon, pinpin, c'est à toi de configurer les variables afin que ce soit cohérent entre les classes et le programme fait un trace => Serial.println(de_ton_parametre_qui_merde); pour en connaître sa valeur. et modifier les #define en conséquence. Si tu ne t'en sors pas, je le ferai... Mais ce n'est pas à moi à écrire ton code, je ne suis pas là pour ça. ++ GEN Lien à poster Partager sur d’autres sites
tizi59 17 Posté(e) janvier 20, 2018 Partager Posté(e) janvier 20, 2018 (modifié) salut gen tu parle de ça ? #define GROW_DAY_MIN #define GROW_DAY_MAX #define GROW_NIGHT_MIN #define GROW_NIGHT_MAX #define FLO_DAY_MIN #define FLO_DAY_MAX #define FLO_NIGHT_MIN #define FLO_NIGHT_MAX merci +++ problème corriger en faisant #define GROW_DAY_MIN 2 #define GROW_DAY_MAX 3 #define GROW_NIGHT_MIN 6 #define GROW_NIGHT_MAX 7 #define FLO_DAY_MIN 0 #define FLO_DAY_MAX 1 #define FLO_NIGHT_MIN 4 #define FLO_NIGHT_MAX 5 plutôt que de la mettre dans mon code il ne vaux mieux pas le mettre dans le fichier.h ? Modifié janvier 20, 2018 par tizi59 Lien à poster Partager sur d’autres sites
Gen 2 808 Posté(e) janvier 20, 2018 Auteur Partager Posté(e) janvier 20, 2018 re: C'est déjà dans le fichier h et tu n'y touches pas car c'est le référencement des données dans la structure de stockage Ce qu'il faut modifier c'est les valeurs bool qui détermine si c"'est jour ou nuit et cro ou flo dans l'appel des méthodes de la classe Apparemment tu n'as pas fait un trace comme je te l'ai demandé, sinon tu aurais vu de suite d'où vient le problème.. ++ GEN Lien à poster Partager sur d’autres sites
tizi59 17 Posté(e) janvier 20, 2018 Partager Posté(e) janvier 20, 2018 il y a 18 minutes, Gen a dit: re: C'est déjà dans le fichier h et tu n'y touches pas car c'est le référencement des données dans la structure de stockage Ce qu'il faut modifier c'est les valeurs bool qui détermine si c"'est jour ou nuit et cro ou flo dans l'appel des méthodes de la classe Apparemment tu n'as pas fait un trace comme je te l'ai demandé, sinon tu aurais vu de suite d'où vient le problème.. ++ GEN je suis entrain de faire une recherche google infructueuse concernant cette trace car quand je fais Serial.println(GROW_DAY_MIN); rien ne s'affiche je suppose que je m'y prend mal Lien à poster Partager sur d’autres sites
Messages recommandés