Quote Originally Posted by mister_e
i don't want to broke you nuts but this is tested and working.
Code:
TRISC = 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 PORTC.0, rbgarray[y], 1
            case 1
                 pwm PORTC.1, rbgarray[y], 1
            case 2
                 pwm PORTC.2, rbgarray[y], 1
        end select 
    next
    return
  • 1. Are your LEDs connected between PORTC and gnd via resistor?
    2. Is your MCLR pin tie to VCC with a 10K resistor?
    3. Have you place 0.1uf cap close to your PIC?
    4. is your supply line 5V and neat, un-noisy?
    5. Is your crystal match to your DEFINE OSC setting?
    6. Case you're using 8MHZ or higher, did you set HS oscillator in your Programmer program before programming your PIC?
This code is brilliant.. well, I'm sure it is but I don't totally understand it. I'm only three days into micro controllers and PBP, but I'm a pretty fast learner with an engineering background - so I'm eating this stuff up.

I'm trying to figure out this code, but I keep getting stumped at two parts - mostly because I'm not totally fluent in BASIC I suppose.

Can somebody explain what "rbgarray[rbg]" does? I don't quite understand what the content of [] is doing to rbgarray and how it effects the program...

Thanks in advance for your time!