Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/johntalton/ds3502
Digital Potentiometer (POT)
https://github.com/johntalton/ds3502
ds3502 i2c pot potentiometer
Last synced: about 1 month ago
JSON representation
Digital Potentiometer (POT)
- Host: GitHub
- URL: https://github.com/johntalton/ds3502
- Owner: johntalton
- License: mit
- Created: 2020-07-05T20:27:48.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-06-03T12:18:52.000Z (7 months ago)
- Last Synced: 2024-06-03T14:20:08.808Z (7 months ago)
- Topics: ds3502, i2c, pot, potentiometer
- Language: JavaScript
- Homepage:
- Size: 84 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# DS3502
Digital Potentiometer (POT)[![npm Version](http://img.shields.io/npm/v/@johntalton/ds3502.svg)](https://www.npmjs.com/package/@johntalton/ds3502)
![GitHub package.json version](https://img.shields.io/github/package-json/v/johntalton/ds3502)
![CI](https://github.com/johntalton/ds3502/workflows/CI/badge.svg)
![GitHub](https://img.shields.io/github/license/johntalton/ds3502)
[![Downloads Per Month](http://img.shields.io/npm/dm/@johntalton/ds3502.svg)](https://www.npmjs.com/package/@johntalton/ds3502)
![GitHub last commit](https://img.shields.io/github/last-commit/johntalton/ds3502)* [Operation](#gear-operation)
* [Api](#book-api)
* [Tools](#wrench-tools)## :gear: Operation
The Digital Potentiometer uses a resistory array to achive a 0-127 step range between its high (RH) and low value (RL). In most cases these are wired to the same logic high and low. Thus, providing a POT output (on RW) for analog usage in the RH-RL range.In addition to the controllable wiper value (via WR) the device provides the ability to set the initialization value on startup. This is provided via a `mode` change such that writes to the wiper value are preserved in a persistant storage on the chip (withing IVR on the EEPROM).
This set-and-update `mode` while usefull for setting persistent values over power loss also comes with increassed delay in update.
:warning: `mode changes to the control register (CR) do not take effect until the next write phase`
:warning: `it is not recommended to update both CR and WR in a single update, although it is supported`
## :book: API
The primary interface is the exposed `DS3502` class. Which expose a factory method `from` and primary class methods of `setProfile` and `profile`.
And example of typical usage:
```javascript
import { I2CAddressedBus } from '@johntalton/and-other-delights'
import { DS3502 } from '@johntalton/ds3502'const busNumber = 1
const busAddress = 0x28const ds = await DS3502.from(new I2CAddressedBus(i2c1, bus))
const profile = await ds.profile() // { WR: 127, CR: 0 }
```
#### profile
Returns asynchronously and object with properties for the wiper (WR) and control (CR). The initialization value of the wiper (IVR) can not be inspected.#### setProfile
Sets asynchronously the devices profile via and object with properties for wiper (WR) and control (CR). Both wiper `WR` and `CR` mode update can be specified in a single update. However, the POTs value update to the wiper (WR) will respect the previous `mode` value.## :wrench: Tools
#### `get`
Fetches and returns the current devices profile.#### `set`
Sets one or more values of the devices.And example of using the set command to blink and LED twice with a half second delay in update-only mode:
```shell
>node set.mjs mode 128 pot 0 delay 500 pot 127 pot 100 pot 127 pot 0
```