TM1637.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #ifndef _TM1637_H
  2. #define _TM1637_H 1
  3. #include "stdint.h"
  4. #include "pico/stdlib.h"
  5. #include "hardware/pio.h"
  6. #define MINUS_SEG 0b01000000 // Minus
  7. #define DOT_SEG 0b10000000 // DOT
  8. #define STOP_COND 0x100 // ストップコンディションにする
  9. #define TM1637_MAX_COL 6 // TM1637の最大カラム数は6
  10. #define TM1637_MAX_CONTRAST 0b111
  11. #define TM1637_AUTOINC 0b01000000 // Data set Auto Increment
  12. #define TM1637_DATASET 0b01000100 // Data set
  13. #define TM1637_ADDRSET 0b11000000 // ADDR SET
  14. #define TM1637_DISPOFF 0b10000000 // Display Off
  15. #define TM1637_DISPON 0b10001000 // Display On
  16. #define TM1637_ERR_INVALID_PARAM -1
  17. #define TM1637_ERR_NACK -2
  18. typedef struct TM1637st {
  19. PIO pio; // PIOインスタンス
  20. uint sm; // ステートマシン番号
  21. uint offset; // オフセットアドレス
  22. uint8_t contrast; // コントラスト値
  23. uint8_t colmns; // このユニットのカラム数
  24. bool initialized; // 初期化完了フラグ
  25. struct TM1637st *next; // 次の構造体へのポインタ
  26. } TM1637_t;
  27. /*
  28. TM1637_t *TM1637_init(uint8_t sda_base_pin, int col, uint8_t cont);
  29. TM1637を初期化しハンドルを返す
  30. パラメータ:
  31. uint8_t sda_base_pin: TM1637のSDAが接続されているGPIO。SDAの次のGPIOにSCLKを接続すること
  32. uint8_t col: 接続しているTM1637モジュールのカラム数
  33. uint8_t cont: コントラスト値(0~7)
  34. 戻り値:
  35. TM1637_tのポインタ。NULLは初期化失敗
  36. */
  37. TM1637_t *TM1637_init(uint8_t sda_base_pin, uint8_t col, uint8_t cont);
  38. /*
  39. int TM1637_set_contrast(TM1637_t *p, uint8_t cont);
  40. パラメータ:
  41. TM1637_t *p: TM1637_tのポインタ
  42. uint8_t cont: コントラスト値
  43. 戻り値:
  44. 0なら成功、負の値なら失敗
  45. */
  46. int TM1637_set_contrast(TM1637_t *p, uint8_t cont);
  47. /*
  48. int TM1637_putchar(TM1637_t *p, char c, bool dot, uint8_t col);
  49. 1文字出力
  50. パラメータ:
  51. TM1637_t *p: TM1637_tのポインタ
  52. bool dot: ドットセグメントをオンにするならtrue
  53. uint8_t col: 表示するカラム
  54. 戻り値:
  55. 0なら成功、負の値なら失敗
  56. */
  57. int TM1637_putchar(TM1637_t *p, char c, bool dot, uint8_t col);
  58. /*
  59. int TM1637_putstr(TM1637_t *t, char *str);
  60. 文字列表示
  61. パラメータ:
  62. TM1637_t *p: TM1637_tのポインタ
  63. char *str: 表示する文字列
  64. 戻り値:
  65. 0なら成功、負の値なら失敗
  66. */
  67. int TM1637_putstr(TM1637_t *t, char *str);
  68. #endif