Tlc.set() not working

I’m working on using the TLC5940 and I can’t seem to get the basic Tlc.set() command to work in one of my functions. It works fine in one function, but is completely unresponsive in another. Here’s what I have laid out so far:

// Begin Fingerlights_alpha.ino
#include "PinChangeInt.h"
#include "Tlc5940.h"
#include <math.h>

// Button Definitions
const int btn_pin[] = {4, 5, 6, 7, 8};

// For debounce detection
volatile long int pbs[] = {0, 0, 0, 0, 0};
volatile long int cbs[] = {0, 0, 0, 0, 0};

int curr_pattern = 0;

void setup() {
  Tlc.init();
  Tlc.clear();
  Tlc.update();
  //Serial.begin(19200);
  for (int i = 0; i < 4; i++) {
    pinMode(btn_pin[i], INPUT);
  }
  
  // Code for pinChangeInt
  PCintPort::attachInterrupt(btn_pin[0], btn_prs0, CHANGE);
  PCintPort::attachInterrupt(btn_pin[1], btn_prs1, CHANGE);
  PCintPort::attachInterrupt(btn_pin[2], btn_prs2, CHANGE);
  PCintPort::attachInterrupt(btn_pin[3], btn_prs3, CHANGE);
  PCintPort::attachInterrupt(btn_pin[4], btn_prs4, CHANGE);
}

void loop() {
  pattSwitch();
}

/* Pattern Listing
Pattern 0: Cyclic Rainbow
Pattern 1: 3-Color Strobe
Pattern 2: 3-Color Fade
Pattern 3: Tracer Style Pattern
Pattern 4: Currently Testing
*/

//Begin interrupts.ino

void debounce(int button) {
  if (digitalRead(btn_pin[button])) { // If the button reads positive
    cbs[button] = millis(); // Set current time mark
    if (cbs[button]-pbs[button] >= 5) { // If it's been 5 milliseconds
      curr_pattern = button; // Set pattern
    } else if (!pbs[button]) { // If previous button state was not set
      pbs[button] = millis(); // Save the current time
    }
  }
}

void btn_prs0() {
  debounce(0);
}

void btn_prs1() {
  debounce(1);
}

void btn_prs2() {
  debounce(2);
}

void btn_prs3() {
  debounce(3);
}

void btn_prs4() {
  debounce(4);
}

// Begin lightControl.ino

void hsvSet(int f, float hue, float sat, float val) {
  /* Expressed as:
  f   - Finger: 0-4 (0 being thumb, 4 being pinky)
  hue - Shade of color (red, green, blue, etc): 0 - 359 (will loop if you go past - e.g. 540 = 180)
    0 being red, 120 being green, 240 being blue
  sat - Saturation: 0 - 1
    0 being black, grey or white, 1 being solid color, such as red, green or blue
  val - Value: 0 - 1
    0 being black, 1 being white or other bright color such as red
  
  For more information on what HSV is and how this code works, you can find more information here:
  http://en.wikipedia.org/wiki/HSL_and_HSV */
  
  float r, g, b, x, m, c;
  hue = fmod(hue, 360);
  sat = constrain(sat, 0, 1);
  val = constrain(val, 0, 1)*100;
  
  c = val * sat;
  if (hue > 0) {
    hue /= 60;
    x = c*(1-fabs((fmod(hue,2))-1));
    m = val - c;
    
    if      (hue >= 0 && hue < 1) { r = c; g = x; b = 0; }
    else if (hue >= 1 && hue < 2) { r = x; g = c; b = 0; }
    else if (hue >= 2 && hue < 3) { r = 0; g = c; b = x; }
    else if (hue >= 3 && hue < 4) { r = 0; g = x; b = c; }
    else if (hue >= 4 && hue < 5) { r = x; g = 0; b = c; }
    else if (hue >= 5 && hue < 6) { r = c; g = 0; b = x; }
  } else                          { r = c; g = 0; b = 0; }
    r += m;
    g += m;
    b += m;
    
  Tlc.set(f*3, r*16*.5);
  Tlc.set((f*3)+1, g*16);
  Tlc.set((f*3)+2, b*16);
}

