/* Blink Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain. */ // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(13, OUTPUT); pinMode(12, OUTPUT); pinMode(11, OUTPUT); pinMode(10, OUTPUT); } int LED0 = 0x01; int LED1 = 0x02; int LED2 = 0x04; int LED3 = 0x08; int PWM_BASE = 15; void channel_set (int duration, int leds, int pwm) { for (int i = 0; i < duration; i+=PWM_BASE) { digitalWrite (10, leds & LED0); digitalWrite (11, leds & LED1); digitalWrite (12, leds & LED2); digitalWrite (13, leds & LED3); if ((pwm > PWM_BASE) || (pwm == 0)) { delay (PWM_BASE); continue; } delay (PWM_BASE-pwm); digitalWrite (10, 0); digitalWrite (11, 0); digitalWrite (12, 0); digitalWrite (13, 0); delay (PWM_BASE-(PWM_BASE-pwm)); } } void run_left(int num, int f, int pwm) { int i = 1; while (num) { channel_set (f, LED3, pwm); channel_set (f, LED2, pwm); channel_set (f, LED1, pwm); if (i >= num) break; channel_set (f, LED0, pwm); i++; } } void run_right(int num, int f, int pwm) { int i = 1; while (num) { channel_set (f, LED0, pwm); channel_set (f, LED1, pwm); channel_set (f, LED2, pwm); if (i >= num) break; channel_set (f, LED3, pwm); i++; } } void red_white (int num, int f, int pwm) { for (int i=0; i 0; i--) channel_set (f*(i/4), LED0|LED1|LED2|LED3, i); channel_set (f*20, LED0|LED1|LED2|LED3, 0); for (int i = 1; i <= PWM_BASE; i++) channel_set (f*(i/4), LED0|LED1|LED2|LED3, i); } // the loop routine runs over and over again forever: void loop() { dimmer (250); red_white (3, 400, PWM_BASE-1); flash (10, 200, 80, PWM_BASE-1); lr_speedup (4, PWM_BASE-1); }