Using your setup, but led are directly connected to the PIC and gnd (i uses an EasyPic 4 board ), you'll use this version
Code:@ __CONFIG _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _LVP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_ON TRISB = 0 rbgArray var byte[3] ' holds the rgb values in this case the led is rbg x var byte y var byte adcVar var byte rbg var byte ' which value we are changing in the rbg array rainbowVal var byte ' the current value to produce rainbow Delta var byte ' find the size of each section in the 6stage rainbow Section var byte ' which section it is in maxValue con 255 'the maximum input value for generating rainbow delta = maxValue/6 y = 0 main: for rainbowval = 0 to 255 gosub rbgrainbow next for rainbowval=255 to 0 step - 1 gosub rbgrainbow next goto main rbgrainbow: for rbg = 0 to 2 section = ((rainbowval + ((rbg * 2)*delta))/ delta) // 6 ' this gives what section it is in select case section case 0 rbgarray[rbg] = (rainbowval // delta)*6 'this is how far it has gone in its section case 1 rbgarray[rbg] = 255 case 2 rbgarray[rbg] = 255 case 3 rbgarray[rbg] = 255 - ((rainbowval //delta)*6) case 4 rbgarray[rbg] = 0 case 5 rbgarray[rbg] = 0 case 6 'this one is for pics bad math rbgarray[rbg] = 0 end select next gosub ledpwm return ledPWM: For y = 0 to 2 Select Case y Case 0 pwm PORTB.0, rbgarray[y], 1 case 1 pwm PORTB.1, rbgarray[y], 1 case 2 pwm PORTB.2, rbgarray[y], 1 end select next return




Bookmarks