modf()
[Math]
double modf(double x, double *pointer);
Description
Returns the signed fractional part of the floating-point number x.
This function breaks the argument x into integral and fractional parts, each of which has the same sign as the argument. It stores the integral part as a floating-point number in the location pointed to by pointer and returns the fractional part.
Parameters
x
: The value to calculate the fractional part.
pointer
: The address of a variable to store the integral
part.
Returns
The fractional part of x.
Example Code
The code reads the value of two potentiometers connected to pins
INX
and INY
and place the fractional part of x
on pin OUT
and the integral part on pin
OUT2
.
void setup() {
(0, "INY"); // set the label of pin 0 to "INY"
pinLabel(1, "INX"); // set the label of pin 1 to "INX"
pinLabel(2, "OUT"); // set the label of pin 2 to "OUT"
pinLabel(2, OUTPUT); // set pin 2 as output
pinMode(3, "OUT2"); // set the label of pin 3 to "OUT2"
pinLabel(3, OUTPUT); // set pin 3 as output
pinMode
(4, "VCC"); // set the label of pin 4 to "VCC"
pinLabel(4); // set pin 4 as power pin
powerPin(5, "GND"); // set the label of pin 5 to "GND"
pinLabel(5); // set pin 5 as ground pin
groundPin}
void loop() {
// read the value of the potentiometers
int val_x = analogRead(0);
int val_y = analogRead(1);
// map the value of the potentiometers from 0 to 1023
// to the range of 0 to 10
double x = map(val_x, 0, 1023, 0, 10);
double y = map(val_y, 0, 1023, 0, 10);
// calculate the fractional part of x
double z;
double integral;
= modf(x, &integral);
z // map the value of z from 0 to 1 to 0 to 1023
int pwm = (int) map(z, 0, 1, 0, 1023);
// write the value of pwm to pin 2
(2, pwm);
analogWrite// map the value of integral from 0 to 10 to 0 to 1023
= (int) map(integral, 0, 10, 0, 1023);
pwm // write the value of pwm to pin 3
(3, pwm);
analogWrite}