Quando la passione non dorme mai…..
Avevo un alberello di Natale a cui mia moglie voleva aggiungere delle lucine. Sarebbe stato facile acquistarle ma….
Ho preso 6 led mini, sei resistenze da 560 Ohm, un microprocessore montato sulla scheda ARDUINO, qualche filo, connettori quanto basta. Ho mescolato il tutto ed è uscito quello che potete vedere. Il primo filmato allegato è l’alberello, il secondo filmato la tecnologia che c’è dietro. Non è un grosso progetto ma come sempre il tutto mi serve per tenere in allenamento la mente e non dimenticare quello che ho imparato.
Ecco la tecnologia:
i sei led sono connessi ad altrettante porte digitali (acceso, spento) tramite le resistenze di protezione (le porte hanno un livello logico alto di 5V mentre i led lavorano a tensione inferiore) Il tutto alimentato per evitare collegamenti alla rete da due batterie piatte in serie.
Il software, scritto in C++, prevede quattro sequenze di accensione dei singoli led che vengono richiamate da una funzione che genera numeri random da 1 a 4.Naturalmente si possono creare nuove sequenze o modificare quelle esistenti variando il codice.
Quando si decide di fare le cose in casa a volte si devono risolvere piccoli problemi che non consentono una soluzione diciamo ” commerciale”,ovvero andare al negozio. A me in questo caso si è presentato quello di fissare i piccoli led all’alberello.
La soluzione l’ho trovata usando del filo di ferro di quello usato per il giardino, di colere verde, e del collante rapido. Vi allego la sequenza delle operazioni più che altro a scopo “didattico”.
Sto cercando di migliorare il software aggiungendo un codice che mi consente di dimmerare un led posto sulla punta in modo da dare l’idea di una stella (ho già una idea) e, cosa un pò più sfidante, quella di aggiungere una musichetta natalizia generata sempre dal “caro” ARDUINO. A proposito se non lo conoscete andatevi a vedere qualche cosa in rete.
Buon Natale 2012
/Questo software gestisce 6 led in quattro sequenze di accensione diverse.
#define led1 13 // definizione delle variabili usate
#define led2 12
#define led3 11
#define led4 10
#define led5 9
#define led6 8
int brightness1;
int brightness2;
int brightness;
int ritardo = 200;
int i;
int fadeAmount = 5;
long randNumber;
void setup(){
randomSeed(analogRead(0));
pinMode(led1, OUTPUT); //settaggio delle porte
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
}
void sequenza1(){ // prima sequenza di accensione
digitalWrite(led1, HIGH);
delay(ritardo);
digitalWrite(led1, LOW);
delay(ritardo);
digitalWrite(led2, HIGH);
delay(ritardo);
digitalWrite(led2, LOW);
delay(ritardo);
digitalWrite(led3, HIGH);
delay(ritardo);
digitalWrite(led3, LOW);
delay(ritardo);
digitalWrite(led4, HIGH);
delay(ritardo);
digitalWrite(led4, LOW);
delay(ritardo);
digitalWrite(led5, HIGH);
delay(ritardo);
digitalWrite(led5, LOW);
delay(ritardo);
digitalWrite(led6, HIGH);
delay(ritardo);
digitalWrite(led6, LOW);
delay(ritardo);
}
void sequenza2(){ // seconda sequenza
digitalWrite(led1, HIGH);
delay(ritardo);
digitalWrite(led1, LOW);
delay(ritardo);
digitalWrite(led3, HIGH);
delay(ritardo);
digitalWrite(led3, LOW);
delay(ritardo);
digitalWrite(led5, HIGH);
delay(ritardo);
digitalWrite(led5, LOW);
delay(ritardo);
digitalWrite(led2, HIGH);
delay(ritardo);
digitalWrite(led2, LOW);
delay(ritardo);
digitalWrite(led4, HIGH);
delay(ritardo);
digitalWrite(led4, LOW);
delay(ritardo);
digitalWrite(led6, HIGH);
delay(ritardo);
digitalWrite(led6, LOW);
delay(ritardo);
}
void sequenza3(){ // terza sequenza
digitalWrite(led3, HIGH);
delay(ritardo);
digitalWrite(led4, HIGH);
delay(ritardo);
digitalWrite(led2, HIGH);
delay(ritardo);
digitalWrite(led5, HIGH);
delay(ritardo);
digitalWrite(led1, HIGH);
delay(ritardo);
digitalWrite(led6, HIGH);
delay(ritardo);
digitalWrite(led3, LOW);
delay(ritardo);
digitalWrite(led4, LOW);
delay(ritardo);
digitalWrite(led2, LOW);
delay(ritardo);
digitalWrite(led5, LOW);
delay(ritardo);
digitalWrite(led1, LOW);
delay(ritardo);
digitalWrite(led6, LOW);
delay(ritardo);
}
void sequenza4(){ // quarta sequenza
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
delay(10000);
digitalWrite(led1, LOW);
//delay(ritardo);
digitalWrite(led2, LOW);
//delay(ritardo);
digitalWrite(led3, LOW);
//delay(ritardo);
digitalWrite(led4, LOW);
//delay(ritardo);
digitalWrite(led5, LOW);
//delay(ritardo);
digitalWrite(led6, LOW);
}
void loop(){
randNumber = 4; // generazione del numero random da 1 a 4
//Serial.println(randNumber);
delay(500);
if (randNumber = 1){ / richiama le sequenze di accensione
sequenza1();
delay(500);
}
if(randNumber = 2){
sequenza2();
delay(500);
}
if(randNumber = 3){
sequenza3();
delay(500);
}
/*if(randNumber = 4){
sequenza4();
delay(500);
}*/
}
Buon Natale 2012
Visualizza il video dell’Alberello
Simpatica realizzazione, che permette di cimentarsi con successo nella programmazione e personalizzazioni di routine dedicate a questa
flessibilissima piattaforma.
Mi sono incuriosito sul tema è da poco sono in possesso di un paio di Arduino One .
Chissà se a livello di sezione si riesce a sviluppare qualche incontro a tema su Arduino,
per condividere esperienze e coinvolgere più soci.
Ciao,
Emilio