int w = 600; int h = 600; int n = 12; int led_table = 0; int saved_led_table = 0; int state = 0; int saved_state = 0; int times = 5; int seq_count = 0; int seq_index = 0; PFont font; String label; int num_seq = 7; String sequences[] = {"Default", "Wave up", "Spiral", "Op spiral", "Bursts", "Blink all", "Random" }; int[] wave_up = { 512, 1280, 2176, 65, 34, 20, 8 }; int[] spiral = { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 }; int[] op_spiral = { 65, 130, 8452, 8712, 9232, 10272 }; int[] bursts = { 65, 130, 65, 130, 10272, 130, 10272, 8452, 8712, 8452, 9232, 8452 }; int[] blinkall = { 4095, 0 }; void setup() { fill(255,0,0); stroke(0,0,0); size(w, h); font = loadFont("Serif-24.vlw"); textFont(font); textAlign(CENTER); } void exit_state() { led_table = saved_led_table; state=0; seq_count = 0; } void draw_leds() { for (int i=0; i> i) & 1) == 1) { fill(255,0,0); } else { fill (160,150,150); } ellipse(w/2-cos(radians(i*360/n))*w/4, h/2-sin(radians(i*360/n))*w/4, 50, 50); fill(0, 0, 0); text(char(i+97), w/2-cos(radians(i*360/n))*w/4, h/2-sin(radians(i*360/n))*w/4+8); } label=nf(led_table, 5); text(label, w/2, h-50); label=sequences[state]; text(label, w/2, 50); } void draw() { background(237,237,213); switch (state) { case 0: // normal state: light selected LEDs draw_leds(); break; case 1: // Preprogrammed Sequence if (seq_index > wave_up.length-1) { seq_index = 0; seq_count++; } if (seq_count spiral.length-1) { seq_index = 0; seq_count++; } if (seq_count op_spiral.length-1) { seq_index = 0; seq_count++; } if (seq_count bursts.length-1) { seq_index = 0; seq_count++; } if (seq_count blinkall.length-1) { seq_index = 0; seq_count++; } if (seq_count=48) && (key<48+num_seq)) { saved_state = state; if (state == 0) { saved_led_table = led_table; } seq_count=0; state = key-48; } int temp = key-97; // a = 0 if ((temp < 0) || (temp>n)) { return; } if ((led_table >>temp & 1) == 1) { led_table = led_table & 32767-int(pow(2, temp)); } else { led_table = led_table | 1<