diff --git a/lib/treppe/treppe.cpp b/lib/treppe/treppe.cpp index ab53270..4ef455a 100644 --- a/lib/treppe/treppe.cpp +++ b/lib/treppe/treppe.cpp @@ -210,17 +210,13 @@ void Treppe::print_state_on_change() void Treppe::task() { //Serial.printf("LDR: %f\n", ((float)analogRead(A0))/1023.*3.68); + fsm_inputs.ldr_schwelle = true; // <=== LDR implementierung !! - if (finish) - { - direction = switch_direction; - state = switch_state; - } - - fsm_inputs.ldr_schwelle = true; fsm_inputs.sensor_oben = read_sensor(SENSOR_OBEN); fsm_inputs.sensor_unten = read_sensor(SENSOR_UNTEN); fsm_inputs.anim_beendet = static_cast(finish); + if(finish) // flanke nach finished reicht ? + finish = false; FSMTreppe_Obj.setExternalInputs(&fsm_inputs); FSMTreppe_Obj.step(); @@ -230,12 +226,13 @@ void Treppe::task() direction = fsm_outputs.laufrichtung; state = fsm_outputs.dimmrichtung; + if(fsm_outputs.status > ST_INAKTIV_LDR) { + ledsequence(); + } // setTick(ticks_treppe); // setAnAus(1); // setDirection(0); // setState(0); - - ledsequence(); } uint16_t Treppe::setIdle(uint16_t _idle_brightness) diff --git a/lib/treppe/treppe.h b/lib/treppe/treppe.h index b1b643c..c2c9864 100644 --- a/lib/treppe/treppe.h +++ b/lib/treppe/treppe.h @@ -11,11 +11,10 @@ class Treppe { private: - uint8_t stairs; uint16_t time_per_stair = 300; // dimmtime per stair [ms] - uint16_t idle_brightness = 100; - uint16_t active_brightness = 300; + uint16_t idle_brightness = 0; + uint16_t active_brightness = 500; uint8_t direction = 0; uint8_t switch_direction = 0; @@ -39,11 +38,16 @@ private: FSMTreppeModelClass::ExtU_FSMTreppe_T fsm_inputs; FSMTreppeModelClass::ExtY_FSMTreppe_T fsm_outputs; void print_state_on_change(); - - const uint8_t FSMTreppe_IN_animation_down = 1U; - const uint8_t FSMTreppe_IN_animation_up = 2U; - const uint8_t FSMTreppe_IN_idle = 3U; - + enum fsm_status_t { + ST_INAKTIV_LDR =0, + ST_RUHEZUSTAND =1, + ST_AUFDIMMEN_HOCH =2, + ST_WARTEN_HOCH =3, + ST_ABDIMMEN_HOCH =4, + ST_AUFDIMMEN_RUNTER =5, + ST_WARTEN_RUNTER =6, + ST_ABDIMMEN_RUNTER =7 + }; uint8_t softstart_led(uint8_t led, uint16_t startval, uint16_t stopval); void ledsequence();