// Numbers input and manipulation test
#include <Servo.h>
Servo servo;
void setup()
{
// initialize serial:
Serial.begin(9600); // set serial monitor baud rate to match
servo.write(90);
servo.attach(11);
prntIt();
}
void loop()
{
// if there's any serial available, read it:
while (Serial.available() > 0)
{
// look for the next valid integer in the incoming serial stream:
float pos = Serial.parseFloat();
Serial.println("MapFloat: " + String(mapFloat(pos, 0, 2400, 0, 100)));
Serial.println("Line break: " + String(pos + // test comment
3));
if (pos != 0)
{
Serial.println(pos);
pos = constrain(pos, 500, 2500);
servo.writeMicroseconds(pos);
prntIt();
}
Serial.println("test return: " + String(test()));
}
}
void prntIt()
{
Serial.print(" degrees = ");
Serial.print(servo.read());
Serial.print("\t");
Serial.print("microseconds = ");
Serial.println(servo.readMicroseconds());
}
float mapFloat(float x, float inp_min, float inp_max, float out_min, float out_max)
{
const float range_inp = inp_max - inp_min;
if(range_inp == 0)
{
Serial.println("mapFloat(): Invalid input range, min == max");
return -1; // AVR returns -1, SAM returns 0
}
const float range_out = out_max - out_min;
const float delta = x - inp_min;
return (delta * range_out) / range_inp + out_min;
}
int test()
{
return // test comment
1 + 3;
}