For those who want technical details, I hacked together the following quick sketch to generate the interesting patterns you can see on the oscilloscope:
void setup() { pinMode(4, OUTPUT); pinMode(5, OUTPUT); } int state = 1; int count1 = 0; int state2 = 1; int count12 = 0; int max1 = 20; int max2 = 200; int t = 0; void loop() { if (count1-- <= 0) { state = 1-state; digitalWrite(5, state); count1 = max1; } if (count12-- <= 0) { state2 = 1-state2; digitalWrite(4, state2); count12 = max2; if (t++ > 20000) { max2 -= 1; if (max2 < 1) { max2 = 500; } t = 0; } } }This sketch manually generates two square wave output with periods determined by max1 and max2. The frequency of the second varies occasionally (controlled by the loop with t). I used simple R-C filters on the outputs to turn the square waves into roughly triangular waves, and then fed this into the X and Y inputs of the oscilloscope. The result was constantly-varying Lissajou-like patterns.
I should point out the outputs generated this way are rather unstable because many thing can interrupt the timing loop. The above code is provided just in case your are curious. I don't recommend using this approach for anything real; using the PWM timers would yield much cleaner results.
Anyone have other ideas for easy ways to generate cool oscilloscope patterns with an Arduino?
2 comments:
Hi Ken, your'e wrong, you weren't on CNN once, I saw you twice!
Just wanted to say I enjoy your blog, and thanks for the effort. :)
I found you when I was in a dark place with IR, your post really helped me, thanks again.
You are pretty :-)
Post a Comment