IanalogWrite2f() converts a user floating-point value to the 4~20mA output range.
void IanalogWrite2f(uint8_t ch, float min, float max, float value)
| Command | Arguments | Return Value | Operation |
|---|---|---|---|
IanalogWrite2f(ch, min, max, value) | uint8_t ch — MPINO: analog pin such as A0; MPAINO: overall module channel number starting at 0float minfloat maxfloat value — Output value expressed in the min ~ max range | void | Converts a user floating-point value to the 4~20mA output range. |
Connect a Y output module to MPAINO-8A8R(T) and select Analog Output Module → Y. Set the CH0 DIP switch to OFF and measure the 4–20mA output at I+ and −.
void setup() {} void loop() { IanalogWrite2f(0, 0.0F, 100.0F, 25.0F); // Scale 25% to the 4–20mA range and output about 8mA. delay(500); }
I+ and −.0; inputs below 3.6mA return an error value.IanalogRead2() and IanalogRead2f() also return 65535 on error, rather than a user-range value. Check for errors before using the result.int32_t range is available for min~max in IanalogRead2(), but if the normal range includes 65535, it cannot be distinguished from an error value.analogRead2Avgf() uses state and a buffer separate from analogRead2Avg(). Using both increases SRAM usage.samples is 0 or memory allocation fails in analogRead2Avgf(), it returns the current valid corrected value as a float.analogRead2() on voltage/NTC channels that are not 4~20mA inputs.analogReference(EXTERNAL), set it first in setup().IanalogWrite2() and IanalogWrite2f() are convenience outputs dedicated to 4~20mA. Avoid alternating them with IanalogWrite() on the same channel.