neopixel snowman

Make_snowman

In building this project I followed the very comprehensive guide from Adafruit on working with RGB neopixels. The guide is very detailed and includes all you need to get started with lengths of spare RGB neopixel strips. Read it here.

I have included the schematic from Adafruit below. I am powering the Arduino (Orangepip Kona328) from a 12V power supply and using the Vin pin on the board for the 12V power supply for the LED strips. Due to the larger currents needed to drive the LEDs I followed the recommendations of using a power NPN transistor with each colour channel. I bought a handful of TIP120 Power Darlington Transistors for less than a £1 each.

I built the circuit as shown below (Attribution-ShareAlike Creative Commons - learn.adafruit.com, owner Tyler Cooper) and used their sample code below.

led_strips_ledstripfet

I made a simple little case to hide the Kona328 and the transistors. There is very little heat produced by either the board or the transistors and I have left the snowman running all day. With any home made project I won't be leaving it switched on over night.

IMG_4380IMG_4381

  1. // in the #defines
  2. // public domain, enjoy!
  3. #define REDPIN 5
  4. #define GREENPIN 6
  5. #define BLUEPIN 3
  6. #define FADESPEED 5 // make this higher to slow down
  7. void setup() {
  8. pinMode(REDPIN, OUTPUT);
  9. pinMode(GREENPIN, OUTPUT);
  10. pinMode(BLUEPIN, OUTPUT);
  11. }
  12. void loop() {
  13. int r, g, b;
  14. // fade from blue to violet
  15. for (r = 0; r < 256; r++) {
  16. analogWrite(REDPIN, r);
  17. delay(FADESPEED);
  18. }
  19. // fade from violet to red
  20. for (b = 255; b > 0; b--) {
  21. analogWrite(BLUEPIN, b);
  22. delay(FADESPEED);
  23. }
  24. // fade from red to yellow
  25. for (g = 0; g < 256; g++) {
  26. analogWrite(GREENPIN, g);
  27. delay(FADESPEED);
  28. }
  29. // fade from yellow to green
  30. for (r = 255; r > 0; r--) {
  31. analogWrite(REDPIN, r);
  32. delay(FADESPEED);
  33. }
  34. // fade from green to teal
  35. for (b = 0; b < 256; b++) {
  36. analogWrite(BLUEPIN, b);
  37. delay(FADESPEED);
  38. }
  39. // fade from teal to blue
  40. for (g = 255; g > 0; g--) {
  41. analogWrite(GREENPIN, g);
  42. delay(FADESPEED);
  43. }
  44. }