ESP8266 Treppenlichtsteuerung mit OTA zum Firmware Upload
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

treppe.h 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #pragma once
  2. #include "FSMTreppe2/FSMTreppe2.h"
  3. #include "PCA9685.h"
  4. // #define LDRDEBUG // comment in to override LDR measurement
  5. #define LDR_HYS 5.0 // Hysteresis for switching off FSM [lux]
  6. #define SENSOR_OBEN 16
  7. #define SENSOR_UNTEN 12
  8. #define OE 14
  9. #define INT_TIME 20 // interrupt intervall [ms]
  10. class Treppe {
  11. private:
  12. const uint8_t stufen;
  13. uint16_t time_per_stair = 300; // dimmtime per stair [ms]
  14. uint16_t idle_brightness = 400;
  15. uint16_t active_brightness = 700;
  16. uint16_t ldr_schwelle = 7; // activation value for FSM [lx]
  17. uint16_t start_pwm = 0;
  18. uint16_t ziel_pwm = 0;
  19. bool anim_beendet = true;
  20. uint8_t stufe = 0;
  21. uint16_t current_tick = 0;
  22. float current_pwm = 0.0;
  23. uint16_t ticks_pro_stufe = 0;
  24. float differenz_pwm_pro_tick = 0.0;
  25. // initialize with i2c-Address 0, use Wire Library
  26. PCA9685 pwmController;
  27. FSMTreppeModelClass FSMTreppe_Obj;
  28. FSMTreppeModelClass::ExtU_FSMTreppe_T fsm_inputs;
  29. FSMTreppeModelClass::ExtY_FSMTreppe_T fsm_outputs;
  30. enum fsm_status_t {
  31. ST_INAKTIV_LDR =0,
  32. ST_RUHEZUSTAND =1,
  33. ST_AUFDIMMEN_HOCH =2,
  34. ST_WARTEN_HOCH =3,
  35. ST_ABDIMMEN_HOCH =4,
  36. ST_AUFDIMMEN_RUNTER =5,
  37. ST_WARTEN_RUNTER =6,
  38. ST_ABDIMMEN_RUNTER =7
  39. };
  40. enum fsm_laufrichtung_t {
  41. LR_RUNTER=0,
  42. LR_HOCH=1
  43. };
  44. enum fsm_dimmrichtung_t {
  45. DR_ABDIMMEN=0,
  46. DR_AUFDIMMEN=1
  47. };
  48. /* DIMM */
  49. bool dimm_stufe(uint8_t stufe);
  50. void anim_tick();
  51. void start_animation();
  52. void berechne_dimmer();
  53. void print_state_on_change();
  54. /* LDR */
  55. bool read_sensor(int sensor);
  56. float read_ldr();
  57. bool check_ldr();
  58. public:
  59. Treppe(uint8_t _stufen) : stufen(_stufen){
  60. FSMTreppe_Obj.initialize();
  61. berechne_dimmer();
  62. }
  63. ~Treppe() {
  64. FSMTreppe_Obj.terminate();
  65. }
  66. void setup();
  67. void task(); // call periodically
  68. // Parameter section
  69. void set_idle_pwm(uint16_t _idle_brightness);
  70. void activate_idle_pwm(bool active);
  71. void set_active_pwm(uint16_t _active_brightness);
  72. void set_time_per_stair(uint16_t _time_per_stair);
  73. };