Compare commits
3 Commits
6bb5b67f00
...
33d8d9938e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
33d8d9938e | ||
|
|
27d0dd7a68 | ||
|
|
5fd8c3be40 |
@@ -5,10 +5,7 @@
|
||||
#include "DHT.h"
|
||||
#include <Adafruit_NeoPixel.h>
|
||||
#include <BH1750.h>
|
||||
#include "HomeSpan.h"
|
||||
#include "DEV_LED.h"
|
||||
|
||||
#define Version "0.3.3"
|
||||
#define Version "0.3.4"
|
||||
|
||||
|
||||
|
||||
@@ -45,7 +42,7 @@ const uint8_t ledMap[LED_COUNT] = { 3, 0, 1, 8, 2, 5, 4, 7, 6 };
|
||||
#define WTR_LVL 33 //GPIO33 D33
|
||||
// SDA D21
|
||||
// SCL D22
|
||||
#define DIMM_MAX_VALUE 3 // docelowo 4, tylko na testy
|
||||
#define DIMM_MAX_VALUE 4 //
|
||||
|
||||
//NEO PIXEL ARDESES:
|
||||
#define NEOPXL_MULTIPLIER 25
|
||||
@@ -80,8 +77,8 @@ bool turnOnFlag = true;
|
||||
int8_t resetVal = 0;
|
||||
int8_t fanSpeedVal = 1;
|
||||
int8_t hygrostatVal = 55;
|
||||
int8_t dimmStep = 1;
|
||||
int8_t dimmVal = 1;
|
||||
int8_t dimmStep = 3;
|
||||
int8_t dimmVal ;
|
||||
int8_t waterLvlVal = 0;
|
||||
int8_t photoVal = 0;
|
||||
float temp = 0.0;
|
||||
@@ -106,6 +103,11 @@ int8_t neoPixelWaterLvlR = 1;
|
||||
int8_t neoPixelWaterLvlG = 1;
|
||||
int8_t neoPixelWaterLvlB = 1;
|
||||
int8_t neoPixelTank = 1;
|
||||
uint8_t LastSpdInpt = 0;
|
||||
unsigned long spdInptTimeStamp = 0;
|
||||
int changeSpdDelay = 30000; //interwał zmiany predkości - nie mniej niż wartość milisekund
|
||||
int8_t wtrLvlOff = 0;
|
||||
int8_t nightMode = 0;
|
||||
|
||||
|
||||
|
||||
@@ -121,28 +123,45 @@ void IRAM_ATTR speedButtonFcn() {
|
||||
if (fanSpeedVal >= 3) {
|
||||
fanSpeedVal = 1;
|
||||
}
|
||||
spdInptTimeStamp = millis() - changeSpdDelay;
|
||||
}
|
||||
void IRAM_ATTR hygrostatButtonFcn() {
|
||||
hygrostatVal = hygrostatVal + 5;
|
||||
if (hygrostatVal > 65) {
|
||||
hygrostatVal = 45;
|
||||
}
|
||||
spdInptTimeStamp = millis() - changeSpdDelay;
|
||||
}
|
||||
|
||||
void setFanSpeed(uint8_t spdInpt) {
|
||||
if (spdInpt == 1) {
|
||||
digitalWrite(PIN_SPEED_2, LOW);
|
||||
delay(300);
|
||||
digitalWrite(PIN_SPEED_1, HIGH);
|
||||
} else if (spdInpt == 2) {
|
||||
digitalWrite(PIN_SPEED_1, LOW);
|
||||
delay(300);
|
||||
digitalWrite(PIN_SPEED_2, HIGH);
|
||||
} else {
|
||||
digitalWrite(PIN_SPEED_1, LOW);
|
||||
delay(300);
|
||||
digitalWrite(PIN_SPEED_2, LOW);
|
||||
// if (wtrLvlOff == 1) { dokomentować do testów wody
|
||||
// spdInpt = 0;
|
||||
// }
|
||||
|
||||
if (nightMode == 1 && spdInpt == 2 ){
|
||||
spdInpt = 1;
|
||||
}
|
||||
|
||||
if ( millis() > (spdInptTimeStamp + changeSpdDelay)) {
|
||||
if (LastSpdInpt != spdInpt) {
|
||||
if (spdInpt == 1) {
|
||||
digitalWrite(PIN_SPEED_2, LOW);
|
||||
digitalWrite(PIN_SPEED_1, HIGH);
|
||||
LastSpdInpt = spdInpt;
|
||||
spdInptTimeStamp = millis();
|
||||
} else if (spdInpt == 2) {
|
||||
digitalWrite(PIN_SPEED_1, LOW);
|
||||
digitalWrite(PIN_SPEED_2, HIGH);
|
||||
LastSpdInpt = spdInpt;
|
||||
spdInptTimeStamp = millis();
|
||||
} else {
|
||||
digitalWrite(PIN_SPEED_1, LOW);
|
||||
digitalWrite(PIN_SPEED_2, LOW);
|
||||
LastSpdInpt = spdInpt;
|
||||
spdInptTimeStamp = millis();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void rainbowCycle(uint8_t wait) {
|
||||
@@ -181,7 +200,21 @@ uint32_t Wheel(byte pos) {
|
||||
}
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
Serial.begin(9600);
|
||||
|
||||
pinMode(BTN_RST, INPUT);
|
||||
pinMode(BTN_DIMM, INPUT);
|
||||
pinMode(BTN_SPEED, INPUT);
|
||||
pinMode(BTN_HYGRSTT, INPUT);
|
||||
pinMode(PIN_SPEED_1, OUTPUT);
|
||||
pinMode(PIN_SPEED_2, OUTPUT);
|
||||
digitalWrite(PIN_SPEED_1, LOW);
|
||||
digitalWrite(PIN_SPEED_2, LOW);
|
||||
pinMode(LED_RED_TANK, OUTPUT);
|
||||
pinMode(LED_WHT_TANK, OUTPUT);
|
||||
pinMode(IN_PHOTOTRA, INPUT_PULLDOWN);
|
||||
pinMode(WTR_LVL, INPUT);
|
||||
|
||||
if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
|
||||
Serial.println(F("SSD1306 allocation failed"));
|
||||
}
|
||||
@@ -195,18 +228,6 @@ void setup() {
|
||||
display.println(Version);
|
||||
display.display();
|
||||
|
||||
// delay(500);
|
||||
pinMode(BTN_RST, INPUT);
|
||||
pinMode(BTN_DIMM, INPUT);
|
||||
pinMode(BTN_SPEED, INPUT);
|
||||
pinMode(BTN_HYGRSTT, INPUT);
|
||||
pinMode(PIN_SPEED_1, OUTPUT);
|
||||
pinMode(PIN_SPEED_2, OUTPUT);
|
||||
pinMode(LED_RED_TANK, OUTPUT);
|
||||
pinMode(LED_WHT_TANK, OUTPUT);
|
||||
pinMode(IN_PHOTOTRA, INPUT_PULLDOWN);
|
||||
pinMode(WTR_LVL, INPUT);
|
||||
|
||||
attachInterrupt(digitalPinToInterrupt(BTN_DIMM), dimmButtonFcn, FALLING);
|
||||
attachInterrupt(digitalPinToInterrupt(BTN_SPEED), speedButtonFcn, FALLING);
|
||||
attachInterrupt(digitalPinToInterrupt(BTN_HYGRSTT), hygrostatButtonFcn, FALLING);
|
||||
@@ -225,31 +246,8 @@ void setup() {
|
||||
} else {
|
||||
dimmVal = 24;
|
||||
}
|
||||
// ##### HOME SPAN
|
||||
homeSpan.setPairingCode("11122333");
|
||||
homeSpan.setQRID("111-22-333");
|
||||
// konfiguracja WIFI przez port szerefowy "W<returm"
|
||||
// 1.Płytka ESP32 Dev Module
|
||||
// 2 Partycja: Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)
|
||||
// 3. konfiguracja WIFI przez port szerefowy komenda "W", U - unpair
|
||||
homeSpan.begin(Category::Bridges,"HomeSpan Bridge");
|
||||
|
||||
new SpanAccessory();
|
||||
new Service::AccessoryInformation();
|
||||
new Characteristic::Identify();
|
||||
|
||||
new SpanAccessory();
|
||||
new Service::AccessoryInformation();
|
||||
new Characteristic::Identify();
|
||||
new Characteristic::Name("RGB LED");
|
||||
new DEV_RgbLED();
|
||||
// ##### HOME SPAN END
|
||||
} //setup end
|
||||
|
||||
void loop() {
|
||||
neoPixelRed = int(RedHomeKit/10);
|
||||
neoPixelGreen = int(GreenHomeKit/10);
|
||||
neoPixelBlue = int(BlueHomeKit/10);
|
||||
// ###################################################
|
||||
// WYŚWIETLACZ
|
||||
display.clearDisplay();
|
||||
@@ -367,14 +365,14 @@ void loop() {
|
||||
} else if (dimmStep == 1) {
|
||||
dimmVal = 1;
|
||||
} else if (dimmStep == 2) {
|
||||
dimmVal = 6;
|
||||
dimmVal = 2;
|
||||
} else if (dimmStep == 3) {
|
||||
dimmVal = 12;
|
||||
dimmVal = 4;
|
||||
} else {
|
||||
dimmVal = 24;
|
||||
dimmVal = 8;
|
||||
}
|
||||
|
||||
// Ustawianie LED docelowych wartości
|
||||
// Ustawianie LED docelowych wartości
|
||||
if (hygrostatVal >= 65) {
|
||||
neoPixelLvl_1 = 1;
|
||||
neoPixelLvl_2 = 1;
|
||||
@@ -420,21 +418,21 @@ void loop() {
|
||||
neoPixelLvl_5 = 1;
|
||||
}
|
||||
|
||||
// Ustawianie LED osiągniętych wartości
|
||||
if (hum >= 65 && hygrostatVal >= 65 ) {
|
||||
// Ustawianie LED osiągniętych wartości
|
||||
if (hum >= 65 && hygrostatVal >= 65) {
|
||||
neoPixelLvl_5 = 8;
|
||||
}
|
||||
if (hum >= 60 && hygrostatVal >= 60) {
|
||||
neoPixelLvl_4 = 8;
|
||||
neoPixelLvl_4 = 8;
|
||||
}
|
||||
if (hum >= 55 && hygrostatVal >= 55) {
|
||||
neoPixelLvl_3 = 8;
|
||||
neoPixelLvl_3 = 8;
|
||||
}
|
||||
if (hum >= 50 && hygrostatVal >= 50) {
|
||||
neoPixelLvl_2 = 8;
|
||||
if (hum >= 50 && hygrostatVal >= 50) {
|
||||
neoPixelLvl_2 = 8;
|
||||
}
|
||||
if (hum >= 45 && hygrostatVal >= 45) {
|
||||
neoPixelLvl_1 = 8;
|
||||
neoPixelLvl_1 = 8;
|
||||
}
|
||||
|
||||
// wartości zależne od sposobu zasilania PC/Powerbank/Ładowarka
|
||||
@@ -451,7 +449,7 @@ void loop() {
|
||||
neoPixelWaterLvlB = 0;
|
||||
analogWrite(LED_WHT_TANK, dimmVal * 8);
|
||||
analogWrite(LED_RED_TANK, 0);
|
||||
// tu set fan
|
||||
wtrLvlOff = 1;
|
||||
}
|
||||
if (waterLvlVal < 40 && waterLvlVal >= 25) { //a bit of water TANK
|
||||
neoPixelWaterLvlR = 10;
|
||||
@@ -459,6 +457,8 @@ void loop() {
|
||||
neoPixelWaterLvlB = 0;
|
||||
analogWrite(LED_WHT_TANK, 0);
|
||||
analogWrite(LED_RED_TANK, dimmVal * 8);
|
||||
wtrLvlOff = 0;
|
||||
|
||||
}
|
||||
if (waterLvlVal <= 24) { // FULL TANK
|
||||
neoPixelWaterLvlR = neoPixelRed;
|
||||
@@ -466,7 +466,7 @@ void loop() {
|
||||
neoPixelWaterLvlB = neoPixelBlue;
|
||||
analogWrite(LED_WHT_TANK, 0);
|
||||
analogWrite(LED_RED_TANK, dimmVal * 8);
|
||||
// tu set fan
|
||||
wtrLvlOff = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -478,6 +478,13 @@ void loop() {
|
||||
neoPixelFilter = 1;
|
||||
}
|
||||
|
||||
if ( lux < 0.5 ) {
|
||||
dimmVal = 0;
|
||||
nightMode = 1;
|
||||
} else {
|
||||
nightMode = 0;
|
||||
}
|
||||
|
||||
|
||||
//NEOPIXELS
|
||||
// #################################################################
|
||||
@@ -487,28 +494,13 @@ void loop() {
|
||||
pixels.setPixelColor(ADR_NEOPXL_SPEED_1, pixels.Color(int((neoPixelGreen * dimmVal * neoPixelSwitch * neoPixelSpeed_1) / NON_ACTIVE_LED_DIVIDER), int((neoPixelRed * dimmVal * neoPixelSwitch * neoPixelSpeed_1) / NON_ACTIVE_LED_DIVIDER), int((neoPixelBlue * dimmVal * neoPixelSwitch * neoPixelSpeed_1) / NON_ACTIVE_LED_DIVIDER)));
|
||||
pixels.setPixelColor(ADR_NEOPXL_SPEED_2, pixels.Color(int((neoPixelGreen * dimmVal * neoPixelSwitch * neoPixelSpeed_2) / NON_ACTIVE_LED_DIVIDER), int((neoPixelRed * dimmVal * neoPixelSwitch * neoPixelSpeed_2) / NON_ACTIVE_LED_DIVIDER), int((neoPixelBlue * dimmVal * neoPixelSwitch * neoPixelSpeed_2) / NON_ACTIVE_LED_DIVIDER)));
|
||||
pixels.setPixelColor(ADR_NEOPXL_FILTER, pixels.Color(neoPixelGreen * dimmVal * neoPixelSwitch * neoPixelFilter, neoPixelRed * dimmVal * neoPixelSwitch * neoPixelFilter, neoPixelBlue * dimmVal * neoPixelSwitch * neoPixelFilter));
|
||||
pixels.setPixelColor(ADR_NEOPXL_L1, pixels.Color(int(neoPixelGreen * dimmVal * neoPixelSwitch * neoPixelLvl_1/ NON_ACTIVE_LED_DIVIDER), int(neoPixelRed * dimmVal * neoPixelSwitch * neoPixelLvl_1/ NON_ACTIVE_LED_DIVIDER), int(neoPixelBlue * dimmVal * neoPixelSwitch * neoPixelLvl_1 / NON_ACTIVE_LED_DIVIDER)));
|
||||
pixels.setPixelColor(ADR_NEOPXL_L2, pixels.Color(int(neoPixelGreen * dimmVal * neoPixelSwitch * neoPixelLvl_2/ NON_ACTIVE_LED_DIVIDER), int(neoPixelRed * dimmVal * neoPixelSwitch * neoPixelLvl_2/ NON_ACTIVE_LED_DIVIDER), int(neoPixelBlue * dimmVal * neoPixelSwitch * neoPixelLvl_2 / NON_ACTIVE_LED_DIVIDER)));
|
||||
pixels.setPixelColor(ADR_NEOPXL_L3, pixels.Color(int(neoPixelGreen * dimmVal * neoPixelSwitch * neoPixelLvl_3/ NON_ACTIVE_LED_DIVIDER), int(neoPixelRed * dimmVal * neoPixelSwitch * neoPixelLvl_3/ NON_ACTIVE_LED_DIVIDER), int(neoPixelBlue * dimmVal * neoPixelSwitch * neoPixelLvl_3 / NON_ACTIVE_LED_DIVIDER)));
|
||||
pixels.setPixelColor(ADR_NEOPXL_L4, pixels.Color(int(neoPixelGreen * dimmVal * neoPixelSwitch * neoPixelLvl_4/ NON_ACTIVE_LED_DIVIDER), int(neoPixelRed * dimmVal * neoPixelSwitch * neoPixelLvl_4/ NON_ACTIVE_LED_DIVIDER), int(neoPixelBlue * dimmVal * neoPixelSwitch * neoPixelLvl_4 / NON_ACTIVE_LED_DIVIDER)));
|
||||
pixels.setPixelColor(ADR_NEOPXL_L5, pixels.Color(int(neoPixelGreen * dimmVal * neoPixelSwitch * neoPixelLvl_5/ NON_ACTIVE_LED_DIVIDER), int(neoPixelRed * dimmVal * neoPixelSwitch * neoPixelLvl_5/ NON_ACTIVE_LED_DIVIDER), int(neoPixelBlue * dimmVal * neoPixelSwitch * neoPixelLvl_5 / NON_ACTIVE_LED_DIVIDER)));
|
||||
pixels.setPixelColor(ADR_NEOPXL_L1, pixels.Color(int(neoPixelGreen * dimmVal * neoPixelSwitch * neoPixelLvl_1 / NON_ACTIVE_LED_DIVIDER), int(neoPixelRed * dimmVal * neoPixelSwitch * neoPixelLvl_1 / NON_ACTIVE_LED_DIVIDER), int(neoPixelBlue * dimmVal * neoPixelSwitch * neoPixelLvl_1 / NON_ACTIVE_LED_DIVIDER)));
|
||||
pixels.setPixelColor(ADR_NEOPXL_L2, pixels.Color(int(neoPixelGreen * dimmVal * neoPixelSwitch * neoPixelLvl_2 / NON_ACTIVE_LED_DIVIDER), int(neoPixelRed * dimmVal * neoPixelSwitch * neoPixelLvl_2 / NON_ACTIVE_LED_DIVIDER), int(neoPixelBlue * dimmVal * neoPixelSwitch * neoPixelLvl_2 / NON_ACTIVE_LED_DIVIDER)));
|
||||
pixels.setPixelColor(ADR_NEOPXL_L3, pixels.Color(int(neoPixelGreen * dimmVal * neoPixelSwitch * neoPixelLvl_3 / NON_ACTIVE_LED_DIVIDER), int(neoPixelRed * dimmVal * neoPixelSwitch * neoPixelLvl_3 / NON_ACTIVE_LED_DIVIDER), int(neoPixelBlue * dimmVal * neoPixelSwitch * neoPixelLvl_3 / NON_ACTIVE_LED_DIVIDER)));
|
||||
pixels.setPixelColor(ADR_NEOPXL_L4, pixels.Color(int(neoPixelGreen * dimmVal * neoPixelSwitch * neoPixelLvl_4 / NON_ACTIVE_LED_DIVIDER), int(neoPixelRed * dimmVal * neoPixelSwitch * neoPixelLvl_4 / NON_ACTIVE_LED_DIVIDER), int(neoPixelBlue * dimmVal * neoPixelSwitch * neoPixelLvl_4 / NON_ACTIVE_LED_DIVIDER)));
|
||||
pixels.setPixelColor(ADR_NEOPXL_L5, pixels.Color(int(neoPixelGreen * dimmVal * neoPixelSwitch * neoPixelLvl_5 / NON_ACTIVE_LED_DIVIDER), int(neoPixelRed * dimmVal * neoPixelSwitch * neoPixelLvl_5 / NON_ACTIVE_LED_DIVIDER), int(neoPixelBlue * dimmVal * neoPixelSwitch * neoPixelLvl_5 / NON_ACTIVE_LED_DIVIDER)));
|
||||
pixels.setPixelColor(ADR_NEOPXL_WATERLVL, pixels.Color(dimmVal * neoPixelSwitch * neoPixelWaterLvlG, dimmVal * neoPixelSwitch * neoPixelWaterLvlR, dimmVal * neoPixelSwitch * neoPixelWaterLvlB));
|
||||
// pixels.setPixelColor(ADR_NEOPXL_TANK, pixels.Color(neoPixelGreen*dimmVal*neoPixelSwitch*neoPixelTank, neoPixelRed*dimmVal*neoPixelSwitch*neoPixelTank, neoPixelBlue*dimmVal*neoPixelSwitch*neoPixelTank));
|
||||
pixels.show();
|
||||
// rainbowCycle(10); // im mniejsza liczba, tym szybsza animacja
|
||||
|
||||
homeSpan.poll();
|
||||
Serial.println("---------------------------");
|
||||
Serial.print("R: ");
|
||||
Serial.println(RedHomeKit);
|
||||
Serial.print("G: ");
|
||||
Serial.println(GreenHomeKit);
|
||||
Serial.print("B: ");
|
||||
Serial.println(BlueHomeKit);
|
||||
Serial.print("turnOnFlag: ");
|
||||
Serial.println(turnOnFlag);
|
||||
|
||||
|
||||
delay(500);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user