/* A simple 1-d oscilliscope: scan all the channels, setting the PWM output value to 4x the analog pin 0 value (0 - 1024 * 4 = 4096). The value will fade to zero as the channels keep scanning. See the BasicUse example for hardware setup. Alex Leone , 2009-02-03 */ #include "Tlc5940.h" #include "tlc_fades.h" // which analog pin to use #define ANALOG_PIN 0 // how many millis to strobe over all the LEDs #define SCOPE_PERIOD (1000 * NUM_TLCS) #define LED_PERIOD SCOPE_PERIOD / (NUM_TLCS * 16) TLC_CHANNEL_TYPE channel; void setup() { Tlc.init(); } void loop() { uint32_t lastMillis = millis(); tlc_addFade(channel, // led channel analogRead(ANALOG_PIN) * 4, // start fade value (0-4095) 0, // end fade value (0-4095) lastMillis + 2, // start millis lastMillis + (uint16_t)SCOPE_PERIOD / 4 // end millis ); if (channel++ == NUM_TLCS * 16) { channel = 0; } uint32_t currentMillis; do { currentMillis = millis(); tlc_updateFades(currentMillis); } while (currentMillis - lastMillis <= LED_PERIOD); }