Next was a 4 x x 4, using one Allegro 6279 (a Serial-Input, 16 bit parallel out Constant-Current Latched sink Driver for the LED cathodes), a PIC 16F876a, and discrete transistors for source drivers. I designed the circuit boards using EAGLE, etched and drilled them myself. From there I went to the 5 x 5 x 5. I decided to use a circuit board purchased from PICPROJECTS.org. It is designed to use two surface-mount STP16CP05's for the LED sink drivers, and 5 discrete transistors for source drivers. The PICPROJECTS board was designed for single-color LED's. Also, the board is designed to use a PIC 16F688, using it's internal 8 MHZ oscillator.
Since I wanted to use bi-color LED's, 10 source drivers would be required. In addition, I wanted lots more flash memory and a faster clock, so I opted for for the PIC18F2520. The result was that a small "Piggy-Back board" would be needed to replace the 16F688. Once again I used EAGLE to design the board, which turned out to be about 2 x 2.5 inches. It holds the PIC, along with the associated MCLR resistor, a small in-line socket for a cable to connect ICSP, two decoupling Caps, and an isolation diode in the MCLR connection. Two UDN2981's are used for the LED source drivers. There are only 5 wire connections to the main board - power and ground, and wires for Data, Clock, and Latch. The Led matrix anodes (levels) are connected to the UDN2981's on the piggyback board. I connected the Data, Clock, and Latch wires to the holes on the main board where the 16f688 would normally go. Also note that the maximum clock frequency specified for the 16CP05 is 30 MHZ, I am running the 18F2520 at 32 MHZ, but have not experienced ANY problems.
The board could easily be enlarged to include a 5 volt regulator and associated components, so a number of different "wall warts" could be used for power rather than needing an external regulated 5 volt supply. A PDF of the schematic is attached. It was made using EXPRESS PCB, since I did not like the rendition of the PIC18F2520 in EAGLE. The schematic is not the greatest, but is readable. The board is simple enough that a perf board could be used with point to point wiring instead of one that is etched.
If someone wishes to just make a single color cube, it would not be difficult to change my PBP software for a single color. In addition, rather than using the UDN2981's, then 5 discrete transistors could be used, soldered onto the main board where they would normally go. Five connections from the PIC Port pins on the piggyback board would then have to be connected to the holes where the port pins on the 16f688 would be.
The PICPROJECTS circuit board is excellent, and not very expensive. The STP16CP05's are available from Digi-Key #497-5743-1-ND at $2.79 each. My only complaint regarding the board would be the size of the 25 pads where the Cube connects. Rather than attempt a schematic, I would refer to the PICPROJECTS website - download that one. His website also has some good tips on building the cube. In addition, there are a couple of "Instructables"
on the web that are also very good.
I did not solder the LED Cube directly to the circuit board. Instead I soldered individual wires to each anode, connecting to the circuit board in that way. I realize that the connections look like a real "rats nest", but there was a method to my madness. The anode leads from the cube go through holes in the masonite top of the enclosure, so the circuit board and wires will be hidden. I soldered all the wires to the circuit board first. The cube anode leads were then inserted through the holes in the top of the lid, and then connected soldering one wire at a time working along each row . The four outside corners of the cube were secured with a small dollop of silicon glue after all the wires were connected and the cube was squared with the top (AFTER TESTING IT !).
I have attached some PDF sheets showing how to determine the HEX or Binary values for the various patterns. These patterns are viewed "looking down" at the top of the cube. They are the easiest to develop. One or more levels is enabled to display the pattern. If it is desired to display red on one layer,and green on another, the layers must be multiplexed. In addition, if the SAME level is multiplexed between red and green, yellow to gold color can result. If front - to back or side - to side patterns are desired, the various layers need to be multiplexed, and it might be a little more difficult to visualize and determine the pattern. Good examples would be the front to back spelling of "GO PACK GO". The letters for the rising pattern "GO PACKERS" for example, are easier to visualize. I have included a PDF of a 5 x 5 matrix of squares to use in determining patterns. To use it, print a copy, and shade in the various squares with a pencil to show the desired pattern (looking down at the cube). From that determine the HEX (or binary) value for PATTERN using one of the attached PDF's as a guide. ( PATTERN is used in the SHOWIT routine to shift out the 25 bits ).
My software uses a very, very large number of constants for the various patterns. I did that in case I wanted to use a pattern more than once, to eliminate typing in the HEX or binary pattern each time. It is fairly well commented, to make it less confusing. After making a cube and using the software, it would be a simple task to modify the patterns or to come up with new animations. If you are not a PACKERS fan, I suppose you can comment out or remove those animations.
In case you have not seen it, here is a link to my YouTube Video :
I have added several animations, and changed a couple as well since making the video.
My code is not the most efficient, and probably not the most graceful, but it works. Constructive criticism and suggestions are welcome. (Please be gentle)
The link to the PICPROJECTS website is: http://picprojects.org.uk/projects/lc/
Here is the link for the Schematic : http://picprojects.org.uk/projects/lc/cube555cS.pdf
The usual disclaimer applies : I am not associated with PICPROJECTS in any way . . . . .
The first short program (CUBE TEST) can be used test the LED's to make sure they are correct.
'
************************************************** *********]*****
'* Name : CUBE TEST *
'* Author : Ken Stuempges * *
'* Date : 2/4/2011 *
'* Version : 1.0 *
'* Notes : A short program for troubleshooting
'* : Only PortC (Red LED's) are tested
'* : Add L1G to L5G (or change) to check PortB *
'* : *
'************************************************* ***************
INCLUDE "Modedefs.bas"
INCLUDE "alldigital.pbp"
OSCCON = $70
OSCTUNE.6 = 1
DEFINE OSC 32
TRISA = %00000000
TRISB = %00000000
TRISC = %00000000
DAT VAR PORTA.1 'DATA LINE FOR STP16CP05
CLK VAR PORTA.0 'CLOCK LINE FOR STP16CP05
LATCH_EN VAR PORTA.2 'LATCH ENABLE FOR STP16CP05
L1G VAR PORTB.0 'CUBE LEVEL 1 FOR GREEN LED
L2G VAR PORTB.1 'CUBE LEVEL 2 FOR GREEN LED
L3G VAR PORTB.2 'CUBE LEVEL 3 FOR GREEN LED
L4G VAR PORTB.3 'CUBE LEVEL 4 FOR GREEN LED
L5G VAR PORTB.4
L1R VAR PORTC.0 ' RED
L2R VAR PORTC.1 ' RED
L3R VAR PORTC.2 ' RED
L4R VAR PORTC.3 ' RED
L5R VAR PORTC.4
LENGTH VAR LONG
PATTERN VAR LONG 'USED IN SHIFTOUT FOR BITS TO SEND TO STP16CP05
'************************************
'CONSTANTS FOR EACH LED POSITION
'
LED_1 CON $0000001
LED_2 CON $0000002
LED_3 CON $0000004
LED_4 CON $0000008
LED_5 CON $0000010
LED_6 CON $0000020
LED_7 CON $0000040
LED_8 CON $0000080
LED_9 CON $0000100
LED_10 CON $0000200
LED_11 CON $0000400
LED_12 CON $0000800
LED_13 CON $0001000
LED_14 CON $0002000
LED_15 CON $0004000
LED_16 CON $0008000
LED_17 CON $0010000
LED_18 CON $0020000
LED_19 CON $0040000
LED_20 CON $0080000
LED_21 CON $0100000
LED_22 CON $0200000
LED_23 CON $0400000
LED_24 CON $0800000
LED_25 CON $1000000
'
GOTO MAIN
'***************************************
TEST: ' ALL LED POSITIONS FOR TESTING
LOOKUP2 LENGTH,[LED_1,LED_2,LED_3,LED_4,LED_5,LED_6,LED_7,LED_8,LE D_9,_
LED_10,LED_11,LED_12,LED_13,LED_14,LED_15,LED_16,L ED_17,LED_18,_
LED_19,LED_20,LED_21,LED_22,LED_23,LED_24,LED_25],PATTERN
RETURN
'*******************************************
'************************************************* *****************
SHOWIT:
LATCH_EN = 0 'DATA LATCHED AFTER SHIFT OUT VIA LO TO HI TO LO OF LATCH
shiftout DAT,CLK,0,[PATTERN\25] 'LSB FIRST ( LED # 25, THEN 24 ETC)
LATCH_EN = 1
PAUSEUS 10
LATCH_EN = 0
PAUSEUS 10
RETURN
'*****************************************
'
MAIN:
CLEAR
PORTB=0
PORTC=0 ' CLEAR BOTH PORTS
' DISPLAY EACH LED, ON FOR ONE SECOND, THEN OFF FOR 1/2 SEC, FOR EACH LEVEL
LENGTH = 0
TEST_LOOP:
FOR LENGTH = 0 TO 24
GOSUB TEST ' GET THE LED POSITION
L1R=1
GOSUB SHOWIT
PAUSE 1000
L1R=0
PAUSE 250
NEXT LENGTH
FOR LENGTH = 0 TO 24
GOSUB TEST ' GET THE LED POSITION
GOSUB SHOWIT
L2R=1
PAUSE 1000
L2R=0
PAUSE 250
NEXT LENGTH
FOR LENGTH = 0 TO 24
GOSUB TEST ' GET THE LED POSITION
GOSUB SHOWIT
L3R=1
PAUSE 1000
L3R=0
PAUSE 250
NEXT LENGTH
FOR LENGTH = 0 TO 24
GOSUB TEST ' GET THE LED POSITION
GOSUB SHOWIT
L4R=1
PAUSE 1000
L4R=0
PAUSE 250
NEXT LENGTH
FOR LENGTH = 0 TO 24
GOSUB TEST ' GET THE LED POSITION
GOSUB SHOWIT
L5R=1
PAUSE 1000
L5R=0
PAUSE 250
NEXT LENGTH
GOTO TEST_LOOP
end
'************************************************* ***************
'* Name : 5x5x5 Red-Green LED Cube *
'* Author : Ken Stuempges *
'* *
'* Date : 2 Feb 2011 *
'* Version : 1.0 *
'* Notes : *
'* :
'* : COMPILED USING PBP2.6 (LONG)
'* : PIC 18F2520 RUNNING @ 32MHZ ON INTERNAL OSCILLATOR
'************************************************* ****************************
'* : CHANGED THE 18F2520 INCLUDE FILE AS FOLLOWS
'*
'* ;__CONFIG _CONFIG1H, _OSC_HS_1H ;ORIGINAL CODE COMMENTED OUT
'*
'* changed to this
'* __CONFIG _CONFIG1H, _OSC_INTIO67_1H ; INT OSC TIMES 4 *
'************************************************* ***************************
INCLUDE "alldigital.pbp"
OSCCON = $70
OSCTUNE.6 = 1
DEFINE OSC 32
TRISA = %00000000
TRISB = %00000000
TRISC = %00000000
'****************************************
' VARIBLES
'*******************************************
'
DAT VAR PORTA.1 'DATA LINE FOR STP 16CPO5 SERIAL IN PARALLEL OUT
CLK VAR PORTA.0 'CLOCK
LATCH_EN VAR PORTA.2 'LATCH ENABLE
L1G VAR PORTB.0 'CUBE LEVEL 1 (BOTTOM) FOR GREEN LEDS
L2G VAR PORTB.1 'CUBE LEVEL 2 FOR GREEN LEDS
L3G VAR PORTB.2 'CUBE LEVEL 3 FOR GREEN LEDS
L4G VAR PORTB.3 'CUBE LEVEL 4 FOR GREEN LEDS
L5G VAR PORTB.4 'CUBE LEVEL 5 (TOP)FOR GREEN LEDS
'
L1R VAR PORTC.0 ' RED
L2R VAR PORTC.1 ' RED
L3R VAR PORTC.2 ' RED
L4R VAR PORTC.3 ' RED
L5R VAR PORTC.4 ' RED
TIME VAR WORD 'USED TO VARY PAUSE TIMES AS NEEDED
TIME_1 VAR WORD
LENGTH VAR WORD ' "INDEX" VARIABLE FOR LOOKUP TABLE
PATTERN VAR LONG 'USED IN SHIFTOUT FOR BITS TO SEND TO ALLEGRO
i var byte ' used in mpx routines
j var byte 'used in mpx routines
W VAR WORD ' COUNTER
X VAR WORD 'COUNTER
Y VAR WORD
Z VAR WORD
SYMBOL LEVELR = PORTC ' RED LED'S USED IN MPX ROUTINES
SYMBOL LEVELG = PORTB ' GREEN LED'S
'
'***************************CONSTANTS *************************
'************************************
'CONSTANTS FOR EACH LED POSITION ON THE CIRCUIT BOARD
'
LED_1 CON $0000001
LED_2 CON $0000002
LED_3 CON $0000004
LED_4 CON $0000008
LED_5 CON $0000010
LED_6 CON $0000020
LED_7 CON $0000040
LED_8 CON $0000080
LED_9 CON $0000100
LED_10 CON $0000200
LED_11 CON $0000400
LED_12 CON $0000800
LED_13 CON $0001000
LED_14 CON $0002000
LED_15 CON $0004000
LED_16 CON $0008000
LED_17 CON $0010000
LED_18 CON $0020000
LED_19 CON $0040000
LED_20 CON $0080000
LED_21 CON $0100000
LED_22 CON $0200000
LED_23 CON $0400000
LED_24 CON $0800000
LED_25 CON $1000000
'***************************************
'CONSTANTS FOR SOLID ROWS AND COLUMNS
'ACTUALLY COLUMN IS MISLEADING, SHOULD BE X AND Y VERTICAL ROWS
'
ROW_1 CON $0108421
ROW_2 CON $0210842
ROW_3 CON $0421084
ROW_4 CON $0842108
ROW_5 CON $1084210
COL_1 CON $000001F
COL_2 CON $00003E0
COL_3 CON $0007C00
COL_4 CON $00F8000
COL_5 CON $1F00000
'*************************************
'CONSTANTS F0R VARIOUS PATTERNS
CORNERS CON $1100011 'OUTSIDE CORNER DOTS
INCORNERS CON $0060140 'INSIDE SQUARE CORNERS
OUTSQUARE CON $1F8C63F 'OUTSIDE PERIMETER SQUARE
INSQUARE CON $00739C0 'SMALL SOLID INNER SQUARE
INSQ CON $00729C0 'INNER SQUARE PERIMETER
DOT CON $0001000 ' SAME AS LED # 13
INX CON $0051140 ' INNER "X"
SML_CROSS CON $0023880 ' SMALL INNER CROSS
CROSS CON $0427C84 ' INSIDE CROSS
SHFT_X CON $0A51141 '
XPAT CON $1151151 ' PATTERN FOR FULL X ON A LEVEL
INSQOUTCOR CON $11739D1 'INNER SQUARE, 4 CORNER DOTS
FULL CON $1FFFFFF ' ENTIRE LEVEL ON
LFTSLSH CON $0111110 ' LEFT SLASH LINE
RTSLSH CON $1041041 'RIGHT SLASH LINE
'****************************
'*********************
' THE NEXT 4 ARE CONSTANTS FOR THE PARTS OF SPOKES
'
SPOKE_1 CON $0021080
SPOKE_2 CON $0011100
SPOKE_3 CON $0003800
SPOKE_4 CON $0041040
'*********************************************
' CONSTANTS FOR ANGLE_FILL
F_1 CON $1880000
F_2 CON $1CC4000
F_3 CON $1EE6200
F_4 CON $1FF7310
F_5 CON $0000023
F_6 CON $0000467
F_7 CON $0000CEF
F_8 CON $0119DFF
'************************************************* **
' CONSTANTS FOR SMALL SQUARES
SQ_1 CON $0000063
SQ_2 CON $0000318
SQ_3 CON $18C0000
SQ_4 CON $0318000
SQ_5 CON $00018C0
SQ_6 CON $0031800
SQ_7 CON $0063000
SQ_8 CON $0003180
SQ_9 CON $0000C60
SQ_10 CON $00C6000
SQ_11 CON $0630000
SQ_12 CON $0018C00
SQ_13 CON $0006300
SQ_14 CON $00000C6
'***************************************
' CONSTANTS FOR PERIMETER PATTERN OF ONE LED AT A TIME
' STARTS AT LED ONE AND FILLS AROUND FROM TOP TO BOTTOM
D1 CON $0000001
D2 CON $0000003
D3 CON $0000007
D4 CON $000000F
D5 CON $000001F
D6 CON $000021F
D7 CON $000421F
D8 CON $008421F
D9 CON $108421F
D10 CON $188421F
D11 CON $1C8421F
D12 CON $1E8421F
D13 CON $1F8421F
D14 CON $1F8C21F
D15 CON $1F8C61F
D16 CON $1F8C63F
'******************NOW BOTTOM TO TOP
D17 CON $0000001
D18 CON $0000021
D19 CON $0000421
D20 CON $0008421
D21 CON $108421
D22 CON $0308421
D23 CON $0708421
D24 CON $0F08421
D25 CON $1F08421
D26 CON $1F88421
D27 CON $1F8C421
D28 CON $1F8C621
D29 CON $1F8C631
D30 CON $1F8C639
D31 CON $1F8C63D
D32 CON $1F8C63F
'************************************
'************************************
' NOW PATTERN TO CONTINUE FILLING LAYER CIRCULARLY
D33 CON $1F8C67F
D34 CON $1F8C6FF
D35 CON $1F8C7FF
D36 CON $1F8E7FF
D37 CON $1FCE7FF
D38 CON $1FEE7FF
D39 CON $1FFE7FF
D40 CON $1FFEFFF
D41 CON $1FFFFFF
'************************************************* ***
'************************************ROWS AND COLUMNS
ROW_1_5 CON $118C631
ROW_2_4 CON $0A5294A
COL_1_5 CON $1F0001F
COL_2_4 CON $00F83E0
'************************************************* **
'************************************************* **
'CONSTANTS FOR "SNAKE" THESE CONSIST OF 3 LED SEQUENCES (SEGMENTS)
S_1 CON $0000010 'THAT ARE USED TO MOVE THE SNAKE AROUND
S_2 CON $0000210
S_3 CON $0000310
S_4 CON $0000380
S_5 CON $0001180
S_6 CON $0021080
S_7 CON $0061000
S_8 CON $0860000
S_9 CON $0840000 ' START LEVEL 4
S_10 CON $0800000
S_11 CON $1800000
S_12 CON $1880000
S_13 CON $1084000
S_14 CON $0084200
S_15 CON $0004300
S_16 CON $00001C0
S_17 CON $00000E0
S_18 CON $0000460
S_19 CON $0008420
S_20 CON $0108400
S_21 CON $0108000 'START LEVEL 5
S_22 CON $0300000
S_23 CON $0700000
S_24 CON $0E00000
S_25 CON $0C40000
S_26 CON $0842000
S_27 CON $0042100
S_28 CON $0002108
S_29 CON $000010C
S_30 CON $000000E
S_31 CON $0000046
S_32 CON $0000842
S_33 CON $0010840
S_34 CON $0210800
S_35 CON $0210000 ' BACK TO LEVEL ONE
S_36 CON $0210800
S_37 CON $0011800
S_38 CON $0003800
S_39 CON $0007000
S_40 CON $0006200
S_41 CON $0004210
'************************************************* **
'***********************************
'CONSTANTS FOR SPEARS ( SOME THE SAME AS EXISTING CONSTANTS,
' THEY ARE REPEATED FOR MORE CLEAR USE IN THE LOOKUP TABLE )
SP_1 CON $0000001
SP_2 CON $0000003
SP_3 CON $0000007
SP_4 CON $000000F
SP_5 CON $000001F
SP_6 CON $0800000
SP_7 CON $0840000
SP_8 CON $0842000
SP_9 CON $0842100
SP_10 CON $0842108
SP_11 CON $0080000
SP_12 CON $00C0000
SP_13 CON $00E0000
SP_14 CON $00F0000
SP_15 CON $00F8000
SP_16 CON $0000002
SP_17 CON $0000042
SP_18 CON $0000842
SP_19 CON $0001842
SP_20 CON $0210842
SP_21 CON $0000400
SP_22 CON $0000C00
SP_23 CON $0001C00
SP_24 CON $0003C00
SP_25 CON $0007C00
SP_26 CON $0400000
SP_27 CON $0420000
SP_28 CON $0421000
SP_29 CON $0421080
SP_30 CON $0421084
SP_31 CON $0000200
SP_32 CON $0000300
SP_33 CON $0000380
SP_34 CON $00003C0
SP_35 CON $00003E0
'*****************************************
GOTO MAIN
'******************SUBROUTINES******************** ***
'****** THERE ARE INSTANCES OF "SPAGHETTI CODE" IN SOME SUBROUTINES
'******* i.e. A SUBROUTINE MIGHT NOT HAVE IT'S OWN RETURN STATEMENT
'********* INSTEAD IE HAS A GOTO ANOTHER SUROUTINE FOR THE RETURN
'********** THIS WAS DONE TO REDUCE CODE USED MULTIPLE TIMES
'************************************************* ****************
'
CLR_LEVELS: ' SETS ALL THE LEVEL DRIVERS TO ZERO
L1R=0 : L2R=0 : L3R=0 : L4R=0 : L5R=0
L1G=0 : L2G=0 : L3G=0 : L4G=0 : L5G=0
RETURN
'*******************************
'***************************************
' SPEAR_1 IS A SUBROUTINE TO REDUCE CODE FOR SPEAR
'******************************************
SPEAR_1:
FOR LENGTH = X TO Y ' X AND Y VARY DEPENDING ON THE VARIOUS PATTERNS
' X AND Y ARE SET IN THE CALLING ROUTINE
GOSUB SPEARS ' SPEARS IS A LOOKUP TABLE
GOSUB SHOWIT
PAUSE TIME
NEXT LENGTH
RETURN
'*******************************************
'SNAKE_1, _2, _3, AND _4 ARE FOR REDUCING CODE IN THE SNAKE ROUTINE
' BY ADJUSTING THE INDEX "LENGTH" FOR THE LOOKUP TABLE
'************************************************
SNAKE_1:
FOR LENGTH = 0 TO 8
GOSUB SNAKEPAT ' SNAKEPAT IS THE LOOKUP TABLE FOR SNAKE
GOSUB SHOWME
NEXT LENGTH
RETURN
'************************************
SNAKE_2:
FOR LENGTH = 11 TO 19
GOSUB SNAKEPAT
GOSUB SHOWME
NEXT LENGTH
RETURN
'****************************
SNAKE_3:
FOR LENGTH = 22 TO 34
GOSUB SNAKEPAT
GOSUB SHOWME
NEXT LENGTH
RETURN
'***********************************
SNAKE_4:
FOR LENGTH = 35 TO 40
GOSUB SNAKEPAT
GOSUB SHOWME
NEXT LENGTH
RETURN
'************************************************
'************************************************
GREEN_IN: 'ENTER WITH PATTERN ALREADY DEFINED
' SOME "SPAGHETTI" HERE - GOSUBS WITHIN A GOSUB ! !
' ONLY DONE TO REDUCE CODE
' ALSO, CODE SEQUENCE IS CRITICAL TO PREVENT "GHOSTING"
L1R=0 : L2R=0 : L3R=0 : L4R=0 : L5R=0 'CLEAR ALL LEVELS
GOSUB SHOWIT
IF Y = 1 THEN L1G=1 'DETERMINE WHICH LEVEL TO ACTIVATE
IF Y = 2 THEN L2G=1
IF Y = 3 THEN L3G=1
IF Y = 4 THEN L4G=1
IF Y = 5 THEN L5G=1
PAUSE TIME ' TIME DEFINED VIA "INSIDE_SPIN"
L1G=0 : L2G=0 : L3G=0 : L4G=0 : L5G=0
PATTERN = CORNERS
GOSUB SHOWIT
L1R=1 : L2R=1 : L3R=1 : L4R=1 : L5R=1
PAUSE TIME
L1R=0 : L2R=0 : L3R=0 : L4R=0 : L5R=0
RETURN
'*****************************
'************************************************* ***
PILPAT: ' LED'S USED IN THE PILLAR ROUTINE
LOOKUP2 LENGTH,[LED_5,LED_13,LED_20,LED_7,LED_23,LED_6,LED_15,LED_ 8,LED_22,_
LED_10,LED_3,LED_18,LED_4,LED_21,LED_19,LED_2,LED_ 24,LED_11,_
LED_9,LED_12,LED_1,LED_16,LED_15,LED_17,LED_14],PATTERN
RETURN
'************************************************* ****************
' LOOKUP FOR LEVEL_REVERSE
BACK_FORTH:
LOOKUP2 LENGTH,[ROW_1,ROW_1,ROW_2,ROW_3,ROW_4,ROW_5],PATTERN
RETURN
'************************************************
'***************************
'************* SMALL_SQ IS PLACED HERE TO TAKE ADVANTAGE OF THE SHOWME
'******************* SUBROUTINE WHICH FOLLOWS.
SMALL_SQ: ' PATTTERNS FOR MOVING SQUARES
LOOKUP2 LENGTH,[SQ_1,SQ_6,SQ_4,SQ_2,SQ_8,SQ_5,SQ_7,SQ_3,_
SQ_9,SQ_11,SQ_10,SQ_13,SQ_14,SQ_4,SQ_14,_
SQ_3,SQ_1,SQ_8],PATTERN
'**************** SHOWME IS THE SAME AS SHOWIT, EXCEPT FOR THE
'**************** PAUSE TIME (VARIABLE TIME) AT THE END
'**************** THIS WAS DONE TO ELIMINATE THE NEED FOR A LARGE
'**************** NUMBER OF PAUSES IN SEVERAL ANIMATION ROUTINES
'****************
SHOWME:
LATCH_EN = 0 'DATA LATCHED AFTER SHIFT OUT VIA LO TO HI TO LO OF LATCH
shiftout DAT,CLK,0,[PATTERN\25] 'LSB FIRST ( LED # 25, THEN 24 ETC)
LATCH_EN = 1
PAUSEUS 10
LATCH_EN = 0
PAUSE TIME
RETURN
'************************************************* *********
RINGPAT:
LOOKUP2 LENGTH,[D1,D2,D3,D4,D5,D6,D7,D8,D9,D10,_
D11,D12,D13,D14,D15,D16],PATTERN
RETURN
'************************
RINGPAT_1:
LOOKUP2 LENGTH,[D17,D18,D19,D20,D21,D22,D23,D24,_
D25,D26,D27,D28,D29,D30,D31,D32],PATTERN
RETURN
'************************
RINGPAT_A ' WILL FILL THE ENTIRE LAYER
LOOKUP2 LENGTH,[D1,D2,D3,D4,D5,D6,D7,D8,D9,D10,_
D11,D12,D13,D14,D15,D16,_
D33,D34,D35,D36,D37,D38,D39,D40,D41],PATTERN
RETURN
'********************************
LINES: 'THIS TABLE IS USED TO GET 5 LED POSITIONS ONE AT A TIME FOR FIVE_LINES
LOOKUP2 LENGTH,[LED_1,LED_2,LED_3,LED_4,LED_5,LED_6,LED_7,LED_8,LE D_9,_
LED_10,LED_11,LED_12,LED_13,LED_14,LED_15,LED_16,L ED_17,LED_18,_
LED_19,LED_20,LED_21,LED_22,LED_23,LED_24,LED_25],PATTERN
RETURN
'*******************************************
RING_AROUND: 'GETS THE PERIMETER LED FOR THE RING ROUTINE
LOOKUP2 LENGTH,[LED_1,LED_2,LED_3,LED_4,LED_5,LED_10,LED_15,LED_20 ,_
LED_25,LED_24,LED_23,LED_22,LED_21,LED_16,LED_11,L ED_6,LED_1],PATTERN
RETURN
'************************
RING_MUX:
' 'SELECT THE COLUMNS (LED POSITIONS) DISPLAYS
FOR X = 1 TO 15 'ALTERNATING COLOR LED'S
L1R= 1 : L2G=0
PAUSE TIME
L1R= 0 : L2G=1
PAUSE TIME
L2G= 0 : L3R=1
PAUSE TIME
L3R= 0 : L4G=1
PAUSE TIME
L4G=0 : L5R=1
PAUSE TIME
L5R=0
NEXT X
X=0
RETURN
'*********************************************
SNAKEPAT: ' THESE ARE 3 LED SEQUENCE PATTERNS FOR SNAKE
LOOKUP2 LENGTH,[S_1,S_2,S_3,S_4,S_5,S_6,S_7,S_8,S_9,S_10,_
S_11,S_12,S_13,S_14,S_15,S_16,S_17,S_18,S_19,S_20, _
S_21,S_22,S_23,S_24,S_25,S_26,S_27,S_28,S_29,S_30, _
S_31,S_32,S_33,S_34,S_35,S_36,S_37,S_38,S_39,S_40, S_41],PATTERN
RETURN
'*************************************************
SPEARS:
LOOKUP2 LENGTH,[SP_1,SP_2,SP_3,SP_4,SP_5,_ ' EACH SPEAR IS ONE LINE
SP_6,SP_7,SP_8,SP_9,SP_10,_
SP_11,SP_12,SP_13,SP_14,SP_15,_
SP_16,SP_17,SP_18,SP_19,SP_20,_
SP_21,SP_22,SP_23,SP_24,SP_25,_
SP_26,SP_27,SP_28,SP_29,SP_30,_
SP_31,SP_32,SP_33,SP_34,SP_35],PATTERN
RETURN
'*************************************************
'*****************************************
' SPELLS "GO PACKERS"
' ***********MORE "SPAGHETTI - GOTO'S FROM A GOSUB - TO SAVE CODE
'************************************************* ********************
PACKERS: LOOKUP2 LENGTH,[$0DAD62E,$0E8C62E,$02294BF,$1C314DC,$118C62E,_
$115109F,$118D6BF,$12694BF,$09AD6B2],PATTERN
GOTO SHOWIT 'WILL RETURN FROM GOSUB PACKERS IN THE SHOWIT ROUTINE
'************************************************* *********************
'************************************************* *********************
PACK_RULES: ' "PACKERS RULE"
LOOKUP2 LENGTH,[$02294BF,$1C314DC,$118C62E, $115109F,_
$118D6BF,$12694BF,$09AD6B2,$12694BF,$0F8420F,$1084 21F,_
$118D6BF],PATTERN
GOTO SHOWIT
'****************************
BEARS_SUCK: ' "BEARS SUCK"
LOOKUP2 LENGTH,[$0AAD6BF,$118D6BF,$1C314DC,$12694BF,$09AD6B2,_
$09AD6B2,$0F8420F,$118C62E,$115109F],PATTERN
GOTO SHOWIT
'*******************************
'***************THIS LOOKUP IS FOR A REVERSE SLOPE USING GREEN LED'S
GETSLOPE_1:
LOOKUP2 LENGTH,[LED_4,LED_3,LED_2,LED_1,LED_6,LED_11,LED_16,LED_21 ,_
LED_22,LED_23,LED_24,LED_25,LED_20,LED_15,LED_10,_
LED_5,LED_4,LED_3,LED_2,LED_1],PATTERN
RETURN
'*******************************************
' THIS LOOKUP IS FOR THE RED LED PATTERNS FOR SLOPE
GETSLOPE:
LOOKUP2 LENGTH,[LED_1,LED_2,LED_3,LED_4,LED_5,LED_10,LED_15,LED_20 ,_
LED_25,LED_24,LED_23,LED_22,LED_21,LED_16,LED_11,_
LED_6,LED_1,LED_2,LED_3,LED_4],PATTERN
RETURN
'************************************************* *****************
' SHOWIT IS USED TO OUTPUT THE LED PATTERN TO THE STP 16CP05'S
' THERE IS ANOTHER ROUTINE CALLED "SHOWME" IDENTICAL TO SHOWIT,
' EXCEPT THAT A PAUSE TIME IS ADDED AT THE END
' 25 BITS ARE NEEDED FOR THE 25 LED SETS OF CATHODES
' THE PAUSEUS 10 WAS AN ARBITRARY VALUE, COULD BE MUCH SHORTER
' THE REQUIRED SETUP TIME FOR LATCH IS ONLY NANO SECONDS
' DATA IS LATCHED AFTER SHIFTOUT VIA LO TO HI OF LATCH
' SHIFTED OUT LSB FIRST, (LED POSITION 1, THEN 2, ETC UP TO LED 25)
' SEE THE PDF SHEETS TO DETERMINE THE BINARY OR HEX PATTERNS NEEDED
SHOWIT:
LATCH_EN = 0
shiftout DAT,CLK,0,[PATTERN\25] '
LATCH_EN = 1
PAUSEUS 10
LATCH_EN = 0
PAUSEUS 10
RETURN
'*****************************************
'
' MULTIPLEX ROUTINES FOR LEVELS AND COMBINATIONS OF LEVELS
' AN OVERALL LOOP VARIABLE MUST BE ADDED TO PROVIDE TIME ON FOR DISPLAY
' AND BRIGHTNESS IF MULTIPLE LEVELS ARE USED CONSECUTIVELY
' ALSO, VARIABLE "Y" DETERMINES BRIGHTNESS IN INDIVIDUAL SUBROUTINES
'*********************************
' VARIABLE CONSECUTIVE LAYERS MPX
' i IS THE START LAYER , j IS THE END LAYER
' i AND j MUST BE DECLARED AT THE START OF THE SUBROUTINE
'********************************************
MPX:
FOR Y = 1 TO 5 ' BRIGHTNESS LOOP
FOR X = I TO j ' VARIABLE CONSECUTIVE LAYERS, DEPENDING ON i and j
LEVELG.0[X]=1 '
PAUSEUS TIME '
LEVELG.0[X]=0 '
LEVELR.0[X]=1 '
PAUSEUS TIME_1
LEVELR.0[X]=0
NEXT X
NEXT Y
return
'***********************************
' LEVEL ONE MPX
'***************************
MPX_1:
FOR Y = 1 TO 10 ' BRIGHTNESS
X=0 'LEVEL 1 MPX- X IS POINTER FOR LEVEL ( 0 = LEVEL 1)
LEVELG.0[X]=1 '
PAUSEUS TIME ' FLICKER
LEVELG.0[X]=0 '
LEVELR.0[X]=1 '
PAUSEUS TIME_1 ' FLICKER
LEVELR.0[X] = 0 '
next y
RETURN
''''''''''''''''''''''''''''''''
' LEVEL TWO MPX
'**********************************
MPX_2:
FOR Y = 1 TO 10 ' BRIGHTNESS
X=1 'LEVEL 2 MPX- X IS POINTER FOR LEVEL ( 1 = LEVEL 2)
LEVELG.0[X]=1 '
PAUSEUS TIME ' FLICKER
LEVELG.0[X]=0 '
LEVELR.0[X]=1 '
PAUSEUS TIME_1 ' FLICKER
LEVELR.0[X] = 0 '
next y
RETURN
''''''''''''''''''''''''''''''''
' LEVEL 3 MPX
'******************************
MPX_3:
FOR Y = 1 TO 10 ' BRIGHTNESS
X=2 ' LEVEL 3 MPX (X=2 FOR LEVEL 3)
LEVELG.0[X]=1 '
PAUSEUS TIME ' FLICKER
LEVELG.0[X]=0 '
LEVELR.0[X]=1 '
PAUSEUS TIME_1 ' FLICKER
LEVELR.0[X] = 0 '
next y
RETURN
''''''''''''''''''''''''''''''''
' LEVEL 4 MPX
'********************************
MPX_4:
FOR Y = 1 TO 10 ' BRIGHTNESS
X=3 ' LEVEL 4 MPX (X=3 FOR LEVEL 4)
LEVELG.0[X]=1 '
PAUSEUS TIME ' FLICKER
LEVELG.0[X]=0 '
LEVELR.0[X]=1 '
PAUSEUS TIME_1 ' FLICKER
LEVELR.0[X] = 0 '
next y
RETURN
'********************************
' LEVEL 5 MPX
'******************************
MPX_5:
FOR Y = 1 TO 10 ' BRIGHTNESS
X=4 ' LEVEL 5 MPX (X=4 FOR LEVEL 5)
LEVELG.0[X]=1 '
PAUSEUS TIME ' FLICKER
LEVELG.0[X]=0 '
LEVELR.0[X]=1 '
PAUSEUS TIME_1 ' FLICKER
LEVELR.0[X] = 0 '
next y
RETURN
'*********************************
'***********************************
'SUBROUTINE FOR "GO"
' VERY LONG SUBROUTINE, CALLED MORE THAN ONCE
GOPACK:
TIME = 100 'TIME FOR GREEN ON TIME IN MPX
TIME_1 = 20 ' TIME FOR RED ON TIME IN MPX
PAUSE 300
'***********************
'GOLD LETTER "G"
'***********************
G1:
FOR Z = 1 TO 10
PATTERN = $0108420
GOSUB SHOWIT
GOSUB MPX_5
PATTERN = LED_1
GOSUB SHOWIT
i=1 'LEVELS TW0, THREE, AND FOUR
j=3
gosub mpx
pattern = $0008420
gosub showit
GOSUB MPX_1
PATTERN = LED_21
GOSUB SHOWIT
i=1
j=2 ' LEVELS 2 AND 3
gosub mpx
PATTERN = $0008400
GOSUB SHOWIT
GOSUB MPX_3
NEXT Z
IF W=1 THEN GOTO O1
'************************************************* ****
G2:
FOR Z = 1 TO 10
PATTERN = $0210840
GOSUB SHOWIT
GOSUB MPX_5
PATTERN = LED_2
GOSUB SHOWIT
i=1
j=3 'LEVELS TWO, THREE, AND FOUR
GOSUB MPX
pattern = $0010840
gosub showit
GOSUB MPX_1
PATTERN = LED_22
GOSUB SHOWIT
i=1 'levels 2 and 3
j=2
gosub mpx
PATTERN = $0010800
GOSUB SHOWIT
GOSUB MPX_3
NEXT Z
IF W=1 THEN G1
'*******************************
G3:
FOR Z = 1 TO 10
PATTERN = $0421080
GOSUB SHOWIT
GOSUB MPX_5
PATTERN = LED_3
GOSUB SHOWIT
i=1
j=3
gosub mpx
pattern = $0021080
gosub showit
GOSUB MPX_1
PATTERN = LED_23
GOSUB SHOWIT
i=1
j=2
gosub mpx
PATTERN = $0021000
GOSUB SHOWIT
GOSUB MPX_3
NEXT Z
IF W=1 THEN G2
'***********************
G4:
TIME = 100
FOR Z = 1 TO 10
PATTERN = $0842100
GOSUB SHOWIT
GOSUB MPX_5
PATTERN = LED_4
GOSUB SHOWIT
i=1
j=3 'LEVELS 2, 3, AND 4
GOSUB MPX
pattern = $0042100
gosub showit
GOSUB MPX_1
PATTERN = LED_24
GOSUB SHOWIT
i=1
j=2 'LEVELS 2 AND 3
gosub mpx
PATTERN = $0042000
GOSUB SHOWIT
GOSUB MPX_3
NEXT Z
IF W=1 THEN G3
'**************************************
G5:
TIME = 2
FOR Z = 1 TO 80
PATTERN = $1084200
GOSUB SHOWIT
L5G=1
PAUSE TIME
L5G=0
PATTERN = LED_5
GOSUB SHOWIT
L2G=1 : L3G=1 : L4G=1
PAUSE TIME
L2G=0 : L3G=0 : L4G=0
PATTERN = $0084200
GOSUB SHOWIT
L1G=1
PAUSE TIME
L1G=0
PATTERN = LED_25
GOSUB SHOWIT
L2G=1 : L3G=1
PAUSE TIME
L2G=0 : L3G=0
PATTERN = $0084000
GOSUB SHOWIT
L3G=1
PAUSE TIME
L3G=0
NEXT Z
W = W+1
IF W = 1 THEN G4
W=0
'******************************
' GOLD LETTER "O"
'*********************************
O1:
GOSUB CLR_LEVELS
PAUSE 50 ' CLEAR DISPLAY AND PAUSE BEFORE LETTER "O"
W=0
O11:
TIME = 100 ' RESET TIME FROM GREEN ROUTINE (WAS 2)
FOR Z = 1 TO 30 ' ' DETERMINES OVERALL TIME FOR THE DISFPLAY
PATTERN = $0008420 ' THIS PATTERN WILL BE SHOWN ON LEVELS 1 AND 5
GOSUB SHOWIT
'''''''''''''''''''''''''''''''''
GOSUB MPX_1 ' MPX LEVEL 1
GOSUB MPX_5 ' MPX LEVEL 5
PATTERN = $0100001 'LED 1 AND LED 21
GOSUB SHOWIT
'''''''''''''''''''''
i=1 ' start layer is 2
j=3 ' end layer is 4
GOSUB MPX ' i and j defined to mpx layers 2, 3, and 4
' THE LEVELS ARE THE SAME AS LED_3, SAME i and j
NEXT Z
IF W=1 THEN RETURN
'****************************
O2:
FOR Z = 1 TO 10 ' ' DETERMINES OVERALL TIME FOR THE DISFPLAY
PATTERN = $0010840 ' THIS PATTERN WILL BE SHOWN ON LEVELS 1 AND 5
GOSUB SHOWIT
'''''''''''''''''''''''''''''''''
GOSUB MPX_1 ' MPX LEVEL 1
GOSUB MPX_5 ' MPX LEVEL 5
PATTERN = $0200002 'LED 2 AND LED 22
GOSUB SHOWIT
'''''''''''''''''''''
i=1 ' start layer is 2
j=3 ' end layer is 4
GOSUB MPX ' i and j defined to mpx layers 2, 3, and 4
' THE LEVELS ARE THE SAME AS LED_3, SAME i and j
NEXT Z
IF W=1 THEN O11
'*******************************
O3:
FOR Z = 1 TO 10
PATTERN = $0021080 ' THIS PATTERN WILL BE SHOWN ON LEVELS 1 AND 5
GOSUB SHOWIT
'''''''''''''''''''''''''''''''''
GOSUB MPX_1 ' MPX LEVEL 1
GOSUB MPX_5 ' MPX LEVEL 5
PATTERN = $0400004 'LED 3 AND LED 32
GOSUB SHOWIT
'''''''''''''''''''''
i=1 ' start layer is 2
j=3 ' end layer is 4
GOSUB MPX ' i and j defined to mpx layers 2, 3, and 4
'THE LEVELS ARE THE SAME AS LED_3, SAME i and j
NEXT Z
IF W=1 THEN O2
'****************************
O4:
TIME = 100 ' TIME WAS SET TO 2 IN "O5", NEED TO RESET
FOR Z = 1 TO 10 ' ' DETERMINES OVERALL TIME FOR THE DISFPLAY
PATTERN = $0042100 ' THIS PATTERN WILL BE SHOWN ON LEVELS 1 AND 5
GOSUB SHOWIT
'''''''''''''''''''''''''''''''''
GOSUB MPX_1 ' MPX LEVEL 1
GOSUB MPX_5 ' MPX LEVEL 5
PATTERN = $0800008 'LED 4 AND LED 24
GOSUB SHOWIT
'''''''''''''''''''''
i=1 ' start layer is 2
j=3 ' end layer is 4
GOSUB MPX ' i and j defined to mpx layers 2, 3, and 4
' THE LEVELS ARE THE SAME AS LED_3, SAME i and j
NEXT Z
IF W=1 THEN O3
'*****************************
O5:
TIME = 2 'SET TIME SLOWER FOR PROPER ADVANCE TIME FOR LETTERS
FOR Z = 1 TO 120
PATTERN = $0084200
GOSUB SHOWIT
L1G=1 : L5G=1
PAUSE TIME
L1G=0 : L5G=0
PATTERN = $1000010
GOSUB SHOWIT
L2G=1 : L3G=1 : L4G=1
PAUSE TIME
L2G=0 : L3G=0 : L4G=0
NEXT Z
W=W+1
IF W=1 THEN GOTO O4
RETURN
'****************************
'****************************
'
PACK: ' SUBROUTINE FOR "PACKERS"
'***********************************
TIME = 100 'TIME FOR GREEN ON TIME IN MPX
TIME_1 = 20 ' TIME FOR RED ON TIME IN MPX
'************************
' GOLD LETTER "P"
'*****************************
TIME = 100
FOR Z = 1 TO 10
PATTERN = $0008421
GOSUB SHOWIT
GOSUB MPX_3
GOSUB MPX_5
PATTERN = LED_1
GOSUB SHOWIT
i=0
j=4 'ALL 5 LEVELS REQUIRED
GOSUB MPX
PATTERN = LED_21
GOSUB SHOWIT
GOSUB MPX_4 'LEVEL 4
NEXT Z
'''''''''''''''''
FOR Z = 1 TO 10
PATTERN = $0010842
GOSUB SHOWIT
GOSUB MPX_3
GOSUB MPX_5
PATTERN = LED_2
GOSUB SHOWIT
i = 0
j = 4 'ALL 5 LEVELS REQUIRED
GOSUB MPX
PATTERN = LED_22
GOSUB SHOWIT
GOSUB MPX_4 'LEVEL 4
NEXT Z
'''''''''''''''''''''
FOR Z = 1 TO 10
PATTERN = $0021084
GOSUB SHOWIT
GOSUB MPX_3
GOSUB MPX_5
PATTERN = LED_3
GOSUB SHOWIT
i = 0
j = 4 'ALL 5 LEVELS REQUIRED
GOSUB MPX
PATTERN = LED_23
GOSUB SHOWIT
GOSUB MPX_4 'LEVEL 4
NEXT Z
'''''''''''''''''''''
FOR Z = 1 TO 10
PATTERN = $0042108
GOSUB SHOWIT
GOSUB MPX_3
GOSUB MPX_5
PATTERN = LED_4
GOSUB SHOWIT
i = 0
j = 4 'ALL 5 LEVELS REQUIRED
GOSUB MPX
PATTERN = LED_24
GOSUB SHOWIT
GOSUB MPX_4 'LEVEL 4
NEXT Z
'''''''''''''
TIME = 2
FOR Z = 1 TO 80
PATTERN = $0084210
GOSUB SHOWIT
L3G=1 : L5G=1
PAUSE TIME
L3G=0 : L5G=0
PATTERN = LED_5
GOSUB SHOWIT
L1G=1 : L2G=1 : L3G=1 : L4G=1 : L5G=1
PAUSE TIME
L1G=0 : L2G=0 : L3G=0 : L4G=0 : L5G=0
PATTERN = LED_25
GOSUB SHOWIT
L4G=1
PAUSE TIME
L4G=0
NEXT Z
'*********************
'GOLD LETTER "A"
'*********************
TIME = 100
for z = 1 to 10
PATTERN = LED_11
GOSUB SHOWIT
GOSUB MPX_5
PATTERN = $0008020
GOSUB SHOWIT
GOSUB MPX_4
PATTERN = $0100001
GOSUB SHOWIT
i=0
j=2
gosub mpx
pattern = row_1
gosub showit
gosub mpx_3
next z
'''''''''''''''''''''''''''
for z = 1 to 10
PATTERN = LED_12
GOSUB SHOWIT
GOSUB MPX_5
PATTERN = $0010040
GOSUB SHOWIT
GOSUB MPX_4
PATTERN = $0200002
GOSUB SHOWIT
i=0
j=2
gosub mpx
pattern = row_2
gosub showit
gosub mpx_3
next z
'''''''''''''''''''
for z = 1 to 10
PATTERN = LED_13
GOSUB SHOWIT
GOSUB MPX_5
PATTERN = $0020080
GOSUB SHOWIT
GOSUB MPX_4
PATTERN = $0400004
GOSUB SHOWIT
i=0
j=2
gosub mpx
pattern = row_3
gosub showit
gosub mpx_3
next z
'''''''''''''''''''
for z = 1 to 10
PATTERN = LED_14
GOSUB SHOWIT
GOSUB MPX_5
PATTERN = $0040100
GOSUB SHOWIT
GOSUB MPX_4
PATTERN = $0800008
GOSUB SHOWIT
i=0
j=2
gosub mpx
pattern = row_4
gosub showit
gosub mpx_3
next z
''''''''''''''''''''''''
time = 2
for z = 1 to 60
pattern = LED_15
GOSUB SHOWIT
L5G=1
PAUSE TIME
L5G=0
PATTERN =$0080200
GOSUB SHOWIT
L4G=1
PAUSE TIME
L4G=0
PATTERN = $1000010
GOSUB SHOWIT
L1G=1 : L2G=1 : L3G=1
PAUSE TIME
L1G=0 : L2G=0 : L3G=0
PATTERN = ROW_5
GOSUB SHOWIT
L3G=1
PAUSE TIME
L3G=0
NEXT Z
'''''''''''''''''
'PATTERN FOR GOLD "C"
'********************
TIME = 100
FOR Z = 1 TO 10
PATTERN = $0108420
GOSUB SHOWIT
GOSUB MPX_1
GOSUB MPX_5
PATTERN = LED_1
GOSUB SHOWIT
i=1
j=2
gosub mpx
next z
'''''''''''''''
FOR Z = 1 TO 10
PATTERN = $0210840
GOSUB SHOWIT
GOSUB MPX_1
GOSUB MPX_5
PATTERN = LED_2
GOSUB SHOWIT
i=1
j=2
gosub mpx
next z
'''''''''''''''''
FOR Z = 1 TO 10
PATTERN = $0421080
GOSUB SHOWIT
GOSUB MPX_1
GOSUB MPX_5
PATTERN = LED_3
GOSUB SHOWIT
i=1
j=2
gosub mpx
next z
''''''''''''''''''
FOR Z = 1 TO 10
PATTERN = $0842100
GOSUB SHOWIT
GOSUB MPX_1
GOSUB MPX_5
PATTERN = LED_4
GOSUB SHOWIT
i=1
j=2
gosub mpx
next z
'''''''''''''''
time = 2
for z = 1 to 120
pattern = $1084200
gosub showit
L1G=1 : L5G=1
pause time
L1G=0 : L5G=0
pattern = led_5
gosub SHOWIT
L2G=1 : L3G=1 : L4G=1
PAUSE TIME
L2G=0 : L3G=0 : L4G=0
NEXT Z
''''''''''''''''''''''
'PATTERN FOR GOLD "K"
'*****************
TIME = 100
FOR Z = 1 TO 6
PATTERN = LED_1
GOSUB SHOWIT
i=0
j=4
gosub mpx
pattern = $0000420
gosub showit
gosub mpx_3
PATTERN = LED_16
GOSUB SHOWIT
GOSUB MPX_2
GOSUB MPX_4
PATTERN = LED_21
GOSUB SHOWIT
GOSUB MPX_1
GOSUB MPX_5
NEXT Z
'''''''''''''''''''''
FOR Z = 1 TO 6
PATTERN = LED_2
GOSUB SHOWIT
i=0
j=4
gosub mpx
pattern = $0000840
gosub showit
gosub mpx_3
PATTERN = LED_17
GOSUB SHOWIT
GOSUB MPX_2
GOSUB MPX_4
PATTERN = LED_22
GOSUB SHOWIT
GOSUB MPX_1
GOSUB MPX_5
NEXT Z
''''''''''''''''
FOR Z = 1 TO 6
PATTERN = LED_3
GOSUB SHOWIT
i=0
j=4
gosub mpx
pattern = $0001080
gosub showit
gosub mpx_3
PATTERN = LED_18
GOSUB SHOWIT
GOSUB MPX_2
GOSUB MPX_4
PATTERN = LED_23
GOSUB SHOWIT
GOSUB MPX_1
GOSUB MPX_5
NEXT Z
'''''''''''''''''''''''
FOR Z = 1 TO 6
PATTERN = LED_4
GOSUB SHOWIT
i=0
j=4
gosub mpx
pattern = $0002100
gosub showit
gosub mpx_3
PATTERN = LED_19
GOSUB SHOWIT
GOSUB MPX_2
GOSUB MPX_4
PATTERN = LED_24
GOSUB SHOWIT
GOSUB MPX_1
GOSUB MPX_5
NEXT Z
'''''''''''''''''''''''
TIME = 3
FOR Z = 1 TO 100
PATTERN = LED_5
GOSUB SHOWIT
L1G=1 : L2G=1 : L3G=1 : L4G=1 : L5G=1
PAUSE TIME
L1G=0 : L2G=0 : L3G=0 : L4G=0 : L5G=0
PATTERN = $0004200
GOSUB SHOWIT
L3G=1
PAUSE TIME
L3G=0
PATTERN = LED_20
GOSUB SHOWIT
L2G=1 : L4G=1
PAUSE TIME
L2G=0 : L4G=0
PATTERN = LED_25
GOSUB SHOWIT
L1G=1 : L5G=1
PAUSE TIME
L1G=0 : L5G=0
NEXT Z
RETURN
'*********************
'**********************
GOPAKERS: '************ "GO PACKERS" VERTICAL DISPLAY
' FIRST 4 LAYERS ARE GOLD, TOP LAYER IS GREEN
FOR X = 0 TO 4
FOR Y = 0 TO 300
GOSUB PACKERS 'GET THE PATTERN AND SHOWIT
IF X = 4 THEN GREEN
LEVELG.0[X]=1
PAUSEUS 170
LEVELG.0[X]=0
LEVELR.0[X]=1
PAUSEUS 40
LEVELR.0[X]=0
NEXT Y
GOTO GP
GREEN: '**************************TOP LEVEL CHANGES TO GREEN
LEVELG.0[X]=1
PAUSE 700
LEVELG.0[X]=0
PAUSE 250
GP:
NEXT X
LENGTH = LENGTH + 1
IF LENGTH = 2 THEN PAUSE 500
IF LENGTH = 9 THEN LENGTH = 0
IF LENGTH = 0 THEN PAUSE 1000
IF LENGTH = 0 THEN W = W+1
IF W<1 THEN GOPAKERS
RETURN
'***********************
'**************************
PACKERSRULE: ' FIRST 4 LAYERS ARE GOLD, TOP LAYER IS GREEN
FOR X = 0 TO 4
FOR Y = 0 TO 150
GOSUB PACK_RULES
IF X = 4 THEN GREEN_1
LEVELG.0[X]=1
PAUSEUS 170
LEVELG.0[X]=0
LEVELR.0[X]=1
PAUSEUS 40
LEVELR.0[X]=0
NEXT Y
GOTO GP_1
GREEN_1: '*****************TOP LEVEL CHANGES TO GREEN
LEVELG.0[X]=1
PAUSE 700
LEVELG.0[X]=0
PAUSE 350
GP_1:
NEXT X
LENGTH = LENGTH + 1
IF LENGTH = 7 THEN PAUSE 500
IF LENGTH = 11 THEN LENGTH = 0
IF LENGTH = 0 THEN PAUSE 1000
IF LENGTH = 0 THEN GOTO BS
GOTO PACKERSRULE
BS:
GOSUB BEARS_SUCK
FOR X = 0 TO 4
LEVELR.0[X] =1
PAUSE 100
IF X = 4 THEN PAUSE 500
LEVELR.0[X]=0
NEXT X
pause 350
LENGTH = LENGTH + 1
IF LENGTH = 5 THEN PAUSE 1000
IF LENGTH = 9 THEN LENGTH = 0
IF LENGTH = 0 THEN PAUSE 1000
IF LENGTH = 0 THEN RETURN
GOTO BS
'*************************
'**********************
' ROUTINES FOR ANIMATIONS FOLLOW
' ALL ANIMATION ROUTINES ARE SEPARATED BY A DOUBLE ROW OF **
'**************************
'****************************
MAIN:
CLEAR
GOSUB CLR_LEVELS ' CLR_LEVELS SETS RED AND GREEN TO ZERO
X=0 : Y=0 : Z=0 : LENGTH=0
'************************************************* ******
PAUSE 2000 ' DELAY ON STARTUP (ONLY USED FOR TAKING VIDEO)
'***********************************
'
FADE:
X=1500 ' START BY TURNING RED ON SLOWLY
Y=1
PATTERN = FULL
GOSUB SHOWIT
FADE_1:
L1R=0 : L2R=0 : L3R=0 : L4R=0 : L5R=0
PAUSEUS X
L1R=1 : L2R=1 : L3R=1 : L4R=1 : L5R=1
PAUSEUS Y
X = X-1
Y = Y + 1
IF X = 0 THEN FADEOUT
GOTO FADE_1
FADEOUT: ' FADES FRON GREEN TO RED TO GREEN TO RED TO GREEN
'ALSO RESULTS IN YELLOW - ORANGE COLORS
TIME = 50 ' RED OFF TIME
TIME_1 = 100 ;GREEN OFF TIME
FOR W = 1 TO 3
Y=1000 ' RED ON TIME
Z=1 'GREEN ON TIME
FOR X = 1 TO 1000
Y = Y-1 'RED ON TIME
Z = Z+1 'GREEN ON TIME
L1R=1 : L2R=1 : L3R=1 : L4R=1 : L5R=1
PAUSEUS Y
L1R=0 : L2R=0 : L3R=0 : L4R=0 : L5R=0
PAUSEUS TIME ' TIME FOR RED TO BE OFF
L1G=1 : L2G=1 : L3G=1 : L4G=1 : L5G=1
PAUSEUS Z
L1G=0 : L2G=0 : L3G=0 : L4G=0 : L5G=0
PAUSEUS TIME_1 ' TIME FOR GREEN TO BE OFF
NEXT X
TIME = 200 ' RED OFF TIME
TIME_1 = 50 ' GREEN OFF TIME
Y=1 'RED ON TIME
Z=1000 'GREEN ON TIME
FOR X = 1 TO 1000
Y=Y+1
Z=Z-1
L1G=1 : L2G=1 : L3G=1 : L4G=1 : L5G=1
PAUSEUS Z
L1G=0 : L2G=0 : L3G=0 : L4G=0 : L5G=0
PAUSEUS TIME_1
L1R=1 : L2R=1 : L3R=1 : L4R=1 : L5R=1
PAUSEUS Y
L1R=0 : L2R=0 : L3R=0 : L4R=0 : L5R=0
PAUSEUS TIME
NEXT X
NEXT W
'*******************************
'************************************************* **
X=0 : W=0 ' CLEAR COUNTERS BEFORE SUBROUTINE
GOSUB GOPAKERS ' RISING "GO PACKERS"
'*************************************************
'***********************************************
PILLAR: ' "RISING PILLARS" (LINES) OF LED'S
TIME = 50
GOSUB PILPAT
GOSUB SHOWIT
GOSUB CLR_LEVELS
L1R= 1
PAUSE TIME
L2R= 1
PAUSE TIME
L3R= 1
PAUSE TIME
L4R= 1
PAUSE TIME
L5R=1
PAUSE TIME
LENGTH = LENGTH + 1
IF LENGTH = 25 THEN PIL_DONE
GOSUB PILPAT
GOSUB SHOWIT
L1R=0 : L2R=0 : L3R=0 : L4R=0 : L5R=0
L1G= 1
PAUSE TIME
L2G= 1
PAUSE TIME
L3G= 1
PAUSE TIME
L4G= 1
PAUSE TIME
L5G=1
PAUSE TIME
LENGTH = LENGTH + 1
L1G=0 : L2G=0 : L3G=0 : L4G=0 : L5G=0
IF LENGTH = 25 THEN PIL_DONE
GOTO PILLAR
PIL_DONE:
LENGTH = 0
'************************************************* *******
'************************************************* ******
MOVING_SQUARES: ' 2 X 2 X 2 RED AND GREEN SQUARES JUMPING AROUND
TIME = 350
LENGTH=0
GOSUB CLR_LEVELS
' THERE IS NO DIRECT RETURN FROM THE SUBROUTINE SMALL_SQ,
'IT "FALLS THROUGH" TO THE SUBROUTINE SHOWME, AND RETURNS FROM THERE
SQR_1:
L1R=1 : L2R=1 : L3G=0 : L4G=0 ' LEVEL ONE AND TWO
GOSUB SMALL_SQ ' COMBINATION OF A PATTERN AND SHOWME
L1R=0 : L2R=0 : L2G=1 : L3G=1 ' LEVEL TWO AND THREE
LENGTH = LENGTH + 1
GOSUB SMALL_SQ
L2G=0 : L3G=0 : L3R=1 : L4R=1 'LEVEL THREE AND FOUR
LENGTH = LENGTH + 1
GOSUB SMALL_SQ
L3R=0 : L4R=0 : L4G=1 : L5G=1 ;LEVEL FOUR AND FIVE
LENGTH = LENGTH + 1
GOSUB SMALL_SQ
L4G=0 : L5G=0 : L1G=1 : L2G=1
LENGTH = LENGTH + 1
GOSUB SMALL_SQ
L1G=0 : L2G=0 : L2R=1 : L3R=1
LENGTH = LENGTH + 1
GOSUB SMALL_SQ
L2R=0 : L3R=0 : L3G=1 : L4G=1
LENGTH = LENGTH + 1
GOSUB SMALL_SQ
L3G=0 : L4G=0 : L4R=1 : L5R=1
LENGTH = LENGTH + 1
GOSUB SMALL_SQ
L4R=0 : L5R=0 : L3G=1 : L4G=1
LENGTH = LENGTH +1
GOSUB SMALL_SQ
L3G=0 : L4G=0
IF LENGTH = 16 THEN EX_SQ
GOTO SQR_1
EX_SQ:
LENGTH=0
L3G=0 : L4G=0
'*************************************
'***************************************
BLENDING_SQUARE:
TIME = 5 ' THIS IS THE PAUSE TIME IN "SHOWME"
FOR Z = 1 TO 8
FOR X = 0 TO 4
FOR Y = 1 TO 6
PATTERN = DOT
LEVELR.0[X]=1
GOSUB SHOWME
LEVELR.0[X]=0
PATTERN = INSQUARE
LEVELG.0[X]=1
GOSUB SHOWME
NEXT Y
NEXT X
FOR X = 4 TO 0 STEP -1
FOR Y = 1 TO 6
PATTERN = DOT
LEVELR.0[X]=1
GOSUB SHOWME
LEVELR.0[X]=0
PATTERN = INSQUARE
LEVELG.0[X]=0
GOSUB SHOWME
NEXT Y
NEXT X
FOR X = 0 TO 4
FOR Y = 1 TO 6
PATTERN = DOT
LEVELG.0[X]=1
GOSUB SHOWME
LEVELG.0[X]=0
PATTERN = INSQUARE
LEVELR.0[X]=1
GOSUB SHOWME
NEXT Y
NEXT X
NEXT Z
'************************************************* ******
'************************************************* ********
SOLID_RING:
X=0 : LENGTH=0
L5R=1 : L4R=0 : L3R=0 : L2R=0 : L1R=0
TIME =100 ' THIS IS THE PAUSE TIME IN "SHOWME"
A:
LENGTH = 0
A_1:
GOSUB RINGPAT
GOSUB SHOWME
LENGTH = LENGTH+1
IF LENGTH < 16 THEN A_1
X = X + 1
IF X = 1 THEN L5R=0 : L4R=1 : GOTO A
IF X = 2 THEN L4R=0 : L3R=1 : GOTO A
IF X = 3 THEN L3R=0 : L2R=1 : GOTO A
IF X = 4 THEN L2R=0 : L1R=1 : GOTO A
B:
LENGTH = 0
B_1:
GOSUB RINGPAT_1
GOSUB SHOWME
LENGTH = LENGTH + 1
IF LENGTH < 16 THEN B_1
x = x + 1
if X = 6 THEN L1R=0 : L2R=1 : GOTO B
IF X = 7 THEN L2R=0 : L3R=1 : GOTO B
IF X = 8 THEN L3R=0 : L4R=1 : GOTO B
IF X = 9 THEN L4R=0 : L5R=1 : GOTO B
IF X = 10 THEN X = 0
'***********************************************
'************************************************* ***
RING: ' A CIRCULATING VERTICAL RING, WITH ALTERNATING COLOR LED'S
TIME=1
X=0: Y = 1 : Z=1
LENGTH=0
FOR Y = 1 TO 4
FOR Z = 1 TO 16
GOSUB RING_AROUND 'GETS THE PERIMETER LED NUMBER
GOSUB SHOWIT
GOSUB RING_MUX 'AND DISPLAYS IT USING LEVEL MUX ROUTINE
LENGTH = LENGTH + 1
NEXT Z
Z=1
LENGTH = 0
next y
'****************************************
'********************************
RED_GRN_SQUARE: ' GREEN OUTER SQUARE, ROTATING RED SPOKES INSIDE
TIME =4
FOR Y = 1 TO 18
FOR X = 1 TO 5
PATTERN = OUTSQUARE
GOSUB SHOWIT
L1G=1 : L2G=1 : L3G=1 : L4G=1 : L5G=1
PAUSE TIME
L1G=0 : L2G=0 : L3G=0 : L4G=0 : L5G=0
PAUSE TIME
PATTERN = SPOKE_1
GOSUB SHOWIT
L1R=1 : L2R=1 : L3R=1 : L4R=1 : L5R=1
PAUSE TIME
L1R=0 : L2R=0 : L3R=0 : L4R=0 : L5R=0
PAUSE TIME
NEXT X
FOR X = 1 TO 4
PATTERN = OUTSQUARE
GOSUB SHOWIT
L1G=1 : L2G=1 : L3G=1 : L4G=1 : L5G=1
PAUSE TIME
L1G=0 : L2G=0 : L3G=0 : L4G=0 : L5G=0
PAUSE TIME
PATTERN = SPOKE_2
GOSUB SHOWIT
L1R=1 : L2R=1 : L3R=1 : L4R=1 : L5R=1
PAUSE TIME
L1R=0 : L2R=0 : L3R=0 : L4R=0 : L5R=0
PAUSE TIME
NEXT X
FOR X = 1 TO 4
PATTERN = OUTSQUARE
GOSUB SHOWIT
L1G=1 : L2G=1 : L3G=1 : L4G=1 : L5G=1
PAUSE TIME
L1G=0 : L2G=0 : L3G=0 : L4G=0 : L5G=0
PAUSE TIME
PATTERN = SPOKE_3
GOSUB SHOWIT
L1R=1 : L2R=1 : L3R=1 : L4R=1 : L5R=1
PAUSE TIME
L1R=0 : L2R=0 : L3R=0 : L4R=0 : L5R=0
PAUSE TIME
NEXT X
FOR X = 1 TO 4
PATTERN = OUTSQUARE
GOSUB SHOWIT
L1G=1 : L2G=1 : L3G=1 : L4G=1 : L5G=1
PAUSE TIME
L1G=0 : L2G=0 : L3G=0 : L4G=0 : L5G=0
PAUSE TIME
PATTERN = SPOKE_4
GOSUB SHOWIT
L1R=1 : L2R=1 : L3R=1 : L4R=1 : L5R=1
PAUSE TIME
L1R=0 : L2R=0 : L3R=0 : L4R=0 : L5R=0
PAUSE TIME
NEXT X
NEXT Y
'**************************
'*****************************
FLATS: 'RED AND GREEN VERTICAL SLICES
X=0
TIME = 500 ' PAUSE TIME IN "SHOWME"
FOR X = 1 TO 4
GOSUB CLR_LEVELS
L1R=1 : L2R=1 : L3R=1 : L4R=1 : L5R=1
PATTERN = ROW_1_5
GOSUB SHOWME
L1R=0 : L2R=0 : L3R=0 : L4R=0 : L5R=0
L1G=1 : L2G=1 : L3G=1 : L4G=1 : L5G=1
PATTERN = COL_2_4
GOSUB SHOWME
L1G=0 : L2G=0 : L3G=0 : L4G=0 : L5G=0
L1R=1 : L2R=1 : L3R=1 : L4R=1 : L5R=1
PATTERN = ROW_2_4
GOSUB SHOWME
L1R=0 : L2R=0 : L3R=0 : L4R=0 : L5R=0
L1G=1 : L2G=1 : L3G=1 : L4G=1 : L5G=1
PATTERN = COL_1_5
GOSUB SHOWME
NEXT X
L1G=0 : L2G=0 : L3G=0 : L4G=0 : L5G=0
X=0
W=0
'******************************
'******************************
''''''GO PACK GO ''''''''
PAUSE 100 ' SLIGHT DELAY BEFORE STARTING
GOSUB GOPACK 'SUBROUTINE TO SPELL "GO"
W=0
PAUSE 500
GOSUB PACK 'SUBROUTINE TO SPELL "PACKERS
GOSUB GOPACK ' "GO" AGAIN
W=0
PAUSE 100
'*********************************
'********************************
GREEN_GOLD_RISER: 'RISING FULL LEVELS, FIRST GREEN THEN GOLD
PATTERN = FULL
FOR Z=0 TO 3
GOSUB SHOWIT
L1G=1
PAUSE TIME
L1G=0 : L2G=1
PAUSE TIME
L2G=0 : L3G=1
PAUSE TIME
L3G=0 : L4G=1
PAUSE TIME
L4G=0 : L5G=1
PAUSE 350
L5G=0
FOR X = 0 TO 4 ' BRIGHTNESS AND FLICKER FOR GOLD
FOR Y = 0 TO 500 'DETERMINES HOW LONG TO "LINGER" ON ONE LEVEL
PATTERN = FULL
GOSUB SHOWIT
LEVELG.0[X]=1
PAUSEUS 170
LEVELG.0[X]=0
LEVELR.0[X]=1
PAUSEUS 40
LEVELR.0[X]=0
NEXT Y
NEXT X
PAUSE 250
NEXT Z
'***********************************
'*************************************
' GREEN - GOLD FULL ALTERNATE
'
PATTERN = FULL
GOSUB SHOWIT
for z = 1 to 8
for w = 1 to 10
L5G=1 : L4G=1 : L3G=1 : L2G=1 : L1G=1
PAUSE 10
GOSUB CLR_LEVELS
next w
PAUSE 10
i=0
j=4
for w=1 to 10
gosub mpx
pause 10
GOSUB CLR_LEVELS
NEXT W
next z
W=0
'****************************************
'********************************
IN_OUT_SQUARE: ' ALTERNATING RED AND GREEN SQUARES
X = 0
TIME = 10 'PAUSE TIME IN "SHOWME"
FOR Y = 1 TO 4
FOR X = 1 TO 35
PATTERN = OUTSQUARE
L1R=1 : L5R=1
GOSUB SHOWME
L1R=0 : L5R=0
L2G=1 : L3G=1 : L4G=1
PAUSE TIME
L2G=0 : L3G=0 : L4G=0
NEXT X
X = 0
PATTERN = INSQUARE
GOSUB SHOWIT
FOR X = 1 TO 35
L1G=1 : L5G=1
PAUSE TIME
L1G=0 : L5G=0 : L2R=1 : L3R=1 : L4R=1
PAUSE TIME
L2R=0 : L3R=0 : L4R=0
NEXT X
X=0
FOR X = 1 TO 35
PATTERN = OUTSQUARE
L1G=1 : L5G=1
GOSUB SHOWME
L1G=0 : L5G=0
L2R=1 : L3R=1 : L4R=1
PAUSE TIME
L2R=0 : L3R=0 : L4R=0
NEXT X
X = 0
PATTERN = INSQUARE
GOSUB SHOWIT
FOR X = 1 TO 35
L1R=1 : L5R=1
PAUSE TIME
L1R=0 : L5R=0 : L2G=1 : L3G=1 : L4G=1
PAUSE TIME
L2G=0 : L3G=0 : L4G=0
NEXT X
X=0
NEXT Y
'********************************
'*********************************
UP_DOWN_FULL: 'FULL RED LAYER, THEN GREEN, UP AND DOWN
TIME = 150
PATTERN = FULL
GOSUB SHOWIT
FOR X = 1 TO 4
L1R = 1
PAUSE TIME
L1R=0 : L2R=1
PAUSE TIME
L2R=0 : L3R=1
PAUSE TIME
L3R=0 : L4R=1
PAUSE TIME
L4R=0 : L5R=1
PAUSE TIME
L5R=0 : L4G=1
PAUSE TIME
L4G=0 : L3G=1
PAUSE TIME
L3G=0 : L2G=1
PAUSE TIME
L2G=0 : L1G=1
PAUSE TIME
L1G=0
PAUSE 50
NEXT X
'*************************************************
'***********************************
FIVE_LINES:
X=0 : Y=0 : Z=0 : LENGTH = 0
TIME =40
GOSUB LINES ' GET THE NEXT LED PATTERN
RED:
FOR Y = 1 TO 5 ' DO 5 LED'S
FOR X = 0 TO 1 'DETRMINES BRIGHTNESS
GOSUB SHOWIT
L1G=0 : L2G=0 : L3G=0 : L4G=0 : L5G=0
L1R=1 : L2R=1 : L3R=1 : L4R=1 : L5R=1
PAUSE TIME
NEXT X
LENGTH = LENGTH + 1
IF LENGTH = 25 THEN LENGTH = 0
IF LENGTH = 0 THEN Z = Z + 1
IF Z=2 THEN ROTATE_Y ' DONE, CONTINUE ON
GOSUB LINES
NEXT Y
GOSUB LINES
FOR Y = 1 TO 5
FOR X = 0 TO 1
GOSUB SHOWIT
L1R=0 : L2R=0 : L3R=0 : L4R=0 : L5R=0
L1G=1 : L2G=1 : L3G=1 : L4G=1 : L5G=1
PAUSE TIME
NEXT X
LENGTH = LENGTH + 1
IF LENGTH = 25 THEN LENGTH = 0
GOSUB LINES
NEXT Y
GOTO RED 'START OVER
'*********************************
'********************************
ROTATE_Y:
GOSUB CLR_LEVELS
X=1
TIME = 30 'PAUSE TIME IN "SHOWME"
FOR X = 1 TO 8
PATTERN = COL_2
L1G=1
GOSUB SHOWME ' SHOWME ADDS PAUSE TIME IN THE SUBROUTINE
L1G=0
PATTERN = COL_1
L2G=1
GOSUB SHOWME
L2G=0: L3G=1
PAUSE TIME
L3G=0 : L4G=1
PAUSE TIME
L4G=0
PATTERN = COL_2
L5G=1
GOSUB SHOWME
PATTERN = COL_3
GOSUB SHOWME
PATTERN = COL_4
GOSUB SHOWME
L5G=0
PATTERN = COL_5
L4G=1
GOSUB SHOWME
L4G=0 : L3G=1
PAUSE TIME
L3G=0 : L2G=1
PAUSE TIME
L2G=0
PATTERN = COL_4
L1G=1
GOSUB SHOWME
PATTERN = COL_3
GOSUB SHOWME
PATTERN = COL_2
L1G=0
GOSUB SHOWIT ' NO DELAY NEEDED AFTER SHOWIT HERE ! !
NEXT X
X=1
'**************************
'*************************
ROTATE_X:
TIME = 30 ' PAUSE TIME IN "SHOWME"
FOR X = 1 TO 8
PATTERN = ROW_2
L1R=1
GOSUB SHOWME
L1R=0
PATTERN = ROW_1
L2R=1
GOSUB SHOWME
L2R=0: L3R=1
PAUSE TIME
L3R=0 : L4R=1
PAUSE TIME
L4R=0
PATTERN = ROW_2
L5R=1
GOSUB SHOWME
PATTERN = ROW_3
GOSUB SHOWME
PATTERN = ROW_4
GOSUB SHOWME
L5R=0
PATTERN = ROW_5
L4R=1
GOSUB SHOWME
L4R=0 : L3R=1
PAUSE TIME
L3R=0 : L2R=1
PAUSE TIME
L2R=0
PATTERN = ROW_4
L1R=1
GOSUB SHOWME
PATTERN = ROW_3
GOSUB SHOWME
NEXT X
'**********************************
'***************************************
BLENDING_CUBE: ' OUTSIDE CUBE, FILL WITH RED, EMPTY WITH GREEN
TIME = 30 ' PAUSE TIME IN "SHOWME"
FOR Z = 1 TO 6
FOR X = 0 TO 4
PATTERN = OUTSQUARE
LEVELR.0[X]=1
GOSUB SHOWME
NEXT X
PAUSE 250
FOR X = 4 TO 0 STEP -1
PATTERN = OUTSQUARE
LEVELR.0[X]=0
GOSUB SHOWME
LEVELG.0[X]=1
GOSUB SHOWME
NEXT X
PAUSE 250
NEXT Z
GOSUB CLR_LEVELS
'*****************************************
'*******************************************
FLIP_X:
'****** NOTICE THE ORDER OF STATEMENTS HERE -
'****** GOSUB BACK_FORTH L1R=1 PAUSE TIME L1R=0
'******* THIS SEQUENCE IS NECESSARY TO PREVENT "GHOSTING" AND IS USED
'******** IN OTHER ROUTINES FOR THE SAME REASON
TIME = 3
LENGTH = 1
FOR Y = 1 TO 5 'NUMBER OF TIMES TO FLIP
FOR X = 1 TO 10 'DETERMINES TIME BETWEEN FLIPS, AND FLICKER/BRIGHTNESS
GOSUB BACK_FORTH 'GET THE PATTERN FOR ROW_1, GOTO SHOWIT, RETURN
l1r=1
pause time
L1R=0
LENGTH = LENGTH + 1
GOSUB BACK_FORTH 'GET THE PATTERN FOR ROW_2, GO TO SHOWIT, RETURN
l2r=1
pause time
L2R=0
LENGTH = LENGTH + 1
GOSUB BACK_FORTH 'GET THE PATTERN FOR R0W_3, GOTO SHOWIT, RETURN
l3r=1
pause time
L3R=0
LENGTH = LENGTH + 1
GOSUB BACK_FORTH 'GET THE PATTRN FOR ROW_4, GOTO SHOWIT, RETURN
l4r=1
pause time
L4R=0
LENGTH = LENGTH + 1
GOSUB BACK_FORTH 'GET THE PATTERN FOR ROW_5, GOTO SHOWIT, RETURN
l5r=1
pause time
L5R=0
LENGTH = 1
NEXT X
'
FOR X = 1 TO 10
GOSUB BACK_FORTH ' BACK_FORTH HAS ROW SELECTION LOOKUP
l1r=1
pause time
L1R=0
LENGTH = LENGTH -1
GOSUB BACK_FORTH
l2r=1
pause time
L2R=0
LENGTH = LENGTH-1
GOSUB BACK_FORTH
l3r=1
pause time
L3R=0
LENGTH = LENGTH-1
GOSUB BACK_FORTH
l4r=1
pause time
L4R=0
LENGTH = LENGTH-1
GOSUB BACK_FORTH
l5r=1
pause time
L5R=0
LENGTH = 5
NEXT X
NEXT Y
'
FOR Y = 1 TO 5
FOR X = 1 TO 10
PATTERN = COL_1 'USE PATTERN HERE - NO LOOKUP FOR COL_1 TO COL_5
GOSUB SHOWIT ' COULD ADD LOOKUP, AND USE LENGTH POINTER INSTEAD
L1G=1
PAUSE TIME
L1G=0
PATTERN = COL_2
GOSUB SHOWIT
L2G=1
PAUSE TIME
L2G=0
PATTERN = COL_3
GOSUB SHOWIT
L3G=1
PAUSE TIME
L3G=0
PATTERN = COL_4
GOSUB SHOWIT
L4G=1
PAUSE TIME
L4G=0
PATTERN = COL_5
GOSUB SHOWIT
L5G=1
PAUSE TIME
L5G=0
NEXT X
'
FOR X = 1 TO 10
PATTERN = COL_5
GOSUB SHOWIT
L1G=1
PAUSE TIME
L1G=0
PATTERN = COL_4
GOSUB SHOWIT
L2G=1
PAUSE TIME
L2G=0
PATTERN = COL_3
GOSUB SHOWIT
L3G=1
PAUSE TIME
L3G=0
PATTERN = COL_2
GOSUB SHOWIT
L4G=1
PAUSE TIME
L4G=0
PATTERN = COL_1
GOSUB SHOWIT
L5G=1
PAUSE TIME
L5G=0
NEXT X
NEXT Y
'
TIME = 150
FOR X = 1 TO 5
PATTERN = LFTSLSH
L1R=1 : L2R=1 : L3R=1 : L4R=1 : L5R=1
GOSUB SHOWME ' SHOWME INCLUDES A PAUSE TIME
PATTERN = RTSLSH
GOSUB SHOWME
NEXT X
'*********************************************
'***********************************************
RAPID_ROW: 'ALTERNATING RED AND GREEN FULL ROWS FRONT TO BACK
TIME = 70 ' THIS IS THE PAUSE TIME IN "SHOWME"
FOR X = 1 TO 5
L1R=1 : L2R=1 : L3R=1 : L4R=1 : L5R=1
L1G=0 : L2G=0 : L3G=0 : L4G=0 : L5G=0
PATTERN = ROW_1
GOSUB SHOWME
PATTERN = ROW_2
GOSUB SHOWME
PATTERN = ROW_3
GOSUB SHOWME
PATTERN = ROW_4
GOSUB SHOWME
PATTERN = ROW_5
GOSUB SHOWME
L1R=0 : L2R=0 : L3R=0 : L4R=0 : L5R=0
L1G=1 : L2G=1 : L3G=1 : L4G=1 : L5G=1
PATTERN = ROW_5
GOSUB SHOWME
PATTERN = ROW_4
GOSUB SHOWME
PATTERN = ROW_3
GOSUB SHOWME
PATTERN = ROW_2
GOSUB SHOWME
PATTERN = ROW_1
GOSUB SHOWME
NEXT X
'*******************
'**********************
X=0 : Y=0 : LENGTH=0 : W=0 ' CLEAR COUNTERS
GOSUB GOPAKERS 'RISING "GO PACKERS"
'*********************
'***********************
DOTS:
TIME = 20 ' PAUSE TIME IN "SHOWME"
LENGTH = 0
FOR Y = 1 TO 8
FOR X = 1 TO 2
GOSUB PILPAT
L4R=1
GOSUB SHOWME
L4R=0
LENGTH = LENGTH + 1
GOSUB PILPAT
L1G=1
GOSUB SHOWME
L1G=0
LENGTH = LENGTH + 1
GOSUB PILPAT
L3R=1
GOSUB SHOWME
L3R=0
LENGTH = LENGTH + 1
GOSUB PILPAT
L5G=1
GOSUB SHOWME
L5G=0
LENGTH = LENGTH + 1
GOSUB PILPAT
L2R=1
GOSUB SHOWME
L2R=0
LENGTH = LENGTH + 1
GOSUB PILPAT
L4G=1
GOSUB SHOWME
L4G=0
LENGTH = LENGTH + 1
GOSUB PILPAT
L1R=1
GOSUB SHOWME
L1R=0
LENGTH = LENGTH + 1
GOSUB PILPAT
L3G=1
GOSUB SHOWME
L3G=0
LENGTH = LENGTH + 1
GOSUB PILPAT
L2R=1
GOSUB SHOWME
L2R=0
LENGTH = LENGTH + 1
GOSUB PILPAT
L5G=1
GOSUB SHOWME
L5G=0
LENGTH = LENGTH + 1
GOSUB PILPAT
L3R=1
GOSUB SHOWME
L3R=0
LENGTH = LENGTH + 1
GOSUB PILPAT
L1R=1
GOSUB SHOWME
L1R=0
NEXT X
X=0
LENGTH = 0
NEXT Y
'***********************************
'************************************
ANGLE_FILL:
TIME = 50 ' PAUSE TIME IN "SHOWME"
FOR Y = 1 TO 4
GOSUB CLR_LEVELS
FOR X = 1 TO 3
PATTERN = LED_25
L1R=1
GOSUB SHOWME
NEXT X
'
FOR X = 1 TO 3
PATTERN = F_1
L2R=1
GOSUB SHOWME
NEXT X
'
FOR X = 1 TO 3
PATTERN = F_2
L3R=1
GOSUB SHOWME
NEXT X
'
FOR X = 1 TO 3
PATTERN = F_3
L4R=1
GOSUB SHOWME
NEXT X
'
FOR X = 1 TO 3
PATTERN = F_4
L5R=1
GOSUB SHOWME
NEXT X
PAUSE 300 ' LINGER ON THE RED PATTERN
GOSUB CLR_LEVELS
'
FOR X = 1 TO 3
PATTERN = LED_1
L1G=1
GOSUB SHOWME
NEXT X
'
FOR X = 1 TO 3
PATTERN = F_5
L2G=1
GOSUB SHOWME
NEXT X
'
FOR X = 1 TO 3
PATTERN = F_6
L3G=1
GOSUB SHOWME
NEXT X
'
FOR X = 1 TO 3
PATTERN = F_7
L4G=1
GOSUB SHOWME
NEXT X
'
FOR X = 1 TO 3
PATTERN = F_8
L5G=1
GOSUB SHOWME
NEXT X ' LINGER ON THE GREEN PATTERN
PAUSE 300
NEXT Y
GOSUB CLR_LEVELS
'***************************
'******************************
SNAKE:
' SUBROUTINES SNAKE_1 THROUGH _5 USE GOSUB SHOWME
TIME = 180 ' THIS IS THE PAUSE TIME IN SHOWME
Z=8
FOR Y = 1 TO 2
GOSUB CLR_LEVELS
LENGTH = 0 ' SNAKE STARTS AT S_1 AND LEVEL 3
L3R=1
GOSUB SNAKE_1
'******************************************
' HERE WE GO FROM LEVEL 3 TO LEVEL 4
' WE DO NOT USE LOOKUP HERE
FOR X = 1 TO 10 '
PATTERN = S_9
GOSUB SHOWIT
L3R=1 ' MAKE SURE LAYER 3 IS ON
PAUSE 3
L3R=0 ' TURN OFF LAYER 3
PATTERN = S_10 ' ONLY ONE DOT WHEN CHANGING LAYERS
GOSUB SHOWIT ' GET NEW PATTERN
L4R=1 ' TURN ON LAYER 4
PAUSE 3 ' WAIT
L4R=0 ' TURN OFF LAYER 4
PAUSE 3 ' WAIT
NEXT X ' LOOP AGAIN
'
FOR X = 1 TO 10
PATTERN = S_10 ' ONLY ONE DOT WHEN CHANGING LAYERS
GOSUB SHOWIT ' NOW PREPARE FOR NEXT LAYER SHIFT
L3R=1 ' TURN LAYER 3 BACK ON
PAUSE 3
L3R=0
PATTERN = S_11
GOSUB SHOWIT ' GET THE NEW PATTERN
L4R=1 ' TURN LAYER 4 ON
PAUSE 3
L4R=0 'TURN LAYER 4 OFF
PAUSE 3 ' WAIT
NEXT X ' LOOP AGAIN
'
LENGTH = 11 ' NOW LEVEL 4, START AT S_12
L3R=0 : L4R=1 ' AND END AT S_20
GOSUB SNAKE_2
' THIS PART DOES NOT LEND ITSELF TO LOOKUP
FOR X = 1 TO 10 ' S_21 AND S_22
PATTERN = S_21 ' GO FROM LEVEL 4 TO LEVEL 5
GOSUB SHOWIT
L4R=1
PAUSE 3
L4R=0
PATTERN = $0100000 ' LED 21
GOSUB SHOWIT
L5R=1
PAUSE 3
L5R=0
PAUSE 3
NEXT X
'
FOR X = 1 TO 10
PATTERN = $0100000
GOSUB SHOWIT
L4R=1
PAUSE 3
L4R=0
PATTERN = S_22
GOSUB SHOWIT
L5R=1
PAUSE 3
L5R=0
PAUSE 3
NEXT X
'
LENGTH = 22 ' NOW AT LEVEL 5, S_22 TO S_34
L4R=0 : L5R=1 ' THEN WE GO BACK TO LEVEL 1
GOSUB SNAKE_3
'****************** NOW WE GO BACK TO LEVEL 1
FOR X = 1 TO 4
PATTERN = S_35
GOSUB SHOWIT ' L5 IS ON YET
L5R=1
PAUSE 5
L5R=0
PAUSE 5
'
PATTERN = $0200000
GOSUB SHOWIT
L4R=1 : L5R=1
PAUSE 5
L4R=0 : L5R=0
PAUSE 5
NEXT X
'
L4R=1 ' LEVEL 4 AND 5 0N
PAUSE 80
L3R=1 ' LEVEL 5 , 4 , AND 3 0N
PAUSE 80
L2R=1 ' LEVEL 5 OFF, 4 , 3 , AND 2 ON
PAUSE 80
L4R=0
L1R=1 ' LEVEL 4 OFF, 3, 2, AND 1 ON
PAUSE 80
L3R=0
PAUSE 80
L2R=0
PAUSE 80
L1R=0
'******************************************** LAYER ONE MOVE
FOR X = 1 TO 4
PATTERN = $0200000
GOSUB SHOWIT
L2R=1 : L1R=1
PAUSE 5
L2R=0 : L1R=0
PAUSE 5
'
PATTERN = S_35
GOSUB SHOWIT ' L5 IS ON YET
L1R=1
PAUSE 5
L1R=0
PAUSE 5
NEXT X
'**************************
L1R = 1 'TURN LAYER ONE BACK ON
FOR X = 1 TO Z
PATTERN = S_34
GOSUB SHOWIT
PAUSE 3
NEXT X
'**********************
LENGTH = 35
GOSUB SNAKE_4
NEXT Y
GOSUB CLR_LEVELS
'**************************
'******************************
RD_GRN_SQ: 'GREEN OUTER SQUARE, THEN A RED INNER SQUARE
TIME = 1
FOR Y = 1 TO 4
PATTERN = OUTSQUARE ' THIS IS THE OUTER SQUARE
GOSUB SHOWIT
FOR X = 1 TO 50
L1G=1
PAUSE TIME
L1G=0
PAUSE TIME
NEXT X
'
FOR X = 1 TO 40
L1G = 1
PAUSE TIME
L1G=0
PAUSE TIME
L2G=1
PAUSE TIME
L2G=0
PAUSE TIME
NEXT X
'
FOR X = 1 TO 30
L1G=1
PAUSE TIME
L1G=0
PAUSE TIME
L2G=1
PAUSE TIME
L2G=0
PAUSE TIME
L3G=1
PAUSE TIME
L3G=0
PAUSE TIME
NEXT X
'
FOR X = 1 TO 50
L1G=1
PAUSE TIME
L1G=0
PAUSE TIME
L2G=1
PAUSE TIME
L2G=0
PAUSE TIME
L3G=1
PAUSE TIME
L3G=0
PAUSE TIME
L4G=1
PAUSE TIME
L4G=0
PAUSE TIME
L5G=1
PAUSE TIME
L5G=0
PAUSE TIME
NEXT X
'
PATTERN = INSQ ' THIS IS THE RED INNER SQUARE
GOSUB SHOWIT
L1R=1 : L2R=1 : L3R=1 : L4R=1 : L5R=1
PAUSE 750
L1R=0 : L2R=0 : L3R=0 : L4R=0 : L5R=0
NEXT Y
'***********************************
'**************************************
SPEAR:
TIME = 100
FOR Z = 1 TO 3
X=0 : Y=4 ' X AND Y ARE USED TO SET THE INDEX "LENGTH"
' FOR THE LOOKUP TABLE "SPEAR" VIA SPEAR_1
L1R=1
GOSUB SPEAR_1
L1R=0 : L1G=1
PAUSE TIME
L1G=0
'
X=5 : Y=9
L3R=1
GOSUB SPEAR_1
L3R=0 : L3G=1
PAUSE TIME
L3G=0
'
X=10 : Y=14
L2R=1
GOSUB SPEAR_1
L2R=0 : L2G=1
PAUSE TIME
L2G=0
'
X=15 : Y=19
L5R=1
GOSUB SPEAR_1
L5R=0 : L5G=1
PAUSE TIME
L5G=0
'
X=20: Y=24
L3R=1
GOSUB SPEAR_1
L3R=0 : L3G=1
PAUSE TIME
L3G=0
'
X=25 : Y = 29
L1R=1
gosub spear_1
PAUSE time
L1R=0 : L1G=1
PAUSE TIME
L1G=0
'
X=30 : Y=34
L5R=1
GOSUB SPEAR_1
L5R=0 : L5G=1
PAUSE TIME
L5G=0
NEXT Z
'************************
'************************
SLOPE:
LENGTH = 0 : W=0 : X=0 : Y=0 : Z=0
TIME = 2000 ' TIME FOR BEST MUX POV
GOSUB CLR_LEVELS 'CLEAR THE PORTS
'**************
' MUST LOOP THROUGH THE GETSLOPE ROUTINE ~ 8 TIMES OR SO FOR BEST POV
' VARIABLE USED FOR THIS IS W
' THESE ROUTINES UTILIZE INDEXED PORT ADDRESSING TO REDUCE CODE
'***********************************************
SLOPE_1:
FOR W = 1 TO 4 ' REPEAT EACH LED SET 4 TIMES BEFORE NEXT SET
FOR X = 0 TO 4 ' TOTAL OF 5 LEVELS... 0 = LEV 1 ; 4 = LEV 5
GOSUB GETSLOPE 'THIS GETS THE LED
GOSUB SHOWIT
LEVELR.0[X]=1
PAUSEUS TIME
LEVELR.0[X]=0
PAUSEUS TIME
LENGTH = LENGTH + 1
NEXT X
LENGTH = Y ' Y HOLDS THE NEXT VALUE OF LENGTH, WHERE TO START
NEXT W
' NOW GET THE NEXT LED SET
Y = Y + 1 ' RESET INDEX TO GET THE NEXT SET OF 5 LED'S
LENGTH = Y
IF Y = 16 THEN Y=0
IF Y = 0 THEN LENGTH = 0
IF Y = 0 THEN Z = Z+1
IF Z < 3 THEN SLOPE_1
LENGTH = 0 : W=0 : X=0 : Y=0 : Z=0
'***********************************************
'NOW DO GREEN LED'S IN REVERSE SLOPE
SLOPE_2:
FOR W = 1 TO 4 ' REPEAT EACH LED SET 8 TIMES BEFORE NEXT SET
FOR X = 0 TO 4 ' TOTAL OF 5 LEVELS... 0 = LEV 1 ; 4 = LEV 5
GOSUB GETSLOPE_1 'THIS WILL REVERSE THE SLOPE DIRECTION
GOSUB SHOWIT
LEVELG.0[X]=1
PAUSEUS TIME
LEVELG.0[X]=0
PAUSEUS TIME
LENGTH = LENGTH + 1
NEXT X
LENGTH = Y ' Y HOLDS THE NEXT VALUE OF LENGTH (INDEX) , WHERE TO START
NEXT W
' NOW GET THE NEXT LED SET
Y = Y + 1 ' RESET LENGTH (INDEX) TO GET THE NEXT SET OF 5 LED'S
LENGTH = Y
IF Y = 16 THEN Y=0
IF Y = 0 THEN LENGTH = 0
IF Y = 0 THEN Z = Z+1
IF Z < 3 THEN SLOPE_2
'************************************
'*******************************************
FILL_LAYER: ' FILLS LEVEL 1 AND FIVE, THEN LEVEL 1-2 AND 4-5 RED
' THEN FILLS INNER LAYER GREEN
FOR X = 1 TO 2
LENGTH=0
TIME = 80
L1R=1 : L5R=1
GOTO RING_1 ' FIRST FILL LAYER 1 AND 5
TWO_LEVELS:
L2R=1 : L4R=1
GOTO RING_1 'NOW FILL LAYERS 1 -2 AND 4 - 5
'
GREEN_LEVEL: ' NOW ONLY LAYER 3 WITH GREEN
GOSUB CLR_LEVELS
L3G=1
RING_1:
GOSUB RINGPAT_A
GOSUB SHOWIT
PAUSE TIME
LENGTH = LENGTH+1
IF LENGTH < 25 THEN RING_1
PAUSE 100
LENGTH = 0
PATTERN = $0000000
GOSUB SHOWIT
Y=Y+1
IF Y = 1 THEN TWO_LEVELS
IF Y = 2 THEN GREEN_LEVEL
PAUSE 100
GOSUB CLR_LEVELS
Y=0
NEXT X
'************************************************
'***********************************************
SPINNER: ' COUNTER-ROTATING VERTICAL LINES
TIME = 60 ' PAUSE TIME USED IN "SHOWME"
L1R=1 : L2R=1 : l3r=1 : l4r=1 : l5r=1
FOR Y = 1 TO 6
PATTERN = $0000041
GOSUB SHOWME ' SHOWME IS SHOWIT WITH A "PAUSE TIME " AT THE END
PATTERN = $00000A8
GOSUB SHOWME
PATTERN = $0000500
GOSUB SHOWME
PATTERN = $000A000
GOSUB SHOWME
PATTERN = $0140000
GOSUB SHOWME
PATTERN = $0220000
GOSUB SHOWME
PATTERN = $0410000
GOSUB SHOWME
PATTERN = $0800800
GOSUB SHOWME
PATTERN = $1000040
GOSUB SHOWME
PATTERN = $0080080
GOSUB SHOWME
PATTERN = $0004100
GOSUB SHOWME
PATTERN = $0002200
GOSUB SHOWME
PATTERN = $0040010
GOSUB SHOWME
PATTERN = $0020008
GOSUB SHOWME
PATTERN = $0010004
GOSUB SHOWME
PATTERN = $0000802
GOSUB SHOWME
PATTERN = $0000041
GOSUB SHOWIT
PAUSE 30
NEXT Y
'***********************************
'***********************************
INSIDE_SPIN:
Z = 0 ' SPINNING GREEN FULL "X" FROM BOTTOM TO TOP
TIME = 8
FOR W = 1 TO 3
FOR Y = 1 TO 5
IN_1:
IF Z=2 THEN GOTO Z_0 ' LINGER ON LEVEL 5
FOR X = 1 TO 5
PATTERN = LFTSLSH
GOSUB GREEN_IN
NEXT X
'
FOR X = 1 TO 5
PATTERN = COL_3
GOSUB GREEN_IN
NEXT X
'
FOR X = 1 TO 5
PATTERN = RTSLSH
GOSUB GREEN_IN
NEXT X
'
FOR X = 1 TO 5
PATTERN = ROW_3
GOSUB GREEN_IN
NEXT X
'
FOR X = 1 TO 5
PATTERN = LFTSLSH
GOSUB GREEN_IN
NEXT X
'
FOR X = 1 TO 5
PATTERN = COL_3
GOSUB GREEN_IN
NEXT X
'
FOR X =1 TO 5
PATTERN = RTSLSH
GOSUB GREEN_IN
NEXT X
'
FOR X = 1 TO 5
PATTERN = ROW_3
GOSUB GREEN_IN ' GO TO SUBROUTINE WITH LEVEL SET IN Y
NEXT X
IF Y = 5 THEN Z=Z+1 : GOTO IN_1 ' WE LINGER ON LEVEL 5 DOUBLE
NEXT Y
Z_0:
Z=0
NEXT W
GOSUB CLR_LEVELS
'************************************
'************************************
RED_CROSS: ' THIS DISPLAYS A RED CROSS INSIDE A GREEN OPEN SQUARE
FOR W = 1 TO 6 ' DO IT 6 TIMES
FOR Y = 1 TO 25
FOR X = 1 TO 5
PATTERN = CORNERS ' GENERATE THE SQUARE VERTICAL CORNERS
GOSUB SHOWIT
L1G=1 : L2G=1 : L3G=1 : L4G=1 : L5G=1
PAUSE 2
L2G=0 : L3G=0 : L4G=0
NEXT X
NEXT Y
'******************** NOW DO IT AGAIN, BUT ADD THE INSIDE RED CROSS
FOR Y = 1 TO 25
FOR X = 1 TO 5
PATTERN = CORNERS
GOSUB SHOWIT
L1G=1 : L2G=1 : L3G=1 : L4G=1 : L5G=1
PAUSE 2
L2G=0 : L3G=0 : L4G=0
NEXT X
'
L1G=0 : L5G=0
FOR X = 1 TO 20
PATTERN = cross ' THIS ADDS THE CROSS
GOSUB SHOWIT
L2R=1 : L3R=1 : L4R=1
PAUSEUS 100
L2R=0 :L3R=0 : L4R=0
NEXT X
NEXT Y
NEXT W
W=0
PAUSE 250
'***************************
'************************
RISER: ' RISING RED FLAT
TIME = 150 ' PAUSE TIME IN "SHOWME"
X=0
FOR X = 1 TO 5
GOSUB CLR_LEVELS
PATTERN = SML_CROSS
L1R=1
GOSUB SHOWME ' THERE IS A PAUSE TIME AFTER SHOWME
PATTERN = INX
L1R=0 : L2R=1
GOSUB SHOWME
PATTERN = INSQUARE
L2R=0 : L3R=1
GOSUB SHOWME
PATTERN = INSQOUTCOR
L3R=0 : L4R=1
GOSUB SHOWME
PATTERN = XPAT
GOSUB SHOWIT
L4R=0 : L5R=1
PATTERN = FULL
GOSUB SHOWIT
PAUSE 50
GOSUB CLR_LEVELS
PAUSE 50
PATTERN = FULL
GOSUB SHOWIT
L5G=1
PAUSE 50
GOSUB CLR_LEVELS
PAUSE 50
PATTERN = FULL
GOSUB SHOWIT
L5R=1
PAUSE 100
NEXT X
X=0
L5G=0
GOSUB CLR_LEVELS
'*****************"GO PACK GO"*************
'********************************************
GOSUB GOPACK 'SUBROUTINE TO SPELL "GO"
W=0
PAUSE 500
GOSUB PACK 'SUBROUTINE TO SPELL "PACKERS
GOSUB GOPACK ' "GO" AGAIN
W=0
PAUSE 100
'*****************************
'**************************************
EXPLODE:
TIME = 70
FOR X = 1 TO 3
GOSUB CLR_LEVELS
PAUSE TIME
PATTERN = LED_13
GOSUB SHOWIT 'INSIDE DOT LEVEL 3 ONLY
L3R=1
PAUSE TIME
PATTERN = INX
GOSUB SHOWIT 'INSIDE X LEVEL 3 ONLY
PAUSE TIME
PATTERN = INSQUARE 'SOLID INSIDE SQUARE LEVEL 3 ONLY
GOSUB SHOWIT
PAUSE TIME
L2R=1 : L4R=1 'EXPAND TO LEVELS 2 - 3 - 4
PAUSE TIME
PATTERN = INSQOUTCOR
GOSUB SHOWIT 'NOW INSIDE SQUARE PLUS 4 CORNERS ON 2 - 4
PAUSE TIME
PATTERN = $1577DD5
GOSUB SHOWIT 'PATTERN WITH JAGGED EDGES LEVELS 2 - 3 - 4
PAUSE TIME
PATTERN = FULL
GOSUB SHOWIT 'FULL LEVELS 2 - 3 - 4
PAUSE TIME
L1R=1 : L5R=1
PAUSE TIME
NEXT X
FOR W = 1 TO 15 'NOW FLASH THE CUBE
L1R=1 : L2R=1 : L3R=1 : L4R=1 : L5R=1
L1G=1 : L2G=1 : L3G=1 : L4G=1 : L5G=1
PAUSE 20
GOSUB CLR_LEVELS
PAUSE 20
NEXT W
'*****************************
'**************************************
ROLL_RED__X: ' THIS SPINS A RED X AROUND THE ROWS
TIME = 400 ' PAUSE TIME WILL BE IN MICROSECONDS
FOR Y = 1 TO 10
FOR X = 1 TO 40
'NEED TO GET THE PATTERN, SHIFT IT OUT, TURN ON, AND TURN IT OFF IN THAT ORDER
' TO PREVENT "GHOSTING" PAUSE TIMES DETERMINE TIME AT EACH PATTERN
PATTERN = ROW_1
GOSUB SHOWIT
L1R=1
PAUSEUS TIME
L1R=0
PATTERN = ROW_2
GOSUB SHOWIT
L2R=1
PAUSEUS TIME
L2R=0
PATTERN = ROW_3
GOSUB SHOWIT
L3R=1
PAUSEUS TIME
L3R=0
PATTERN = ROW_4
GOSUB SHOWIT
L4R=1
PAUSEUS TIME
L4R=0
PATTERN = ROW_5
GOSUB SHOWIT
L5R=1
PAUSEUS TIME
L5R=0
NEXT X
FOR X = 1 TO 220
PATTERN = ROW_3
GOSUB SHOWIT
L1R=1 : L2R=1 : L3R=1 : L4R=1 : L5R=1
PAUSEUS TIME
L1R=0 : L2R=0 : L3R=0 : L4R=0 : L5R=0
NEXT X
FOR X = 1 TO 40
PATTERN = ROW_5
GOSUB SHOWIT
L1R=1
PAUSEUS TIME
L1R=0
PATTERN = ROW_4
GOSUB SHOWIT
L2R=1
PAUSEUS TIME
L2R=0
PATTERN = ROW_3
GOSUB SHOWIT
L3R=1
PAUSEUS TIME
L3R=0
PATTERN = ROW_2
GOSUB SHOWIT
L4R=1
PAUSEUS TIME
L4R=0
PATTERN = ROW_1
GOSUB SHOWIT
L5R=1
PAUSEUS TIME
L5R=0
NEXT X
FOR X = 1 TO 80
PATTERN = FULL
GOSUB SHOWIT
L3R=1
PAUSEUS TIME
L3R=0
PAUSEUS TIME
NEXT X
NEXT Y
'**************************************
'***************************************
LEVEL_REVERSE: ' BACK AND FORTH, UP AND DOWN LEVELS
GOSUB CLR_LEVELS
TIME = 80 ' PAUSE TIME FOR "SHOWME"
FOR Y = 0 TO 1
L5R=0
LENGTH = 1
l1r=1 'LEVEL 1 ON
LEV1:
GOSUB BACK_FORTH
GOSUB SHOWME
LENGTH = LENGTH + 1
IF LENGTH < 6 THEN LEV1
l1r=0 'LEVEL 1 OFF
l2r=1 'LEVEL 2 ON
LENGTH = LENGTH - 1 'REVERSE DIRECTION
LEV2:
GOSUB BACK_FORTH
GOSUB SHOWME
LENGTH = LENGTH - 1
IF LENGTH > 0 THEN LEV2
LENGTH = 1
l2r=0 'LEVEL 2 OFF
l3r=1 'LEVEL 3 ON
LEV3:
GOSUB BACK_FORTH
GOSUB SHOWME
LENGTH = LENGTH + 1
IF LENGTH <6 THEN LEV3
LEVELR.0[X]=0 'CLEAR LEVEL 3
l3r=0 'LEVEL 3 OFF
L4R=1 'LEVEL 4 ON
LENGTH = LENGTH - 1
LEV4:
GOSUB BACK_FORTH
GOSUB SHOWME
LENGTH = LENGTH - 1
IF LENGTH > 0 THEN LEV4
LENGTH = 1
L4R=0 'LEVEL 4 OFF
L5R=1 'LEVEL 5 ON
LEV5:
GOSUB BACK_FORTH
GOSUB SHOWME
LENGTH = LENGTH + 1
IF LENGTH <6 THEN LEV5
L5R=0
L4R=1
LENGTH = 5 'RESET LENGTH (RESTART)
LEV4_1:
GOSUB BACK_FORTH
GOSUB SHOWME
LENGTH = LENGTH-1
IF LENGTH >0 THEN LEV4_1
L4R=0
L3R=1
LENGTH = 1 'RESET LENGTH
LEV3_1:
GOSUB BACK_FORTH
GOSUB SHOWME
LENGTH = LENGTH +1
IF LENGTH < 6 THEN LEV3_1
L3R=0
L2R=1
LENGTH = 5 'RESET LENGTH (INDEX)
LEV2_1:
GOSUB BACK_FORTH
GOSUB SHOWME
LENGTH = LENGTH-1
IF LENGTH >0 THEN LEV2_1
L2R=0
L1R=1
LENGTH = 1 'RESET LENGTH
NEXT Y
'***************************************
'*************************************
FRONT_BACK:
time = 80 'PAUSE TIME USED IN "SHOWME"
L5G=1 : L4G=1 : L3G=1 : L2G=1 : L1G=1
L5R=0 : L4R=0 : L3R=0 : L2R=0 : L1R=0
FOR Y = 1 TO 2
FOR X = 0 TO 1
PATTERN = COL_3
GOSUB SHOWME
PATTERN = $1000001
GOSUB SHOWME
PATTERN = $0800002
GOSUB SHOWME
PATTERN = $0400004
GOSUB SHOWME
PATTERN = $0200008
GOSUB SHOWME
PATTERN = $0100010
GOSUB SHOWME
L5G=0 : L4G=0 : L3G=0 : L2G=0 : L1G=0
L5R=1 : L4R=1 : L3R=1 : L2R=1 : L1R=1
PATTERN = COL_3
GOSUB SHOWME
PATTERN = $0008200
GOSUB SHOWME
PATTERN = $0010100
GOSUB SHOWME
PATTERN = $0020080
GOSUB SHOWME
PATTERN = $0040040
GOSUB SHOWME
PATTERN = $0080020
GOSUB SHOWME
L5G=1 : L4G=1 : L3G=1 : L2G=1 : L1G=1
L5R=0 : L4R=0 : L3R=0 : L2R=0 : L1R=0
NEXT X
NEXT Y
GOSUB CLR_LEVELS
'********************************
'***********************************
RISING_PLATE: ' RISING GREEN "PLATE" INSIDE RED BOX
TIME = 8
FOR W = 1 TO 8
FOR Y = 1 TO 8
FOR X = 1 TO 5
PATTERN = INSQUARE
GOSUB GREEN_IN
NEXT X
NEXT Y
NEXT W
GOSUB CLR_LEVELS
'*****************************
'*****************************
' "PACKERS RULE BEARS SUCK"
LENGTH = 0 : X = 0
GOSUB PACKERSRULE
'*************************************
'****************************************
GOTO MAIN ' DO EVERYTHING AGAIN
END


Menu

Re: 16F690 MCLR as Input
many thanks Henrik to clarify this post.
jackberg1 Yesterday, 20:42that make more sense to me now with further test, when the pin RA3
has nothing connected to it, the input is floating thus
when adding a pulldown it's...