Irrigation Controller (up to 16 valves with Shift Registers)
-
Well, that's not the point.
I will have 4 zones that need different type of water needs. For example one zone will be with micro irrigation watering, another one with lawn sprinkler. i do not understand why not to start all zones at once and they will finish according to the time set and not to start one after other. Another thing is why to wait for a zone to finish when you trigger another one.To start all valve at once when is trigger all zones i did change:
else if (state == RUN_ALL_ZONES) { if (lastValve != valveNumber) { for (byte i = 0; i <= NUMBER_OF_VALVES; i++) { if (i == 0 || i == valveNumber) { gw.send(msg1valve.setSensor(i).set(true), false); } else { gw.send(msg1valve.setSensor(i).set(false), false); } } } lastValve = valveNumber; fastToggleLed(); if (state != lastState) { valveNumber = 1; updateRelays(ALL_VALVES_OFF); DEBUG_PRINTLN(F("State Changed, Running All Zones...")); } unsigned long nowMillis = millis(); if (nowMillis - startMillis < VALVE_RESET_TIME) { updateRelays(ALL_VALVES_OFF); } else if (nowMillis - startMillis < (allZoneTime[valveNumber] * 60000UL)) { updateRelays(BITSHIFT_VALVE_NUMBER); } elsewith
else if (state == RUN_ALL_ZONES) { if (lastValve != valveNumber) { for (byte i = 0; i <= NUMBER_OF_VALVES; i++) { if (i == 0 || i == valveNumber) { gw.send(msg1valve.setSensor(i).set(true), false); } else { gw.send(msg1valve.setSensor(i).set(true), false); //to update domoticz } } } lastValve = valveNumber; fastToggleLed(); if (state != lastState) { valveNumber = 1; updateRelays(ALL_VALVES_OFF); DEBUG_PRINTLN(F("State Changed, Running All Zones...")); } unsigned long nowMillis = millis(); if (nowMillis - startMillis < VALVE_RESET_TIME) { updateRelays(0); //all outputs will be on } else if (nowMillis - startMillis < (allZoneTime[valveNumber] * 60000UL)) { updateRelays(BITSHIFT_VALVE_NUMBER); } else@rechin304 said:
Well, that's not the point.
I will have 4 zones that need different type of water needs. For example one zone will be with micro irrigation watering, another one with lawn sprinkler. i do not understand why not to start all zones at once and they wi finish according to the time set and not to start one after other. Another thing is why to wait for a zone to finish when you trigger another one.I see your point an understand your questions. The purpose of zone cycling is to be able to have enough pressure in each zone independently while also having pressure for household use. Drawing water to every zone (in my case 9) makes the pressure so low, there may not be enough to open the individual pop-up valves, much less fill the washing machine.
The wait period (which you may set) is there to allow the time for hydraulic actuation of solenoid valves. These types of valves close slowly, and since they are in a manifold, the next valve to start opens faster if the water pressure at the manifold is allowed time to reach normal static pressure.
The beauty of open source is that you get to do it your way. If you have the pressure to run all your valves at the same time, with enough to spare to take a shower, then you are fortunate!
So, did you add another 'switch' to your controller to send the all zone command?
-
@rechin304 said:
{ updateRelays(0); //all outputs will be on }I did this so all relays on is ok now.
What i miss is to start individual zones more than once at a time :). -
Hi I just finished building my first project in arduino ( this one) but the code is too large now for the arduino memory its 32748 bytes could you please share with me the older version of the code / libraries to run it in code bender ?
-
Hi I just finished building my first project in arduino ( this one) but the code is too large now for the arduino memory its 32748 bytes could you please share with me the older version of the code / libraries to run it in code bender ?
@David-Mora's question was double-posted. See https://forum.mysensors.org/topic/3921/code-grew-larger-dan-promini/ for the other thread.
-
Hi I just finished building my first project in arduino ( this one) but the code is too large now for the arduino memory its 32748 bytes could you please share with me the older version of the code / libraries to run it in code bender ?
@David-Mora I responded to your comment on the YouTube video but I'll respond here as well just in case people are reading this thread instead.
This is probably because debug is enabled in the MyConfig.h file. Please comment out this line: #define DEBUG
Make sure to save the .h file then recompile the Arduino code. It should be around 25,342 bytes. -
Hi Pete thank you very much, I am using mysensors online editor , not sure if I should edit that code?

-
It's not possible to disable this from codebender. You'll need to install the Arduino IDE onto your computer.
@hek in computer I get this:
C:\Program Files (x86)\Arduino\libraries\LiquidCrystal\I2CIO.cpp:35:26: fatal error: ../Wire/Wire.h: No such file or directory#include <../Wire/Wire.h>
^compilation terminated.
exit status 1
Error compilación en tarjeta Arduino Pro or Pro Mini. -
@hek in computer I get this:
C:\Program Files (x86)\Arduino\libraries\LiquidCrystal\I2CIO.cpp:35:26: fatal error: ../Wire/Wire.h: No such file or directory#include <../Wire/Wire.h>
^compilation terminated.
exit status 1
Error compilación en tarjeta Arduino Pro or Pro Mini.@David-Mora Maybe this will help:
https://www.youtube.com/watch?v=qUey_X9n2KI -
thank you for your help ! I just reinstaled arduino and now I getthis ( I just downloaded the I.5 and copy and paste all libraries in the libraries folder:
TENCIÓN: Categoría '' en librería UIPEthernet no es válida. Configurando a 'Uncategorized'
C:\Users\David\Desktop\IrrigationController\IrrigationController.ino:92:31: fatal error: LiquidCrystal_I2C.h: No such file or directory#include <LiquidCrystal_I2C.h>
^compilation terminated.
exit status 1
Error compilación en tarjeta Arduino Pro or Pro Mini.
-
thank you for your help ! I just reinstaled arduino and now I getthis ( I just downloaded the I.5 and copy and paste all libraries in the libraries folder:
TENCIÓN: Categoría '' en librería UIPEthernet no es válida. Configurando a 'Uncategorized'
C:\Users\David\Desktop\IrrigationController\IrrigationController.ino:92:31: fatal error: LiquidCrystal_I2C.h: No such file or directory#include <LiquidCrystal_I2C.h>
^compilation terminated.
exit status 1
Error compilación en tarjeta Arduino Pro or Pro Mini.
@David-Mora quite sad I´ve spent two days now installing and uninstalling arduino and libraries and no luck
-
@David-Mora quite sad I´ve spent two days now installing and uninstalling arduino and libraries and no luck
-
@David-Mora Did you close all instances of Arduino and open again after you added the LiquidCrystal library? It looks like it can't find it.
@petewill Yes Pete it doesnt work at all
-
@petewill Yes Pete it doesnt work at all
@David-Mora hope this is the right way to post the code finally the only mistake is
Arduino:1.6.9 (Windows 7), Tarjeta:"Arduino Pro or Pro Mini, ATmega328 (5V, 16 MHz)"El Sketch usa 30,808 bytes (100%) del espacio de almacenamiento de programa. El máximo es 30,720 bytes.
Las variables Globales usan 1,329 bytes (64%) de la memoria dinámica, dejando 719 bytes para las variables locales. El máximo es 2,048 bytes.
processing.app.debug.RunnerException: Programa muy grando: visite http://www.arduino.cc/en/Guide/Troubleshooting#size para ver cómo reducirlo.
at cc.arduino.Compiler.size(Compiler.java:315)
at cc.arduino.Compiler.build(Compiler.java:156)
at processing.app.Sketch.build(Sketch.java:1111)
at processing.app.Sketch.build(Sketch.java:1081)
at processing.app.Editor$BuildHandler.run(Editor.java:1988)
at java.lang.Thread.run(Thread.java:745)
Programa muy grando: visite http://www.arduino.cc/en/Guide/Troubleshooting#size para ver cómo reducirlo.
Tarjeta en COM4 no disponibleEste reporte podría tener más información con
"Mostrar salida detallada durante la compilación"
opción habilitada en Archivo -> Preferencias. -
@David-Mora hope this is the right way to post the code finally the only mistake is
Arduino:1.6.9 (Windows 7), Tarjeta:"Arduino Pro or Pro Mini, ATmega328 (5V, 16 MHz)"El Sketch usa 30,808 bytes (100%) del espacio de almacenamiento de programa. El máximo es 30,720 bytes.
Las variables Globales usan 1,329 bytes (64%) de la memoria dinámica, dejando 719 bytes para las variables locales. El máximo es 2,048 bytes.
processing.app.debug.RunnerException: Programa muy grando: visite http://www.arduino.cc/en/Guide/Troubleshooting#size para ver cómo reducirlo.
at cc.arduino.Compiler.size(Compiler.java:315)
at cc.arduino.Compiler.build(Compiler.java:156)
at processing.app.Sketch.build(Sketch.java:1111)
at processing.app.Sketch.build(Sketch.java:1081)
at processing.app.Editor$BuildHandler.run(Editor.java:1988)
at java.lang.Thread.run(Thread.java:745)
Programa muy grando: visite http://www.arduino.cc/en/Guide/Troubleshooting#size para ver cómo reducirlo.
Tarjeta en COM4 no disponibleEste reporte podría tener más información con
"Mostrar salida detallada durante la compilación"
opción habilitada en Archivo -> Preferencias.@David-Mora Looks like you are almost there!
Did you disable debug? The sketch looks too big. To disable go to the MySensors library and open the MyConfig.h file in Notepad and change this line:
#define DEBUGto
//#define DEBUGAlso, it looks like the Arduino IDE programmer isn't finding your Pro Mini. Did you select the correct Board and Port from the Tools menu? I don't have an Arduino next to me so my port isn't available to select but it should look similar to this (except you would choose your Port the Arduino is connected to):
-
On my controller i use diffren LCD library and i was commented out this line
//#include <LiquidCrystal_I2C.h> and //LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address to 0x27Sketch uses 27,916 bytes (90%) of program storage space. Maximum is 30,720 bytes.
Global variables use 1,295 bytes (63%) of dynamic memory, leaving 753 bytes for local variables. Maximum is 2,048 bytes. -
Is there a way to use domoticz to connect with it and on/off this irrigation system? How to achive this?
My domoticz is running on raspberry pi 0.
Yes, i've had to manually set the valve runtimes on the ardunio code, because its not possible to pass the runtime variable etc, this is from the one i''ve got built. runtime is 1min, but you can edit as required.
else if (message.type == V_VAR1) { int variable1 = 60000; // atoi(message.data);// RUN_ALL_ZONES time DEBUG_PRINT(F("Recieved variable1 valve:")); DEBUG_PRINT(i); DEBUG_PRINT(F(" = ")); DEBUG_PRINTLN(variable1); if (variable1 != allZoneTime[i]) { allZoneTime[i] = variable1; zoneTimeUpdate = true; } } else if (message.type == V_VAR2) { int variable2 = 60000; //atoi(message.data);// RUN_SINGLE_ZONE time DEBUG_PRINT(F("Recieved variable2 valve:")); DEBUG_PRINT(i); DEBUG_PRINT(F(" = ")); DEBUG_PRINTLN(variable2); if (variable2 != valveSoloTime[i]) { valveSoloTime[i] = variable2; zoneTimeUpdate = true; } } -
Thanks for posting, Mark. I was getting nuts figuring out what was the problem with my controller that was only activating 1sec each phase. I didn't implement it because that problem.
