In order to detect objects for the Engineering Physics robot competition, my team and I set out to create a new sensor array.
The array circuit consists of the ADS7828 ADC (courtesy of Texas Instruments), eight IR LEDs and photo-transistors, and accompanying circuitry. The entire sensor array connects to an I2C bus through two parallel JST connectors, which means that the sensor array has the capability of being daisy-chained. This proved to be a fantastic feature, as one iteration of our robot required 4 arrays, and was only accessible though one connector.
Electronics


Fairly simple repeated array block.

Here is the layout of the PCB. Very simple 2 layer board. Hardest part was squeezing everything into a size that would cost the least.

3D KiCad model. I love 3D preview!
Software
I also had to write a library for the sensor array that could be used by our main processor board (an STM32 development board running the Arduino framework). The library I wrote in C++ contains basic functions for connecting to the array, but also some statistic functions, such as weighted mean, inverse weighted mean, calibration helpers, and others. These functions were helpful in writing algorithms to made decisions based off what the sensors are seeing.

You can find the software I wrote, as well as all of the hardware files in the repository: https://github.com/Arrakark/IRSensorArray