// // Flashing Led Technology... // numLEDs = 10 PROC setup // // Read and decode our data // CYCLE RESTORE CYCLE READ l, s, d IF l + s + d = 0 THEN BREAK PROC led(l, s) IF d <> 0 THEN WAIT (d / 10) REPEAT REPEAT END // // PROC setup: // Clear the screen and put up the LEDs // DEF PROC setup LOCAL i HGR colOn = Red // On Colour colOff = Black // Off Colour rdius0 = GWIDTH / (numLEDs * 2) - 18 // Outer rdius1 = GWIDTH / (numLEDs * 2) - 22 // Inner hStep = GWIDTH / numLEDs hOff = hStep / 2 vPos = GHEIGHT / 2 // Vertical middle of the screen FOR i = 1 TO numLEDs CYCLE PROC led(i, FALSE) REPEAT ENDPROC // // PROC led: // Turn an LED on or off // DEF PROC led(led, state) COLOUR = colOn CIRCLE (hStep * led - hOff, vPos, rdius0, TRUE) IF NOT state THEN // Turn it OFF COLOUR = colOff CIRCLE (hStep * led - hOff, vPos, rdius1, TRUE) ENDIF // Make them look "real" by putting a flat on them... COLOUR = Black RECT (0, vPos - rdius0, GWIDTH, 2, TRUE) UPDATE ENDPROC // // LED Sequence data // Data is read in triplets: L,S,N where L is the LED (1-8), S is the state // 1 = on, 0 = off, and N is the delay time in 10th of seconds. // 0,0,0 is end of the sequence. // DATA 1, 1, 1 DATA 2, 1, 1 DATA 1, 0, 0, 3, 1, 1 DATA 2, 0, 0, 4, 1, 1 DATA 3, 0, 0, 5, 1, 1 DATA 4, 0, 0, 6, 1, 1 DATA 5, 0, 0, 7, 1, 1 DATA 6, 0, 0, 8, 1, 1 DATA 7, 0, 0, 9, 1, 1 DATA 8, 0, 0, 10, 1, 1 DATA 9, 0, 1 DATA 10, 0, 1 // DATA 10, 1, 1 DATA 9, 1, 1 DATA 10, 0, 0, 8, 1, 1 DATA 9, 0, 0, 7, 1, 1 DATA 8, 0, 0, 6, 1, 1 DATA 7, 0, 0, 5, 1, 1 DATA 6, 0, 0, 4, 1, 1 DATA 5, 0, 0, 3, 1, 1 DATA 4, 0, 0, 2, 1, 1 DATA 3, 0, 0, 1, 1, 1 DATA 2, 0, 1 DATA 1, 0, 1 // DATA 0, 0, 0