tm1637.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /**
  2. * ESP-32 IDF library for control TM1637 LED 7-Segment display
  3. *
  4. * Author: Petro <petro@petro.ws>
  5. *
  6. * Project homepage: https://github.com/petrows/esp-32-tm1637
  7. * Example: https://github.com/petrows/esp-32-tm1637-example
  8. *
  9. * License: MIT (see LICENSE file included)
  10. *
  11. */
  12. #ifndef TM1637_H
  13. #define TM1637_H
  14. #include <inttypes.h>
  15. #include <driver/gpio.h>
  16. #ifdef __cplusplus
  17. extern "C" {
  18. #endif
  19. struct tm;
  20. typedef struct {
  21. gpio_num_t m_pin_clk;
  22. gpio_num_t m_pin_dta;
  23. uint8_t m_brightness;
  24. } tm1637_led_t;
  25. /**
  26. * @brief Constructs new LED TM1637 object
  27. *
  28. * @param pin_clk GPIO pin for CLK input of LED module
  29. * @param pin_data GPIO pin for DIO input of LED module
  30. * @return
  31. */
  32. tm1637_led_t * tm1637_init(gpio_num_t pin_clk, gpio_num_t pin_data);
  33. /**
  34. * @brief Set brightness level. Note - will be set after next display render
  35. * @param led LED object
  36. * @param level Brightness level 0..7 value
  37. */
  38. void tm1637_set_brightness(tm1637_led_t * led, uint8_t level);
  39. /**
  40. * @brief Set one-segment number, also controls dot of this segment
  41. * @param led LED object
  42. * @param segment_idx Segment index (0..3)
  43. * @param num Number to set (0x00..0x0F, 0xFF for clear)
  44. * @param dot Display dot of this segment
  45. */
  46. void tm1637_set_segment_number(tm1637_led_t * led, const uint8_t segment_idx, const uint8_t num, const bool dot);
  47. /**
  48. * @brief Set one-segment raw segment data
  49. * @param led LED object
  50. * @param segment_idx Segment index (0..3)
  51. * @param data Raw data, bitmask is XGFEDCBA
  52. */
  53. void tm1637_set_segment_raw(tm1637_led_t * led, const uint8_t segment_idx, const uint8_t data);
  54. /**
  55. * @brief Set full display number, in decimal encoding
  56. * @param led LED object
  57. * @param number Display number (0...9999)
  58. */
  59. void tm1637_set_number(tm1637_led_t * led, uint16_t number);
  60. /**
  61. * @brief Set full display number, in decimal encoding + control leading zero
  62. * @param led LED object
  63. * @param number Display number (0...9999)
  64. * @param lead_zero Display leading zero(s)
  65. */
  66. void tm1637_set_number_lead(tm1637_led_t * led, uint16_t number, const bool lead_zero);
  67. /**
  68. * @brief Set full display number, in decimal encoding + control leading zero + control dot display
  69. * @param led LED object
  70. * @param number Display number (0...9999)
  71. * @param lead_zero Display leading zero(s)
  72. * @param dot_mask Dot mask, bits left-to-right
  73. */
  74. void tm1637_set_number_lead_dot(tm1637_led_t * led, uint16_t number, const bool lead_zero, const uint8_t dot_mask);
  75. /**
  76. * @brief Set floating point number, correctly handling negative numbers
  77. * @param led LED object
  78. * @param, n Floating point number
  79. */
  80. void tm1637_set_float(tm1637_led_t * led, float n);
  81. #ifdef __cplusplus
  82. }
  83. #endif
  84. #endif // TM1637_H