First, we'll expand our IR sensor reading sketch to wait for the sensor to show a stable reading. We'll use this stable reading algorithm to gather a batch of 16 samples from the sensor. This will give us some data that we can use for calibration.
The expanded version of the
gather_data() function includes three separate features. We've left them in a single function, but they can be decomposed if required to make the Arduino more responsive. Here are the global variables shared by
unsigned long start_time, end_time; int raw_reading; #define MODE_LIMIT 6 int reading[MODE_LIMIT]; int count[MODE_LIMIT]; const int TIME_LIMIT = 5000; // Microseconds.
We defined three important features ...