Txtzyme now supports analog input using Paul's Simple ADC code. The command 5s samples analog channel 5. Here is a program that takes 50 samples:
50 { 5sp }
I read the samples directly from the USB device and convert them into bar charts with a perl one-liner that I leave running in the background. When the Teensy spits out data, it looks like this:
72 ||||||| 68 |||||| 82 |||||||| 82 |||||||| 67 |||||| 141 |||||||||||||| 221 |||||||||||||||||||||| 298 ||||||||||||||||||||||||||||| 359 ||||||||||||||||||||||||||||||||||| 448 |||||||||||||||||||||||||||||||||||||||||||| 519 ||||||||||||||||||||||||||||||||||||||||||||||||||| 530 ||||||||||||||||||||||||||||||||||||||||||||||||||||| 527 |||||||||||||||||||||||||||||||||||||||||||||||||||| 531 ||||||||||||||||||||||||||||||||||||||||||||||||||||| 513 ||||||||||||||||||||||||||||||||||||||||||||||||||| 492 ||||||||||||||||||||||||||||||||||||||||||||||||| 439 ||||||||||||||||||||||||||||||||||||||||||| 395 ||||||||||||||||||||||||||||||||||||||| 324 |||||||||||||||||||||||||||||||| 254 ||||||||||||||||||||||||| 234 |||||||||||||||||||||||
The perl script uses a single regex substitution. I use perl's "x" operator to make bars by replicating a single character. For example, "|"x10 would produce "||||||||||". I scale the Txtzyme output by .2 so that the bars fit nicely on the screen. Here is the whole script launched as a background task:
perl -pe 's/(\d+)/$1."\t"."|"x($1*.2)/e' < /dev/cu.usbmodem &
I can make the Txtzyme program run repeatedly by wrapping a while loop around the shell command that sends my program to the Teensy:
while sleep .144 do clear; echo 50{5sp} > /dev/cu.usbmodem done
The carefully chosen sleep and screen clear makes my completed setup refresh continuously at a rate good for examining the 60Hz hum present when I touch the Teensy's input pins.
Want to try this? Find both lines in projects/perlscope GitHub.