void rgbSet(int f, int r, int g, int b) {
  // Expressed as: finger, red value, green value, blue value
  Tlc.set(f*3, r*16*.5);
  Tlc.set((f*3)+1, g*16);
  Tlc.set((f*3)+2, b*16);
}

void allOff() { // Turns all lights off for dot/dash effect
  Tlc.clear();
  Tlc.update();
}

void strobeAll(int hue, float sat, float val, int on, int off) {
  for (int i = 0; i < 5; i++) {
    hsvSet(i, hue, sat, val);
  }
  Tlc.update();
  delay(on);
  allOff();
  delay(off);
}

void setAllHue(float hue, float sat, float val) {
  for (int k = 0; k < 5; k++) {
    hsvSet(k, hue, sat, val);
  }
}

void setAllRGB(int r, int g, int b) {
  for (int k = 0; k < 5; k++) {
    rgbSet(k, r, g, b);
  }
}

// Begin pattSwitch.ino

void pattSwitch() {
  switch (curr_pattern) {
    case 0:
      patt0();
      break;
    case 1:
      patt1();
      break;
    case 2:
      patt2();
      break;
    case 3:
      patt3();
      break;
    case 4:
      patt4();
      break;
    default:
      patt0();
      break;
  }
  Serial.println(curr_pattern);
}

// Begin patterns.ino

// Cyclic, flashing rainbow pattern
void patt0() {
  for (int h = 0; h < 360; h += 5) {
    for (int j = 0; j < 5; j++) {
      hsvSet(j, h+(j*20), 1, 1);
    }
    Tlc.update();
    delay(2);
    allOff();
    delay(10);
  }
}

// 3-color strobe
void patt1() {
  setAllHue(0, 1, 1);
  Tlc.update();
  delay(5);
  allOff();
  delay(20);
  setAllHue(120, 1, 1);
  Tlc.update();
  delay(5);
  allOff();
  delay(20);
  setAllHue(240, 1, 1);
  Tlc.update();
  delay(5);
  allOff();
  delay(20);
}

// RGB Cycle
void patt2() {
  for (int i = 0; i++; i < 360) {
    setAllHue(i, 1, 1);
    Tlc.update();
    delay(2);
    allOff();
    delay(10);
  }
}

// Tracer style pattern (Color 1 most prominent; best with full saturation and brightness)
void patt3() {
  setAllRGB(256, 256, 256);
  Tlc.update();
  delay(20);
  setAllRGB(0, 0, 256);
  Tlc.update();
  delay(2);
  setAllHue(256, 256, 256);
  Tlc.update();
  delay(10);
  setAllHue(0, 256, 0);
  Tlc.update();
  delay(2);
}

// Currently for Testing
void patt4() {
  for (int i = 0; i++; i < 16) {
    Tlc.set(i, 4095);
  }
  Tlc.update();
}

Here are the issues I’m having:

Pattern 1 works flawlessly.
Pattern 2 works flawlessly.
Pattern 3 shows up completely blank. It’s supposed to be a smooth fade through the color spectrum with a strobe.
Pattern 4 shows just red and blue. It’s supposed to be blue, white and green.
Pattern 5 shows up completely blank. It’s supposed to show up as plain white.

I was having trouble with Patterns 3 and 4 when I decided to go to strict basics and set all to max values when I realized that even the basic commands were not functioning correctly. What am I missing here? I am using an OSEPP Uno board. Is it possible that the code isn’t working correctly because it’s an off-brand board or is it something in my code?

Pattern 1 works flawlessly.
Pattern 2 works flawlessly.
Pattern 3 shows up completely blank. It's supposed to be a smooth fade through the color spectrum with a strobe.
Pattern 4 shows just red and blue. It's supposed to be blue, white and green.
Pattern 5 shows up completely blank. It's supposed to show up as plain white.

You don't have a patt5() function. You don't mention what patt0() actually does. Care to try again, using names that are actually present in the code?

Sorry. I'm so used to substituting zero indexing in my head... Subtract one from each of those... Patt 0 = Patt 1, etc.