GY-63_MS5611/libraries/AD524X
2023-02-03 08:41:34 +01:00
..
.github 0.3.6 AD524X 2023-01-11 16:35:57 +01:00
examples 0.3.4 AD524X 2022-08-13 19:31:52 +02:00
test 0.4.0 AD524X 2023-02-03 08:41:34 +01:00
.arduino-ci.yml 0.3.5 AD524X 2022-10-25 17:57:23 +02:00
AD524X.cpp 0.4.0 AD524X 2023-02-03 08:41:34 +01:00
AD524X.h 0.4.0 AD524X 2023-02-03 08:41:34 +01:00
CHANGELOG.md 0.4.0 AD524X 2023-02-03 08:41:34 +01:00
keywords.txt 0.3.6 AD524X 2023-01-11 16:35:57 +01:00
library.json 0.4.0 AD524X 2023-02-03 08:41:34 +01:00
library.properties 0.4.0 AD524X 2023-02-03 08:41:34 +01:00
LICENSE 0.3.6 AD524X 2023-01-11 16:35:57 +01:00
README.md 0.4.0 AD524X 2023-02-03 08:41:34 +01:00

Arduino CI Arduino-lint JSON check License: MIT GitHub release

AD524X

Arduino class for I2C digital potentiometer AD5241 AD5242.

Description

The AD5241 and AD5242 are digital potentiometers. The AD5241 has one, the AD5242 has two potentiometers. Both types have two output lines O1 and O2.

These digital potentiometers come in 10K, 100K and 1M and can be set in 256 steps.

An important property of the devices is that they defaults to their mid position at startup.

The library also defines AD524X_MIDPOINT == 127. To be used to set to defined mid point.

This library is related to

I2C address

The AD524X has two address lines to configure the I2C address. 0x2C - 0x2F

Addr(dec) Addr(Hex) AD0 AD1
44 0x2C GND GND
45 0x2D GND +5V
46 0x2E +5V GND
47 0x2F +5V +5V

Interface

The library has a number of functions which are all quite straightforward. One can get / set the value of (both) the potentiometer(s), and the O1 and O2 output lines.

Constructors

  • AD524X(uint8_t address, TwoWire *wire = &Wire) constructor base class, creates an instance with 2 potentiometer. This class does not distinguish between AD5241 and AD5242. The developer is responsible for handling this correctly.
  • AD5241(uint8_t address, TwoWire *wire = &Wire) create an instance with 1 potentiometer.
  • AD5242(uint8_t address, TwoWire *wire = &Wire) create an instance with 2 potentiometer.

Wire initialization

  • bool begin(uint8_t sda, uint8_t scl) ESP32 a.o initializing of Wire.
  • bool begin() for UNO.
  • bool isConnected() See if address set in constructor is on the bus.

Basic IO

  • uint8_t write(uint8_t rdac, uint8_t value) set channel rdac 0/1 to value 0..255.
  • uint8_t write(uint8_t rdac, uint8_t value, uint8_t O1, uint8_t O2) idem + set output lines O1 and O2 too.
  • uint8_t read(uint8_t rdac) read back set value.
  • uint8_t setO1(uint8_t value = HIGH) value = HIGH (default) or LOW.
  • uint8_t setO2(uint8_t value = HIGH) value = HIGH (default) or LOW.
  • uint8_t getO1() read back O1 line.
  • uint8_t getO2() read back O2 line.

Misc

  • uint8_t zeroAll() sets potentiometer's to 0 and I/O to LOW.
  • uint8_t reset() sets potentiometer's to midpoint == 127 and I/O to LOW. (startup default)
  • uint8_t midScaleReset(uint8_t rdac) resets one potentiometer to midpoint == 127.
  • uint8_t readBackRegister() read register back, for debugging.

Experimental

  • uint8_t shutDown() check datasheet, not tested yet, use at own risk.

Operation

The examples show the basic working of the functions.

Error codes

define value
AD524X_OK 0
AD524X_ERROR 100

Future

Must

Should

  • improve error handling.
  • sync with AD520X library

Could

  • consider adding write(value) with default PM == 0 ? (wrapper)
    • see issue #16 / #17

Wont

  • make midpoint 128