No, this line is wrong:
byte dataToSend = (1 << (i+4)) | (15 & ~ledData);
Or maybe you just forgot your code tags?