From 5f97df2ab9831de1fd1da8f7990377c8a9ccec3e Mon Sep 17 00:00:00 2001 From: Fisch Date: Sun, 10 Feb 2019 21:13:37 +0100 Subject: [PATCH] add hardware button --- LEDstoffroehre.ino | 51 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 46 insertions(+), 5 deletions(-) diff --git a/LEDstoffroehre.ino b/LEDstoffroehre.ino index 6d7834d..40d9d28 100644 --- a/LEDstoffroehre.ino +++ b/LEDstoffroehre.ino @@ -11,6 +11,9 @@ #define PIN_LAMP1 D8 #define PIN_SENSOR D0 +#define PIN_BUTTON0 D2 +#define PIN_BUTTON1 D3 + //#define FULL 255 //#define LOWER 50 //#define MINIMUM 1 @@ -56,8 +59,8 @@ int tempincreasemax1=10; //the higher the faster lightup #define FLASHPROBABILITY_MAX 600 #define FLASHPROBABILITYMIN_MIN 50 #define FLASHPROBABILITYMIN_MAX 100 //should not be more than FLASHPROBABILITY_MIN -#define TEMPINCREASEMAX_MIN 5 -#define TEMPINCREASEMAX_MAX FLUORESCENTTEMPMAX/10 +#define TEMPINCREASEMAX_MIN 1 +#define TEMPINCREASEMAX_MAX FLUORESCENTTEMPMAX/5 bool lastSensorValue = false; @@ -66,6 +69,9 @@ HomieNode lightNode("lamp", "lamp"); HomieNode sensorNode("sensor", "sensor"); Bounce debouncer = Bounce(); +Bounce debouncer_btn0 = Bounce(); +Bounce debouncer_btn1 = Bounce(); + bool fluorescentHandler(const HomieRange& range, const String& value) { @@ -88,6 +94,10 @@ bool fluorescentHandler(const HomieRange& range, const String& value) { return true; } bool fluorescent0Handler(const HomieRange& range, const String& value) { + return fluorescent0Handler_change(value); +} + +bool fluorescent0Handler_change(String value){ Homie.getLogger() << "fluorescent0 " << ": " << value << endl; lightNode.setProperty("fluorescent0").send(value); setbrightness0 = value.toInt(); @@ -103,6 +113,9 @@ bool fluorescent0Handler(const HomieRange& range, const String& value) { return true; } bool fluorescent1Handler(const HomieRange& range, const String& value) { + return fluorescent1Handler_change(value); +} +bool fluorescent1Handler_change(String value){ Homie.getLogger() << "fluorescent1 " << ": " << value << endl; lightNode.setProperty("fluorescent1").send(value); setbrightness1 = value.toInt(); @@ -137,10 +150,10 @@ void resetLamp1(){ float speedpercent=fluorescent1Quality*1.0/FLUORESCENQUALITYMAX; flashprobability1=random(FLASHPROBABILITY_MIN,FLASHPROBABILITY_MAX); flashprobabilitymin1=random(FLASHPROBABILITYMIN_MIN,FLASHPROBABILITYMIN_MAX); - tempincreasemax0=TEMPINCREASEMAX_MIN+speedpercent*(TEMPINCREASEMAX_MAX-TEMPINCREASEMAX_MIN); + tempincreasemax1=TEMPINCREASEMAX_MIN+speedpercent*(TEMPINCREASEMAX_MAX-TEMPINCREASEMAX_MIN); } -bool fluorescentAgeHandler(const HomieRange& range, const String& value) { +bool fluorescentQualityHandler(const HomieRange& range, const String& value) { Homie.getLogger() << "fluorescentAge " << ": " << value << endl; fluorescent0Quality = constrain(value.toInt(),0,FLUORESCENQUALITYMAX); fluorescent1Quality = constrain(value.toInt(),0,FLUORESCENQUALITYMAX); @@ -283,6 +296,24 @@ void loopHandler() lastSensorValue = sensorValue; } + bool btn0 = debouncer_btn0.read(); + bool btn1 = debouncer_btn1.read(); + + if (!btn0){ + if (setbrightness0==0){ + fluorescent0Handler_change("255"); + }else{ + fluorescent0Handler_change("0"); + } + } + if (!btn1){ + if (setbrightness1==0){ + fluorescent1Handler_change("255"); + }else{ + fluorescent1Handler_change("0"); + } + } + } void setup() { @@ -294,6 +325,12 @@ void setup() { pinMode(PIN_LAMP1_EDGE, OUTPUT); pinMode(PIN_LAMP1, OUTPUT); + + debouncer_btn0.attach(PIN_BUTTON0, INPUT_PULLUP); + debouncer_btn0.interval(50); + debouncer_btn1.attach(PIN_BUTTON1, INPUT_PULLUP); + debouncer_btn1.interval(50); + debouncer.attach(PIN_SENSOR, INPUT); debouncer.interval(50); @@ -306,7 +343,7 @@ void setup() { lightNode.advertise("lamp0").settable(lamp0Handler); lightNode.advertise("lamp1").settable(lamp1Handler); lightNode.advertise("fluorescent").settable(fluorescentHandler); - lightNode.advertise("fluorescentage").settable(fluorescentAgeHandler); + lightNode.advertise("fluorescentquality").settable(fluorescentQualityHandler); lightNode.advertise("fluorescent0").settable(fluorescent0Handler); lightNode.advertise("fluorescent0Quality").settable(fluorescent0QualityHandler); lightNode.advertise("fluorescent1").settable(fluorescent1Handler); @@ -329,5 +366,9 @@ void setup() { void loop() { Homie.loop(); debouncer.update(); + debouncer_btn0.update(); + debouncer_btn1.update(); ArduinoOTA.handle(); + + }