firmware - add FAN2 PWM setting
This commit is contained in:
parent
61c7af5eb5
commit
5df2d0f4ab
6 changed files with 39 additions and 10 deletions
|
@ -64,6 +64,7 @@ void setup() {
|
||||||
//pinMode(PINdht, INPUT);
|
//pinMode(PINdht, INPUT);
|
||||||
pinMode(PINwaterlevel, OUTPUT);
|
pinMode(PINwaterlevel, OUTPUT);
|
||||||
pinMode(PINsoilmoisture, OUTPUT);
|
pinMode(PINsoilmoisture, OUTPUT);
|
||||||
|
pinMode(PinFAN2, OUTPUT);
|
||||||
|
|
||||||
pinMode(PinWIPE, OUTPUT);
|
pinMode(PinWIPE, OUTPUT);
|
||||||
// set all OUTPUT to low
|
// set all OUTPUT to low
|
||||||
|
@ -76,6 +77,8 @@ void setup() {
|
||||||
// except PINsoilmoisture
|
// except PINsoilmoisture
|
||||||
// PINsoilmoisture is always HIGH and gets LOW in moment of waterlevel measurement
|
// PINsoilmoisture is always HIGH and gets LOW in moment of waterlevel measurement
|
||||||
digitalWrite(PINsoilmoisture, HIGH);
|
digitalWrite(PINsoilmoisture, HIGH);
|
||||||
|
// set FAN2 to off with digitalWrite LOW
|
||||||
|
analogWrite(PinFAN2, PinFAN2PWM);
|
||||||
|
|
||||||
// set PWM frequency to 13.37KHz
|
// set PWM frequency to 13.37KHz
|
||||||
analogWriteFreq(13370);
|
analogWriteFreq(13370);
|
||||||
|
|
|
@ -141,8 +141,9 @@ byte SunriseHour = 7;
|
||||||
byte SunriseMinute = 0;
|
byte SunriseMinute = 0;
|
||||||
// PinLEDPWM - contains the PWM value for dimming the grow light
|
// PinLEDPWM - contains the PWM value for dimming the grow light
|
||||||
// default is 255 to ensure it is just on for the case UseLEDrelais is true
|
// default is 255 to ensure it is just on for the case UseLEDrelais is true
|
||||||
byte PinLEDPWM = 255;
|
byte PinLEDPWM = 0;
|
||||||
byte PinFANPWM = 255;
|
byte PinFANPWM = 0;
|
||||||
|
byte PinFAN2PWM = 0;
|
||||||
|
|
||||||
// fade in and out sunrise and sunset?
|
// fade in and out sunrise and sunset?
|
||||||
bool SunFade;
|
bool SunFade;
|
||||||
|
|
|
@ -4,9 +4,9 @@
|
||||||
*
|
*
|
||||||
* D0 - MOSFET Pump
|
* D0 - MOSFET Pump
|
||||||
* D1, D2 - I2C
|
* D1, D2 - I2C
|
||||||
* D3 - DHT11
|
* D3 - Fan2 PWM
|
||||||
* D4 - PinWIPE
|
* D4 - PinWIPE
|
||||||
* D5 - MOSFET Fan
|
* D5 - MOSFET Fan1, PWM
|
||||||
* D6 - MOSFET Grow LED, PWM
|
* D6 - MOSFET Grow LED, PWM
|
||||||
* D7 - waterlevel (set HIGH to read value)
|
* D7 - waterlevel (set HIGH to read value)
|
||||||
* D8 - analog soil moisture (set HIGH to read value)
|
* D8 - analog soil moisture (set HIGH to read value)
|
||||||
|
@ -24,6 +24,7 @@ const uint8_t PinPUMP = D0;
|
||||||
// DO NOT PULL D4 DOWN AT WHEN POWERING ON !!! BOOT WILL FAIL
|
// DO NOT PULL D4 DOWN AT WHEN POWERING ON !!! BOOT WILL FAIL
|
||||||
const uint8_t PinWIPE = D4;
|
const uint8_t PinWIPE = D4;
|
||||||
const uint8_t PinFAN = D5;
|
const uint8_t PinFAN = D5;
|
||||||
|
const uint8_t PinFAN2 = D3;
|
||||||
const uint8_t PinLED = D6; //
|
const uint8_t PinLED = D6; //
|
||||||
const uint8_t PINwaterlevel = D7;
|
const uint8_t PINwaterlevel = D7;
|
||||||
const uint8_t PINsoilmoisture = D8;
|
const uint8_t PINsoilmoisture = D8;
|
||||||
|
|
|
@ -110,7 +110,8 @@ bool loadEEPROM() {
|
||||||
* 243 OutputInvert (1 byte)
|
* 243 OutputInvert (1 byte)
|
||||||
* 244 SoilmoistureWet (2 byte)
|
* 244 SoilmoistureWet (2 byte)
|
||||||
* 246 SoilmoistureDry (2 byte)
|
* 246 SoilmoistureDry (2 byte)
|
||||||
* 248 ...
|
* 248 PinFAN2PWM (1 byte)
|
||||||
|
* 249 ...
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -220,6 +221,8 @@ bool loadEEPROM() {
|
||||||
EEPROM.get(241, PumpIntervalVeg);
|
EEPROM.get(241, PumpIntervalVeg);
|
||||||
// size is 1 byte
|
// size is 1 byte
|
||||||
EEPROM.get(242, PumpIntervalBloom);
|
EEPROM.get(242, PumpIntervalBloom);
|
||||||
|
// size is 1 byte
|
||||||
|
EEPROM.get(248, PinFAN2PWM);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -290,6 +293,8 @@ bool loadEEPROM() {
|
||||||
Serial.println(PinLEDPWM);
|
Serial.println(PinLEDPWM);
|
||||||
Serial.print("PinFANPWM: ");
|
Serial.print("PinFANPWM: ");
|
||||||
Serial.println(PinFANPWM);
|
Serial.println(PinFANPWM);
|
||||||
|
Serial.print("PinFAN2PWM: ");
|
||||||
|
Serial.println(PinFAN2PWM);
|
||||||
Serial.print("SunFade: ");
|
Serial.print("SunFade: ");
|
||||||
Serial.println(SunFade);
|
Serial.println(SunFade);
|
||||||
Serial.print("SunFadeDuration: ");
|
Serial.print("SunFadeDuration: ");
|
||||||
|
@ -417,6 +422,7 @@ void setOutput(byte Output, byte OutputState) {
|
||||||
* 1 - LED
|
* 1 - LED
|
||||||
* 2 - FAN
|
* 2 - FAN
|
||||||
* 3 - PUMP
|
* 3 - PUMP
|
||||||
|
* 4 - FAN2
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
bool UseRelais = true;
|
bool UseRelais = true;
|
||||||
|
@ -444,6 +450,10 @@ void setOutput(byte Output, byte OutputState) {
|
||||||
case 3:
|
case 3:
|
||||||
OutputPin = PinPUMP;
|
OutputPin = PinPUMP;
|
||||||
break;
|
break;
|
||||||
|
case 4:
|
||||||
|
OutputPin = PinFAN2;
|
||||||
|
UseRelais = false;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
//~ Serial.print("Output: ");
|
//~ Serial.print("Output: ");
|
||||||
|
@ -467,7 +477,9 @@ void setOutput(byte Output, byte OutputState) {
|
||||||
}
|
}
|
||||||
digitalWrite(OutputPin, OutputState_tmp);
|
digitalWrite(OutputPin, OutputState_tmp);
|
||||||
} else {
|
} else {
|
||||||
if(OutputInvert == true) {
|
// when OutputInvert is set true AND output is not Fan2, invert
|
||||||
|
// for the 4-pin Fan PWM we dont need to invert, this could
|
||||||
|
if( (OutputInvert == true) && (OutputPin != PinFAN2) ) {
|
||||||
OutputState_tmp = 255 - OutputState;
|
OutputState_tmp = 255 - OutputState;
|
||||||
} else {
|
} else {
|
||||||
OutputState_tmp = OutputState;
|
OutputState_tmp = OutputState;
|
||||||
|
@ -785,6 +797,9 @@ void controlPUMP() {
|
||||||
|
|
||||||
|
|
||||||
void controlFAN() {
|
void controlFAN() {
|
||||||
setOutput(2, PinFANPWM); //inverted pwm
|
// FAN1
|
||||||
|
setOutput(2, PinFANPWM);
|
||||||
|
// FAN2
|
||||||
|
setOutput(4, PinFAN2PWM);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* CanGrow_Version.h gets generated from cangrow.sh */
|
/* CanGrow_Version.h gets generated from cangrow.sh */
|
||||||
|
|
||||||
const char* CanGrowVer = "0.1-dev";
|
const char* CanGrowVer = "0.1-dev";
|
||||||
const char* CanGrowBuild = "d782cae-20241205044935";
|
const char* CanGrowBuild = "61c7af5-20241208140924";
|
||||||
|
|
||||||
|
|
|
@ -509,16 +509,20 @@ void WEBgrowSettings() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if(UseFANrelais == false) {
|
if(UseFANrelais == false) {
|
||||||
body += "FAN speed: <input type='range' id='PinFANPWM' name='PinFANPWM' min='0' max='255' value='";
|
body += "FAN1 speed: <input type='range' id='PinFANPWM' name='PinFANPWM' min='0' max='255' value='";
|
||||||
body += PinFANPWM;
|
body += PinFANPWM;
|
||||||
body += "'/> %<br>\n";
|
body += "'/> %<br>\n";
|
||||||
} else {
|
} else {
|
||||||
body += "FAN on/off: <select id='PinFANPWM' name='PinFANPWM' required>\n";
|
body += "FAN1 on/off: <select id='PinFANPWM' name='PinFANPWM' required>\n";
|
||||||
body += "<option value='1'" + returnStrSelected(PinFANPWM, 1) + ">On</option>\n";
|
body += "<option value='1'" + returnStrSelected(PinFANPWM, 1) + ">On</option>\n";
|
||||||
body += "<option value='0'" + returnStrSelected(PinFANPWM, 0) + ">Off</option>\n";
|
body += "<option value='0'" + returnStrSelected(PinFANPWM, 0) + ">Off</option>\n";
|
||||||
body += "</select><br>\n";
|
body += "</select><br>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body += "FAN2 speed: <input type='range' id='PinFAN2PWM' name='PinFAN2PWM' min='0' max='255' value='";
|
||||||
|
body += PinFAN2PWM;
|
||||||
|
body += "'/> %<br>\n";
|
||||||
|
|
||||||
|
|
||||||
body += "Pump interval vegetation: every <input class='inputShort' type='number' name='PumpIntervalVeg' min='0' max='255' value='";
|
body += "Pump interval vegetation: every <input class='inputShort' type='number' name='PumpIntervalVeg' min='0' max='255' value='";
|
||||||
body += PumpIntervalVeg;
|
body += PumpIntervalVeg;
|
||||||
|
@ -773,6 +777,7 @@ void POSTgrowSettings() {
|
||||||
|
|
||||||
PinLEDPWM = webserver.arg("PinLEDPWM").toInt();
|
PinLEDPWM = webserver.arg("PinLEDPWM").toInt();
|
||||||
PinFANPWM = webserver.arg("PinFANPWM").toInt();
|
PinFANPWM = webserver.arg("PinFANPWM").toInt();
|
||||||
|
PinFAN2PWM = webserver.arg("PinFAN2PWM").toInt();
|
||||||
String GrowName_tmp = webserver.arg("GrowName");
|
String GrowName_tmp = webserver.arg("GrowName");
|
||||||
GrowName_tmp.toCharArray(GrowName, 32);
|
GrowName_tmp.toCharArray(GrowName, 32);
|
||||||
|
|
||||||
|
@ -809,6 +814,8 @@ void POSTgrowSettings() {
|
||||||
EEPROM.put(213, PinLEDPWM);
|
EEPROM.put(213, PinLEDPWM);
|
||||||
// size is 1 byte
|
// size is 1 byte
|
||||||
EEPROM.put(216, PinFANPWM);
|
EEPROM.put(216, PinFANPWM);
|
||||||
|
// size is 1 byte
|
||||||
|
EEPROM.put(248, PinFAN2PWM);
|
||||||
EEPROM.put(217, SunFade);
|
EEPROM.put(217, SunFade);
|
||||||
EEPROM.put(218, SunFadeDuration);
|
EEPROM.put(218, SunFadeDuration);
|
||||||
// size is 1 byte
|
// size is 1 byte
|
||||||
|
@ -845,6 +852,8 @@ void POSTgrowSettings() {
|
||||||
Serial.println(PinLEDPWM);
|
Serial.println(PinLEDPWM);
|
||||||
Serial.print("PinFANPWM: ");
|
Serial.print("PinFANPWM: ");
|
||||||
Serial.println(PinFANPWM);
|
Serial.println(PinFANPWM);
|
||||||
|
Serial.print("PinFAN2PWM: ");
|
||||||
|
Serial.println(PinFAN2PWM);
|
||||||
|
|
||||||
webserver.sendHeader("Location", String("/growSettings?success"), true);
|
webserver.sendHeader("Location", String("/growSettings?success"), true);
|
||||||
webserver.send(302, "text/plain", "growSettings/save: success!\n");
|
webserver.send(302, "text/plain", "growSettings/save: success!\n");
|
||||||
|
|
Loading…
Reference in a new issue