Summary of Build A Color Changing LED Tree Using Arduino
This article guides you through creating a color-changing LED tree using an ATtiny85 microcontroller programmed via an Arduino Uno. The project involves programming the ATtiny85 with code to fade RGB LED colors smoothly and then assembling the LEDs and wiring into a decorative LED tree. The process includes preparing wires, headers, and LEDs to build the physical tree structure.
Parts used in the Color Changing LED Tree project:
- ATtiny85 microcontroller
- Arduino Uno (for programming the ATtiny85)
- 10x male header pins
- Solid core wire, two colors
- Multiple LEDs
Ever wanted an LED tree? Well now you can have your LED tree and eat it too (no, wait, you probably shouldn’t)..
Step 1: Gather the parts
You will need:
1x ATtiny85
10x male header pins
Solid core wire, 2 colors
A bunch of LEDs
1x Arduino Uno to program the ATtiny
Step 2: Program the ATtiny
To prep the Arduino for programming the ATtiny, follow the guide on this page.
After you have done that, upload this sketch to the ATtiny.
//CODE STARTS HERE
//ATtiny85 RGB color fading tree
const int 2Pin = 2;
const int 1Pin = 1;
const int 0Pin = 0;
void setup()
{
pinMode(2Pin, OUTPUT);
pinMode(1Pin, OUTPUT);
pinMode(0Pin, OUTPUT);
}
void loop() {
2to21();
21to1();
1to10();
10to0();
0to02();
02to2();
}
void 2to21()
{
digitalWrite(redPin, HIGH);
digitalWrite(bluPin, LOW);
// fade up green
for(byte i=1; i<100; i++) {
byte on = i;
byte off = 100-on;
for( byte a=0; a<100; a++ ) {
digitalWrite(grnPin, HIGH);
delayMicroseconds(on);
digitalWrite(grnPin, LOW);
delayMicroseconds(off);
}
}
}
void 21to1()
{
digitalWrite(grnPin, HIGH);
digitalWrite(bluPin, LOW);
// fade down red
for(byte i=1; i<100; i++) {
byte on = 100-i;
byte off = i;
for( byte a=0; a<100; a++ ) {
digitalWrite(redPin, HIGH);
delayMicroseconds(on);
digitalWrite(redPin, LOW);
delayMicroseconds(off);
}
}
}
void 1to10()
{
digitalWrite(grnPin, HIGH);
digitalWrite(redPin, LOW);
// fade up blue
for(byte i=1; i<100; i++) {
byte on = i;
byte off = 100-on;
for( byte a=0; a<100; a++ ) {
digitalWrite(bluPin, HIGH);
delayMicroseconds(on);
digitalWrite(bluPin, LOW);
delayMicroseconds(off);
}
}
}
void 10to0()
{
digitalWrite(bluPin, HIGH);
digitalWrite(redPin, LOW);
// fade down green
for(byte i=1; i<100; i++) {
byte on = 100-i;
byte off = i;
for( byte a=0; a<100; a++ ) {
digitalWrite(grnPin, HIGH);
delayMicroseconds(on);
digitalWrite(grnPin, LOW);
delayMicroseconds(off);
}
}
}
void 0to02()
{
digitalWrite(bluPin, HIGH);
digitalWrite(grnPin, LOW);
// fade up red
for(byte i=1; i<100; i++) {
byte on = i;
byte off = 100-on;
for( byte a=0; a<100; a++ ) {
digitalWrite(redPin, HIGH);
delayMicroseconds(on);
digitalWrite(redPin, LOW);
delayMicroseconds(off);
}
}
}
void 02to2()
{
digitalWrite(redPin, HIGH);
digitalWrite(grnPin, LOW);
// fade down blue
for(byte i=1; i<100; i++) {
byte on = 100-i;
byte off = i;
for( byte a=0; a<100; a++ ) {
digitalWrite(bluPin, HIGH);
delayMicroseconds(on);
digitalWrite(bluPin, LOW);
delayMicroseconds(off);
}
}
}
//CODE ENDS HERE
Step 3: Construct the Tree
First, start by taking two different colors of wire and cutting them into pieces (I cut them about 6 inches long). Then strip the ends off all the wires.
For more detail: Build A Color Changing LED Tree Using Arduino