Adafruit_CircuitPython_DS1841/examples/ds1841_lut_test.py
2020-03-20 13:34:37 -07:00

43 lines
1.2 KiB
Python

import time
import board
import busio
from analogio import AnalogIn
import adafruit_ds1841
# WIRING:
# 1 Wire connecting VCC to RH to make a voltage divider using the
# internal resistor between RH and RW
# 2 Wire connecting RW to A0
def wiper_voltage(_wiper_pin):
raw_value = _wiper_pin.value
return raw_value / (2 ** 16 - 1) * _wiper_pin.reference_voltage
i2c = busio.I2C(board.SCL, board.SDA)
ds = adafruit_ds1841.DS1841(i2c)
LUT_MAX_INDEX = 71
WIPER_MAX = 127
wiper_pin = AnalogIn(board.A0)
ds.lut_mode_enabled = True
# you only need to run this once per DS1841 since the LUT is stored to EEPROM
# for i in range(0, LUT_MAX_INDEX+1):
# new_lut_val = WIPER_MAX-i
# ds.set_lut(i, new_lut_val)
while True:
for i in range(0, LUT_MAX_INDEX + 1):
ds.lut_selection = i
# for printing to serial terminal:
print(
"\tLUTAR/LUT Selection: %s" % hex(ds.lut_selection),
"\tWiper = %d" % ds.wiper,
"\tWiper Voltage: %f" % wiper_voltage(wiper_pin),
)
time.sleep(0.5)
# uncomment this and comment out the above to print out a mu plotter friendly format (tuple)
# print((wiper_voltage(wiper_pin),))