Arduino Christmas Tree

DSC01096
E potevamo arrivare a Natale e non pubblicare un progettino basato su Arduino????

Ho pensato di costruire un alberello decorativo ridotto all’osso! Una basetta millefori appositamente tagliata a forma di albero di Natale, una manciata di led colorati e un Arduino che fa da base e da processore!

Il circuito e’ semplicissimo….sfrutta le uscite in PWM (5,6,9,10,11) per gli effetti di FADE….e 4 pin normali per le accensioni alternate di  altre serie luminose.

Dai pins escono 5volt….ottimali per pilotare 2 led in serie….troppi per pilotarne uno solo. Quindi 2 led possono essere connessi in serie direttamente tra pin e GND, se usiamo invece un led mettiamo in serie al positivo una resistenza da 330 ohm 1/4 watt per limitare la corrente.

Ecco lo schema

Schema elettrico

Schema elettrico

 

E un paio di foto per farvi vedere il lavoro finito…

Albero - front

Albero – front

 

Albero – rear

Albero montato - rear

Albero montato – rear

 

Il programma altro non e’ che una serie di combinazioni di giochi….cicli di FOR e DELAY …..potrete sbizzarrirvi con gli effetti più disparati.

long randNumber;
void setup() {
DDRB = B11111111;
DDRD = B11111100;
}
void loop()
{
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
analogWrite(11, fadeValue);
delay(30);
}
{
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
analogWrite(9, fadeValue);
delay(30);
} {
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
analogWrite(10, fadeValue);
delay(30);
} {
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
analogWrite(6, fadeValue);
delay(30);
} {
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
analogWrite(5, fadeValue);
delay(30);
}
for(int i = 0 ; i < 10; i++){
digitalWrite(12, HIGH);
delay(10);
digitalWrite(12, LOW);
delay(20);
digitalWrite(2, HIGH);
delay(10);
digitalWrite(2, LOW);
}
{
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
analogWrite(11, fadeValue);
delay(30);
}
{
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
analogWrite(9, fadeValue);
delay(30);
} {
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
analogWrite(10, fadeValue);
delay(30);
} {
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
analogWrite(6, fadeValue);
delay(30);
} {
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
analogWrite(5, fadeValue);
delay(30);
}
}
{
for(int e = 0 ; e < 10; e++){
digitalWrite(12, HIGH);
delay(10);
digitalWrite(12, LOW);
delay(20);
digitalWrite(2, HIGH);
delay(10);
digitalWrite(2, LOW);
}
for(int f = 0 ; f < 10; f++){
digitalWrite(7, HIGH);
delay(10);
digitalWrite(7, LOW);
delay(20);
digitalWrite(4, HIGH);
delay(10);
digitalWrite(4, LOW);
}
for(int k = 0 ; k < 30; k++){
PORTD= B11111100;
PORTB= B11111110;
delay(10);
PORTD= B00000000;
PORTB= B00000000;
delay(20);
PORTD= B01101100;
PORTB= B10110100;
delay(10);
PORTD= B00000000;
PORTB= B00000000;
}
for(int d = 0 ; d < 30; d++){
PORTD= B11111100;
PORTB= B11111100;
delay(40);
PORTD= B00000000;
PORTB= B00000000;
delay(60);
PORTD= B01101100;
PORTB= B10001011;
delay(40);
PORTD= B00000000;
PORTB= B00000000;
}
for(int w = 0 ; w < 30; w++){
PORTD= B11111100;
PORTB= B11111100;
delay(60);
PORTD= B00000000;
PORTB= B00000000;
delay(100);
PORTD= B01101100;
PORTB= B10001011;
delay(60);
PORTD= B00000000;
PORTB= B00000000;
}
PORTD= B00000000;
PORTB= B00000000;
delay(3000);
digitalWrite(12, HIGH);
delay(1000);
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(10, HIGH);
delay(1000);
digitalWrite(6, HIGH);
delay(1000);
digitalWrite(9, HIGH);
delay(1000);
digitalWrite(5, HIGH);
delay(1000);
digitalWrite(11, HIGH);
delay(4000);
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
analogWrite(11, fadeValue);
delay(10);
}
{
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
analogWrite(9, fadeValue);
delay(10);
} {
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
analogWrite(10, fadeValue);
delay(10);
} {
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
analogWrite(6, fadeValue);
delay(10);
} {
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
analogWrite(5, fadeValue);
delay(10);
}
delay(300);
PORTD= B00000000;
PORTB= B00000000;
delay(400);
for(int f = 0 ; f < 4; f++){
digitalWrite(7, HIGH);
delay(500);
digitalWrite(7, LOW);
delay(500);
digitalWrite(4, HIGH);
delay(500);
digitalWrite(4, LOW);
delay(500);
}
for(int f = 0 ; f < 2; f++){
digitalWrite(12, HIGH);
delay(500);
digitalWrite(2, HIGH);
delay(500);
digitalWrite(10, HIGH);
delay(500);
digitalWrite(10, LOW);
delay(500);
digitalWrite(2, LOW);
delay(500);
digitalWrite(12, LOW);
delay(500);
}
{
for(int e = 0 ; e < 20; e++){
randNumber = random(2, 13);
digitalWrite(randNumber, HIGH);
delay(200);
}
{

for(int e = 0 ; e < 20; e++){
randNumber = random(2, 13);
digitalWrite(randNumber, LOW);
delay(200);
}
PORTD= B00000000;
PORTB= B00000000;
delay(1500);

for(int f = 0 ; f < 5; f++){
digitalWrite(10, HIGH);
delay(100);
digitalWrite(2, HIGH);
delay(100);
digitalWrite(6, HIGH);
digitalWrite(9, HIGH);
delay(100);
digitalWrite(7, HIGH);
digitalWrite(4, HIGH);
delay(100);
digitalWrite(5, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
delay(100);
digitalWrite(10, LOW);
delay(100);
digitalWrite(2, LOW);
delay(100);
digitalWrite(6, LOW);
digitalWrite(9, LOW);
delay(100);
digitalWrite(7, LOW);
digitalWrite(4, LOW);
delay(100);
digitalWrite(5, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
delay(100);

}

for(int f = 0 ; f < 5; f++){
digitalWrite(5, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
delay(100);
digitalWrite(7, HIGH);
digitalWrite(4, HIGH);
delay(100);
digitalWrite(6, HIGH);
digitalWrite(9, HIGH);
delay(100);
digitalWrite(2, HIGH);
delay(100);
digitalWrite(10, HIGH);
delay(100);
digitalWrite(5, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
delay(100);
digitalWrite(7, LOW);
digitalWrite(4, LOW);
delay(100);
digitalWrite(6, LOW);
digitalWrite(9, LOW);
delay(100);
digitalWrite(2, LOW);
delay(100);
digitalWrite(10, LOW);
delay(100);
}
delay(200);

}}}}}}}}}}}}}}}}

 

Consiglio di fare prima il circuito….provare le singole serie di led con un programmino semplice (anche il BLINK presente tra gli esempi di Arduino) e poi iniziare a pensare ai vari giochi di luce.

Ecco un video di ciò che ho realizzato :

 

BUONE FESTE

 

 

One thought on “Arduino Christmas Tree

  1. ciao seguo il tuo blog e devo dire che mi sto appassionando ai tuoi progetti..ho comprato da poco un arduino uno e alcuni accessori, ma sono ancora inesperto!. volevo chiederti se conosci un emulatore/simulatore da pc/mac per provare prima “virtualmente” il codice che creo e soprattutto gli attacchi tra input e output di arduino evitando di bruciare la scheda o i vari led etc… grazie e buon lavoro!

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *


5 − uno =

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">