Advertisement
j0h

ds

j0h
Feb 18th, 2025
23
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. import smbus2
  3. import time
  4.  
  5. # I2C settings
  6. I2C_BUS = 1 # Change if needed (check with i2cdetect -l)
  7. DEVICE_ADDR = 0x28 # Change if your DS1841 is at a different address
  8.  
  9. # Register addresses (Check DS1841 datasheet)
  10. WIPER_REG = 0x00 # Wiper register (R/W)
  11. STATUS_REG = 0x02 # Status register (R)
  12. TEMP_REG = 0x05 # Temperature sensor register (R)
  13.  
  14. # Initialize I2C bus
  15. bus = smbus2.SMBus(I2C_BUS)
  16.  
  17. def read_register(register):
  18. """Read a byte from the given register."""
  19. return bus.read_byte_data(DEVICE_ADDR, register)
  20.  
  21. def write_register(register, value):
  22. """Write a byte to the given register."""
  23. bus.write_byte_data(DEVICE_ADDR, register, value)
  24.  
  25. def get_wiper_position():
  26. """Reads the current wiper position."""
  27. return read_register(WIPER_REG)
  28.  
  29. def set_wiper_position(value):
  30. """Sets the wiper position (0-255)."""
  31. if 0 <= value <= 255:
  32. write_register(WIPER_REG, value)
  33. print(f"Wiper set to {value}")
  34. else:
  35. print("Error: Wiper value out of range (0-255)")
  36.  
  37. def get_temperature():
  38. """Reads the onboard temperature sensor (if available)."""
  39. temp_raw = read_register(TEMP_REG)
  40. return temp_raw # Might need conversion if using signed value
  41.  
  42. # Example Usage
  43. if __name__ == "__main__":
  44. try:
  45. print("Current Wiper Position:", get_wiper_position())
  46. set_wiper_position(100)
  47. print("Updated Wiper Position:", get_wiper_position())
  48.  
  49. # Optional: Read temperature if available
  50. temp = get_temperature()
  51. print(f"Temperature Sensor Value: {temp}")
  52.  
  53. except Exception as e:
  54. print(f"Error: {e}")
  55. finally:
  56. bus.close()
  57.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement