ADS1115.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import time
  2. import math
  3. # pip3 install Adafruit_ADS1x15
  4. import Adafruit_ADS1x15
  5. # 硬件地址 模块LADDR端接地
  6. ADDR = 0x48
  7. # 初始化ADS1115模块
  8. ADC = Adafruit_ADS1x15.ADS1115(address=ADDR)
  9. # 摇杆数据入口对应模块in0,in1
  10. P0 = 0
  11. P1 = 1
  12. # 最终方向
  13. content = 'Center'
  14. # 获取摇杆值
  15. def GetValue():
  16. while True:
  17. # 转换后的值
  18. value0 = ADC.read_adc(P0, gain=1,data_rate=128)
  19. value1 = ADC.read_adc(P1, gain=1,data_rate=128)
  20. # print('初始值',value0,value1)
  21. # 电压转换方向
  22. Orientation(value0,value1)
  23. time.sleep(0.05)
  24. # 区分方向
  25. def Orientation(value0,value1):
  26. global content
  27. # /1000得到电压值方便比较,实际电压值得/10000.
  28. v0 = int(value0 / 1000)
  29. v1 = int(value1 / 1000)
  30. if Residual(v0) > 20 and Residual(v1) == 20:
  31. content = 'Top'
  32. elif Residual(v0) < 20 and Residual(v1) == 20:
  33. content = 'Dwon'
  34. elif Residual(v0) == 20 and Residual(v1) > 20:
  35. content = 'Right'
  36. elif Residual(v0) == 20 and Residual(v1) < 20:
  37. content = 'Left'
  38. else:
  39. content = 'Center'
  40. print('实际电压值',v0,v1,content)
  41. # 电压值误差根据实际情况调整
  42. def Residual(v):
  43. # 中间值
  44. vs = 20
  45. # 误差值
  46. vd = 3
  47. if math.fabs(v - vs) > vd:
  48. return v
  49. elif math.fabs(v - vs) < vd:
  50. return vs
  51. else:
  52. return vs
  53. if __name__ == '__main__':
  54. GetValue()