I released a library and example for reading linear photodiode arrays, specifically the AMS TSL14XX series and AMS compatible models from IC Haus (Germany)
The library reads all the pixels from the sensor at a high rate, and the example sketch optionally reports shadow width and position for a narrow shadow falling on the sensor with subpixel accuracy, and can optionally send raw pixel data frames or shadow width/position frames or both, over USB serial to a companion Processing sketch running on a PC.
It would be quite easy to add ILI9341 display, as I did this for the Teensy 3.x version of this sketch/library.
I just did not have one on hand that can handle 5 volts, but I hear Adafruit sells ones that handle 5V.
The Teensy version works with the ILI9341, but no touch screen yet.
The companion Processing sketch displays the pixel data and reports shadow width and position with subpixel resolution. It also has a lot of eye candy for revealing the inner workings of the quadradic interpolation sub-pixel algorithm, which estimates where shadow edges are located between pixels to increase the width and position resolution quite a bit.
A waterfall display reveals changes in position over short time scales.
Both the Arduino/Teensy sketches and the Processing sketch can be set to run with various test waveforms (provided)
to simulate sensor pixels for experimentation and testing without a sensor.
The serial protocol and system I use is quite evolved from the usual boiler plate, I got a great idea from Robin2 on how to encode bytes so that there are no forbidden values, such as the sync byte, and yet no sync byte falsing either.
Got that idea from his (old) thread,
https://forum.arduino.cc/index.php?topic=225329.msg1630844#msg1630844
and expanded upon it.
Shadow position/width accuracy is around 0.5 micron on Teensy 3.6 and around 10 microns on Arduino, because of the difference in ADC sampling bit-depth. Arduino ADC is 10 bit and Teensy is usually 12 bit.
Using AMS TSL1420R (256 pixel linear photodiode array sensor), I am seeing about 100 serial data frames per sec max from Arduino 16Mhz, (each frame containing a snapshot of all pixel values) and about 1,650 serial data frames/sec on Teensy 3.6 max. The Processing sketch renders around 40 to 100 frames per sec running all eye candy, depending on screen size, and up to 500 rendering frames/sec with most drawn features commented out.
Note TSL1402R and other pin based models are being sunsetted, but the surface mount ones are still available. So you might need to search for one on a module, or get familiar with how to solder surface mounted parts. A $40 soldering heat gun can get you pretty far for starters, but you may find yourself modifying toaster ovens, hah.
So the libraries and examples I just posted are:
For Arduino
For Teensy 3.6
and for Processing (Receives serial data from Arduino or Teensy and provides a nice plot display with pan/zoom on pixel points, adjustable smoothing kernel, shadow reports)
AMS linear array sensors
http://ams.com/eng/Products/Light-Sensors/Linear-Array
IC Haus has an online store where you can buy 5 packs of their sensors, some of which are AMS TSL14XX compatible:
http://us-shop.ichaus.com/SearchResults.asp?Cat=22
If you try it, let me know here in the thread, as well as any improvements/bugs/questions.
There is a ton on notes/comments in the code.
Please post code snippets if the question warrants it.
Thanks, have fun.