Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- import smbus2
- import time
- # I2C settings
- I2C_BUS = 1 # Change if needed (check with i2cdetect -l)
- DEVICE_ADDR = 0x28 # Change if your DS1841 is at a different address
- # Register addresses (Check DS1841 datasheet)
- WIPER_REG = 0x00 # Wiper register (R/W)
- STATUS_REG = 0x02 # Status register (R)
- TEMP_REG = 0x05 # Temperature sensor register (R)
- # Initialize I2C bus
- bus = smbus2.SMBus(I2C_BUS)
- def read_register(register):
- """Read a byte from the given register."""
- return bus.read_byte_data(DEVICE_ADDR, register)
- def write_register(register, value):
- """Write a byte to the given register."""
- bus.write_byte_data(DEVICE_ADDR, register, value)
- def get_wiper_position():
- """Reads the current wiper position."""
- return read_register(WIPER_REG)
- def set_wiper_position(value):
- """Sets the wiper position (0-255)."""
- if 0 <= value <= 255:
- write_register(WIPER_REG, value)
- print(f"Wiper set to {value}")
- else:
- print("Error: Wiper value out of range (0-255)")
- def get_temperature():
- """Reads the onboard temperature sensor (if available)."""
- temp_raw = read_register(TEMP_REG)
- return temp_raw # Might need conversion if using signed value
- # Example Usage
- if __name__ == "__main__":
- try:
- print("Current Wiper Position:", get_wiper_position())
- set_wiper_position(100)
- print("Updated Wiper Position:", get_wiper_position())
- # Optional: Read temperature if available
- temp = get_temperature()
- print(f"Temperature Sensor Value: {temp}")
- except Exception as e:
- print(f"Error: {e}")
- finally:
- bus.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement