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.4KB

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