So I got the motivation to implement this from this thread here.
I'm new to arduino/electronics in general so it took me some time to get this working and there are probably some bad practices in the code but it works!
I tried to follow what I thought was proper procedure while implementing this into Marlin. You'll need to edit Configuration.h and Marlin_main.cpp, as well as add in two new files. I'll post everything at the bottom, except for the changes to Configuration.h as everyone's is probably a little different. Add this some where to the bottom, I put it right under the servo stuff:
// Declare pin numbers for the RGB channels
#define REDPIN 8
#define GREENPIN 9
#define BLUEPIN 10
To physically connect this, you'll need to break out EXP3 (I just used female headers for now, and I broke out all of the analog pins while I was in there). I used pins 8, 9, and 10 connected to red, green, and blue channels respectively. If you use different pins, edit the above code accordingly.
I used an Ikea Dioder led strip which came with a controller. This is an over priced solution so I wouldn't recommend it, but lucky for me I already had it and it comes with a built in controller which has all the components already there to control this easily. I hacked apart the controller like this guy. Here is a picture of my set up:
This whole thing is controlled with G-Code, so I've just been adding it in to the start/end code in Cura.
Running "M420 R255 E255 B255" will make the lights turn white (can't use "G" for green as that is already a special G-Code character)
"M420 S0" will make the lights fade through all the colors like the above video. There is some error checking so you can't run a pattern like that when the hot-end is set above 0.
I'm working on a way so you can use a custom pattern for the end of the print, but I'm new to coding and this isn't coming along quickly so I figured I'd post what's working now. Also working on a Cura plugin so that I can keep the lights off for the most part, and just have them light up for a bit on layer changes.
Here are the files you'll need when building firmware:
Hopefully someone will get some use out of this, but if not, it was fun to finally get my feet wet with the Arduino. Feel free to critique away.