Kor fade out

This commit is contained in:
2021-02-14 16:46:12 +03:00
parent e1948d3615
commit df47c18ed3
2 changed files with 23 additions and 7 deletions

View File

@@ -16,5 +16,5 @@ monitor_speed = 115200
lib_deps = lib_deps =
MySensors @ ^2.3.2 MySensors @ ^2.3.2
wifwaf/MH-Z19 @ ^1.5.3 wifwaf/MH-Z19 @ ^1.5.3
enjoyneering/AHT10 @ ^1.1.0 enjoyneering/HTU21D @ ^1.2.1
featherfly/SoftwareSerial @ ^1.0 featherfly/SoftwareSerial @ ^1.0

View File

@@ -23,7 +23,7 @@
#include <SoftwareSerial.h> #include <SoftwareSerial.h>
unsigned long cRun; unsigned long cRun;
int cSec, adc, move, oldmov, minLight, minLightDB, LightInt, timeDelay, curDelay; int cSec, adc, move, oldmov, minLight, minLightDB, LightInt, timeDelay, curDelay, fadeTime;
uint8_t sdsPeriod; uint8_t sdsPeriod;
bool lamp; bool lamp;
//float avgL; //float avgL;
@@ -67,6 +67,7 @@ void setup()
LightInt = (loadState(4) << 8) + loadState(5); LightInt = (loadState(4) << 8) + loadState(5);
sdsPeriod = loadState(6); sdsPeriod = loadState(6);
timeDelay = (loadState(8) << 8) + loadState(9); timeDelay = (loadState(8) << 8) + loadState(9);
fadeTime = (loadState(10) << 8) + loadState(11);
curDelay = -1; curDelay = -1;
Serial.print(F("Min Light"));Serial.println(minLight); Serial.print(F("Min Light"));Serial.println(minLight);
Serial.print(F("Min LightDB"));Serial.println(minLightDB); Serial.print(F("Min LightDB"));Serial.println(minLightDB);
@@ -96,6 +97,7 @@ void presentation()
void loop() void loop()
{ {
float p25, p10; float p25, p10;
uint32_t curTime;
//move = digitalRead(A1); //move = digitalRead(A1);
if(digitalRead(A1) > 0){ if(digitalRead(A1) > 0){
@@ -125,7 +127,8 @@ void loop()
} }
} }
else if((adc > (minLight + minLightDB)) || (move == 0)){ else if((adc > (minLight + minLightDB)) || (move == 0)){
analogWrite(LAMP_OUT, 0); //analogWrite(LAMP_OUT, 0);
curDelay = 2;
if(lamp == true){ if(lamp == true){
Serial.println("Lamp OFF"); Serial.println("Lamp OFF");
Serial.print("ADC: ");Serial.print(adc); Serial.print("ADC: ");Serial.print(adc);
@@ -136,6 +139,7 @@ void loop()
sendData(msgLamp, false); sendData(msgLamp, false);
//send(msgLamp.set(false)); //send(msgLamp.set(false));
lamp = false; lamp = false;
curTime = millis() + fadeTime * 1000 ;
} }
} }
if(cRun + 999 < millis()){ if(cRun + 999 < millis()){
@@ -146,28 +150,33 @@ void loop()
curDelay = -1; curDelay = -1;
} }
if(curDelay > 0) curDelay--; if(curDelay > 0) curDelay--;
if(curDelay == 1) curTime = cRun + fadeTime * 1000;
int error = sds.read(&p25, &p10); int error = sds.read(&p25, &p10);
//Serial.print("ADC: ");Serial.print(adc);Serial.print(", Move: ");Serial.println(move);
if (!error) { if (!error) {
Serial.println(millis()/1000); Serial.println(millis()/1000);
Serial.println("P2.5: " + String(p25)); Serial.println("P2.5: " + String(p25));
Serial.println("P10: " + String(p10)); Serial.println("P10: " + String(p10));
sendData(msgHum25, p25); sendData(msgHum25, p25);
//send(msgHum25.set(p25, 1));
wait(100); wait(100);
sendData(msgHum10, p10); sendData(msgHum10, p10);
//send(msgHum10.set(p10, 1));
} }
if (++cSec > 19){ if (++cSec > 19){
cSec = 0; cSec = 0;
wait(100); wait(100);
sendData(msgLightLev, adc); sendData(msgLightLev, adc);
//send(msgLightLev.set(adc));
wait(100); wait(100);
uint32_t ms = millis(); uint32_t ms = millis();
send(msgMillis.set(ms)); send(msgMillis.set(ms));
} }
} }
if(lamp && curTime > millis()){
uint8_t ll = int(LightInt - LightInt * (1 - curTime - millis() / float(fadeTime * 1000)));
analogWrite(LAMP_OUT, ll);
if(curTime - millis() < 10){
lamp = false;
analogWrite(LAMP_OUT, 0);
}
}
} }
void receive(const MyMessage &message) void receive(const MyMessage &message)
@@ -207,6 +216,13 @@ void receive(const MyMessage &message)
Serial.print("time period:"); Serial.print("time period:");
Serial.println(timeDelay); Serial.println(timeDelay);
} }
if((message.sensor == 5) && (message.type == V_VAR3)){
fadeTime = message.getInt();
saveState(10, (fadeTime>>8) & 0xFF);
saveState(11, fadeTime & 0xFF);
Serial.print("fade period:");
Serial.println(fadeTime);
}
} }
////////////////// sends work mode command to SDS011 ////////////////////// ////////////////// sends work mode command to SDS011 //////////////////////