1.-
INTRODUCCIÓN
Este proyecto consiste en hacer prototipo
de árbol de navidad con Arduino. Es una caja de zapatos forrada de papel de
regalo, que aparentemente se ha hecho para que parezca un regalo de navidad. En
la planta de la caja está el dibujo de un árbol de navidad en el que el árbol
está adornado con los leds que se ha incrustado en el.
Los leds están conectados al Arduino y
con la ayuda del potenciómetro podremos elegir el tipo de juego de luces que
queramos asignar.
También se ha adaptado un buzzer para que
suenen los tonos navideños, enciendo o apagando según se quiera con el
interruptor.
2.- MATERIALES
Relación
de los materiales utilizados son:
-
Caja de zapatos
|
-
Papel de regalo
|
-
Pegamento de cola
|
-
Tijeras
|
-
Alfiler
|
-
Papel fotográfico
|
-
Impresora
|
-
18 Leds
|
-
5 Resistencias
|
-
Protoboard
|
-
Cables
de conexión
|
-
Soldador
de estaño
|
-
Termofusible
|
-
Portátil
|
-
2
Arduino
|
-
Buzzer
|
-
Potenciómetro
|
-
Botón
|
3.-
DESARROLLO PRÁCTICO
-
Circuito con fritzing.
-
Montaje.
1º Buscar una caja de zapatos y forrar con
papel de regalo.
2º Escoger una foto de un árbol de navidad
en internet, imprimirlo con papel fotográfico y pegarlo con cola. Una vez hecho
esto, se procederá a clavar los 18 leds ayudándonos con un alfiler para hacer
los agujeros en la caja.
3º
Una vez tengamos la distribución de los leds colocados, procederemos a soldar
con estaño formando el circuito. En este caso, se ha formado 5 líneas de leds
en paralelo, para que cada línea vaya a un pin del Arduino. Se ha soldado con
estaño uniéndolos con cable las patillas de los leds. Cada una de las 5 líneas
van unidas al ánodo pasando por una resistencia cada una, llegando hasta los pines
(positivo) del Arduino. Por último, todos los leds estarán unidos al cátodo e
irán directos a masa (negativo).
4º Seguidamente como queremos que los leds
hagan diferentes juegos de luz en las luces del árbol, colocaremos un
potenciómetro para que cuando variemos el valor de este (entre 0 y 1024),
podamos elegir el juego de luz que queramos. Se conectará a positivo y masa, y
el del medio irá a Analogic 0.
5º Una vez que ya tenemos toda la parte de
los leds hecha, ahora procederemos a crear la parte de sonido, para que suene
la caja con tonos navideños. Utilizaremos otro Arduino para esto. Pondremos un
botón para poder cerrar y abrir el circuito cuando queramos, es decir, encender
o apagar el buzzer.
-
Programación Arduino.
Utilizaremos
dos Arduinos. Esto se divide en dos partes. Primero la parte de los leds y
segundo la parte del sonido. Lo que pretendía era conectar todo en un Arduino,
pero esto no se puede conseguir ya que el Arduino ejecuta las órdenes de forma
ordenada y en forma secuencial.
PROGRAMACION
JUEGO DE LOS LEDS
int i = 0;
int pinPotenciometro =A0;
int valorPotenciometro = 0;
void setup()
{
pinMode(pinPotenciometro, INPUT); //Asigna al potenciometro
for (i = 2; i < 7; i++) //Las lineas de leds, abren los pines del 2 al 6
pinMode(i, OUTPUT);
Serial.begin(9600);
}
void loop()
{
valorPotenciometro = analogRead(pinPotenciometro);
Serial.println(valorPotenciometro, DEC);
//1 Primer juego de luces
if (valorPotenciometro > 141 && valorPotenciometro < 332) {
digitalWrite(2, HIGH);
digitalWrite(4, HIGH);
digitalWrite(3, HIGH);
delay(1000);
digitalWrite(3, LOW);
delay(100);
digitalWrite(5, HIGH);
delay(1000);
digitalWrite(5, LOW);
delay(100);
digitalWrite(6, HIGH);
delay(1000);
digitalWrite(6, LOW);
digitalWrite(2, LOW);
delay(100);
}
//2 Segundo juego de luces
if (valorPotenciometro >= 333 && valorPotenciometro < 505) {
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
analogWrite(2, fadeValue);
analogWrite(3, fadeValue);
analogWrite(4, fadeValue);
analogWrite(5, fadeValue);
analogWrite(6, fadeValue);
delay(20);
}
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
analogWrite(2, fadeValue);
analogWrite(3, fadeValue);
analogWrite(4, fadeValue);
analogWrite(5, fadeValue);
analogWrite(6, fadeValue);
delay(20);
}
}
//3 Tercer juego de luces
if (valorPotenciometro >= 506 && valorPotenciometro < 677) {
digitalWrite(4, HIGH);
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
analogWrite(2, fadeValue);
delay(100);
analogWrite(3, fadeValue);
analogWrite(5, fadeValue);
analogWrite(6, fadeValue);
delay(20);
}
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
analogWrite(3, fadeValue);
analogWrite(5, fadeValue);
analogWrite(6, fadeValue);
delay(100);
}
}
//4 Cuarto juego de luces
if (valorPotenciometro >= 678 && valorPotenciometro < 850) {
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
delay(1500);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(200);
}
//APAGA TODOS LOS LEDS
if (valorPotenciometro <= 140) apagarLeds();
//ENCIENDE TODOS LOS LEDS
if (valorPotenciometro >= 851) encenderLeds();
if (valorPotenciometro == 1023) encenderLeds();
}
void apagarLeds() //Funcion que apaga todos los leds
{
for (i = 2; i < 7; i++)
digitalWrite(i, LOW);
}
void encenderLeds() //Funcion que enciende todos los leds
{
for (i = 2; i < 7; i++)
digitalWrite(i, HIGH);
PROGRAMACIÓN
DEL TONO MUSICAL
int speakerPin = 9;
int length = 144; //Numero de notas
char notes[] =
"eeeeeeegcdeffffeeeddedgeeeeeeegcdeffffeeggfdcggeegedggffgggeegedggffgggeegedggffgffcfgfcagbagffedefgaedcCbabagafgedcffefgfcaagabagabagfedcbagf"; //Notas
int beats[] = {1,1,2,1,1,2,1,1,1,1,4,1,1,2,1,1,2,1,1,1,1,2,2,1,1,2,1,1,2,1,1,1,1,4,1,1,2,1,1,2,1,1,1,1,4,1,1,1,1,1,1,3,1,1,1,1,3,1,1,1,1,1,1,3,1,1,1,1,3,1,1,1,1,1,1,3,1,1,1,1,3,1,2,1,1,1,1,2,1,1,1,1,2,1,1,2,1,1,1,1,1,1,2,2,3,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,2,2,4}; //Tiempo de cada nota
int tempo = 300; //Velocidad del tono
void playTone(int tone, int duration) {
for (long i = 0; i < duration * 1000L; i += tone * 2) {
digitalWrite(speakerPin, HIGH);
delayMicroseconds(tone);
digitalWrite(speakerPin, LOW);
delayMicroseconds(tone);
}
}
void playNote(char note, int duration) {
char names[] = { 'G','c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
/* si do re mi fa sol la si do*/
int tones[] = { 1950,1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };//La escala del tono que se a elegido
// Reproducir el tono que corresponde al nombre de la nota
for (int i = 0; i < 9; i++) {
if (names[i] == note) {
playTone(tones[i], duration);
}
}
}
void setup() {
pinMode(speakerPin, OUTPUT);
}
void loop() {
for (int i = 0; i < length; i++) {
if (notes[i] == ' ') {
delay(beats[i] * tempo); //Tiempo restante
} else {
playNote(notes[i], beats[i] * tempo);
}
//Pausa entre notas
delay(tempo / 2);
}
}
no me compila
ResponderEliminarque bonito proyecto
ResponderEliminarpero tengo una duda que no me deja...
como se llama la canción del video?? jeje