I have this idea that an arduino could be used as a simple logic analyser. People without such toys asking on here for help decoding IR remote, Serial or RF transmitter data could be asked to load a sketch, attach the device and grab some data that can be used to decode/debug.
As the arduino has very little memory I figure the best way to sample data is to grab pin transition times instead of taking a sample every x micro seconds. Store the time in a circular buffer so you can start serial printing the data out ASAP while still capturing, to further extend the capture duration.
I have started on some arduino code and it seems to be working okay (still debugging it) but now the data needs displaying on the computer and this is where I’m hoping someone else will be willing/able to help.
I figure the best option to make the PC code is to use something like Processing as it’s free and works on Windows, Linux & Mac.
Does anyone think this is a good idea and is willing to write/help write the processing code to realize the idea.
Attached is an idea of what the Processing output should look like though it would be single channel only. It would need ability to zoom in/out and maybe measure time between 2x user movable cursors.
Also attached is a sample dump of the serial data from this capture session. Each number is the approx duration in milliseconds since the last transition and bit zero of this number denotes if the signal is high/low (1=high, 0=low)
This is unpaid as I want the code to become public domain.
EDIT: Added current Arduino code
Sample.txt (305 Bytes)
Logic_Scanner.ino (7.77 KB)