Atm_encoderInt.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #pragma once
  2. #include <Automaton.h>
  3. #include <Encoder.h>
  4. class Atm_encoderInt : public Machine {
  5. public:
  6. enum { IDLE, UP, DOWN }; // STATES
  7. enum { EVT_UP, EVT_DOWN, ELSE }; // EVENTS
  8. Atm_encoderInt( void ) : Machine(){};
  9. Atm_encoderInt& begin( int pin1, int pin2, int divider = 1 );
  10. Atm_encoderInt& trace( Stream& stream );
  11. Atm_encoderInt& onChange( Machine& machine, int event = 0 );
  12. Atm_encoderInt& onChange( atm_cb_push_t callback, int idx = 0 );
  13. Atm_encoderInt& onChange( bool status, Machine& machine, int event = 0 );
  14. Atm_encoderInt& onChange( bool status, atm_cb_push_t callback, int idx = 0 );
  15. int state( void );
  16. Atm_encoderInt& range( int min, int max, bool wrap = false );
  17. Atm_encoderInt& set( int value );
  18. private:
  19. enum { LP_IDLE, ENT_UP, ENT_DOWN }; // ACTIONS
  20. Encoder *encoder;
  21. short pin1, pin2;
  22. const static char enc_states[];
  23. uint8_t enc_bits;
  24. int8_t enc_counter;
  25. int8_t enc_direction;
  26. int divider;
  27. int value, min, max;
  28. bool wrap, range_invert;
  29. atm_connector onup, ondown;
  30. // atm_timer_millis sendTimer;
  31. int send_rate = 20;
  32. int send_last = 0;
  33. bool count( int direction );
  34. int event( int id );
  35. void action( int id );
  36. };