porthub.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. #include "porthub.h"
  2. PortHub::PortHub(){
  3. }
  4. void PortHub::begin(){
  5. Wire.begin();
  6. }
  7. uint16_t PortHub::hub_a_read_value(uint8_t reg){
  8. Wire.beginTransmission(IIC_ADDR);
  9. Wire.write(reg | 0x06);
  10. Wire.endTransmission();
  11. uint8_t RegValue_L,RegValue_H;
  12. Wire.requestFrom(IIC_ADDR,2);
  13. while(Wire.available()){
  14. RegValue_L = Wire.read();
  15. RegValue_H = Wire.read();
  16. }
  17. return (RegValue_H<<8) | RegValue_L;
  18. }
  19. uint8_t PortHub::hub_d_read_value_A(uint8_t reg){
  20. Wire.beginTransmission(IIC_ADDR);
  21. Wire.write(reg | 0x04);
  22. Wire.endTransmission();
  23. uint8_t RegValue;
  24. Wire.requestFrom(IIC_ADDR,1);
  25. while(Wire.available()){
  26. RegValue = Wire.read();
  27. }
  28. return RegValue;
  29. }
  30. uint8_t PortHub::hub_d_read_value_B(uint8_t reg){
  31. Wire.beginTransmission(IIC_ADDR);
  32. Wire.write(reg | 0x05);
  33. Wire.endTransmission();
  34. uint8_t RegValue;
  35. Wire.requestFrom(IIC_ADDR,1);
  36. while(Wire.available()){
  37. RegValue = Wire.read();
  38. }
  39. return RegValue;
  40. }
  41. void PortHub::hub_d_wire_value_A(uint8_t reg,uint16_t level){
  42. Wire.beginTransmission(IIC_ADDR);
  43. Wire.write(reg | 0x00);
  44. Wire.write(level & 0xff);
  45. Wire.endTransmission();
  46. }
  47. void PortHub::hub_d_wire_value_B(uint8_t reg,uint16_t level){
  48. Wire.beginTransmission(IIC_ADDR);
  49. Wire.write(reg | 0x01);
  50. Wire.write(level & 0xff);
  51. Wire.endTransmission();
  52. }
  53. void PortHub::hub_a_wire_value_A(uint8_t reg,uint16_t duty){
  54. Wire.beginTransmission(IIC_ADDR);
  55. Wire.write(reg | 0x02);
  56. Wire.write(duty & 0xff);
  57. Wire.endTransmission();
  58. }
  59. void PortHub::hub_a_wire_value_B(uint8_t reg,uint16_t duty){
  60. Wire.beginTransmission(IIC_ADDR);
  61. Wire.write(reg | 0x03);
  62. Wire.write(duty & 0xff);
  63. Wire.endTransmission();
  64. }
  65. void PortHub::hub_wire_length(uint8_t reg,uint16_t length){
  66. Wire.beginTransmission(IIC_ADDR);
  67. Wire.write(reg | 0x08);
  68. Wire.write(length & 0xff);
  69. Wire.write(length>>8);
  70. Wire.endTransmission();
  71. }
  72. void PortHub::hub_wire_index_color(uint8_t reg,uint16_t num,uint8_t r,int8_t g,uint8_t b){
  73. Wire.beginTransmission(IIC_ADDR);
  74. Wire.write(reg | 0x09);
  75. Wire.write(num & 0xff);
  76. Wire.write(num>>8);
  77. Wire.write(r);
  78. Wire.write(g);
  79. Wire.write(b);
  80. Wire.endTransmission();
  81. }
  82. void PortHub::hub_wire_fill_color(uint8_t reg,uint16_t first, uint16_t count, uint8_t r,int8_t g,uint8_t b){
  83. Wire.beginTransmission(IIC_ADDR);
  84. Wire.write(reg | 0x0a);
  85. Wire.write(first & 0xff);
  86. Wire.write(first>>8);
  87. Wire.write(count & 0xff);
  88. Wire.write(count>>8);
  89. Wire.write(r);
  90. Wire.write(g);
  91. Wire.write(b);
  92. Wire.endTransmission();
  93. }
  94. void PortHub::hub_wire_setBrightness(uint8_t reg,uint8_t brightness){
  95. Wire.beginTransmission(IIC_ADDR);
  96. Wire.write(reg | 0x0b);
  97. Wire.write(brightness & 0xff);
  98. Wire.endTransmission();
  99. }