a6e4f63dea
* I2C ref doc 'repeated' description * Note the non-endianness for one byte formats * trigger rebuild
63 lines
2.0 KiB
Markdown
63 lines
2.0 KiB
Markdown
# i2c Read Number
|
|
|
|
Read one number from an I2C address using a specified number format.
|
|
|
|
```sig
|
|
pins.i2cReadNumber(0, NumberFormat.Int8LE, false);
|
|
```
|
|
|
|
### ~hint
|
|
|
|
**Simulator**
|
|
|
|
This function needs real hardware to work with. It's not supported in the simulator.
|
|
|
|
### ~
|
|
|
|
## Parameters
|
|
|
|
* **address**: the 7-bit I2C address of the device you want to read a number from.
|
|
* **format**: the [NumberFormat](/types/buffer/number-format) of the number value to read.
|
|
* **repeated**: if `true`, don't send a stop condition after the read. Otherwise, a stop condition is sent when `false` (the default).
|
|
|
|
### ~ hint
|
|
|
|
A [repeated start condition](http://www.i2c-bus.org/repeated-start-condition/) is set to help make sure that when you want to read multiple numbers from the device at one time, it can happen without interruption. A start conditon is sent (if **repeated** is `true`) each time a number is read without a matching stop condition. When the last number is read, the stop conditon can be sent by setting **repeated** to `false`. For single reads, don't use **repeated** or set it to `false`.
|
|
|
|
### ~
|
|
|
|
## Returns
|
|
|
|
* a number from the device with the [NumberFormat](/types/buffer/number-format) you asked for.
|
|
|
|
## Examples
|
|
|
|
### Read a big endian number from a device
|
|
|
|
The following example reads a number in big-endian, 16-bit, unsigned integer
|
|
format from the 7-bit I2C address `32`.
|
|
|
|
Read a number from the device at a 7-bit I2C address as a 16-bit number. The `16`, big-endian, and integer chosen for the format.
|
|
|
|
```blocks
|
|
let inValue = pins.i2cReadNumber(32, NumberFormat.UInt16BE, false);
|
|
```
|
|
|
|
### Repeated reads
|
|
|
|
Read three bytes from a device at address `33` at one time.
|
|
|
|
```blocks
|
|
let nums: number[] = []
|
|
|
|
nums[0] = pins.i2cReadNumber(33, NumberFormat.UInt8LE, true)
|
|
nums[1] = pins.i2cReadNumber(33, NumberFormat.UInt8LE, true)
|
|
nums[2] = pins.i2cReadNumber(33, NumberFormat.UInt8LE, false)
|
|
```
|
|
|
|
## See also
|
|
|
|
[i2c write number](/reference/pins/i2c-write-number)
|
|
|
|
[What's I2C?](http://www.i2c-bus.org/), [number format](/types/buffer/number-format)
|