As the purpose of this project is to create 5 blinking LEDs that simulate old 1960's Christmas tree lights, I've added the following code to fade in/out the LED:
Code:
IsOn VAR BYTE[LEDCount]
i VAR BYTE
FOR x = 0 to (LEDCount - 1) ; set initial LED state to OFF
IsOn(x) = 0
NEXT x
;----[Main Program Loop]----------------------------------------
Main:
x = (x + 1) // LEDcount
IF LoopLED(x) < OnTime(x) THEN
IF IsOn(x) = 1 THEN
READ Brightness + x, Bright(x)
ELSE
IsOn(x) = 1
; Fade up LED to set brightness
FOR i = 0 to Bright(x) Step 1
Bright(x) = i
PAUSE 20
NEXT i
ENDIF
ELSE
IF IsOn(x) = 1 THEN
IsOn(x) = 0
; Fade out LED
FOR i = Bright(x) to 0 Step -1
Bright(x) = i
PAUSE 20
NEXT i
ELSE
Bright(x) = 0
ENDIF
ENDIF
LoopLED(x) = (LoopLED(x) + 1) // (OnTime(x) + OffTime(x))
#IFDEF USE_RANDOM_SEQUENCE
RandPeriod(x) = RandPeriod(x) - 1
IF RandPeriod(x) = 0 THEN
READ RandPeriods+(x<<1), WORD RandPeriod(x)
RANDOM RND
OnTime(x) = (MAX_ON - MIN_ON)* RND.HighByte / 255 + MIN_ON
OffTime(x)= (MAX_OFF - MIN_OFF)* RND.LowByte / 255 + MIN_OFF
ENDIF
#ENDIF
IF x != (LEDcount - 1) THEN Main
Waiting: IF !TMR0IF THEN Waiting
TMR0 = 99
TMR0IF = 0
GOTO Main
I'll program a 12F683 this afternoon and see what it looks like.
Bookmarks