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 the
sample script on GitHub.