Aqui estan mas fotos de nuestra guitarra:
viernes, 3 de diciembre de 2010
Video de la guitarra
El siguiente es un video de como funciona la guitarra y de como se oye:
En el video se puede ver como se toca la guitarra y se logra escuchar los diferentes sonidos que se crea al momento de tocar en diferente traste.
Programa en arduino
El siguiente es el programa que creamos para nuestro Arduino y que permitira tocas la guitarra:
/*x es para las fotoresistencias*/
int x1=0;
int x2=1;
int x3=2;
int x4=3;
int x5=4;
/*y es para las cuerdas fisicas*/
int y1=5;
int y2=6;
int y3=7;
int y4=8;
int y5=9;
/*z es para encender y apagar lasers*/
int z=10;
/*s es para el sonar*/
int s=0;
int temp=0;
unsigned int retardo=0;
void setup() {
Serial.begin(115200);
pinMode (x1,INPUT);
pinMode (x2,INPUT);
pinMode (x3,INPUT);
pinMode (x4,INPUT);
pinMode (x5,INPUT);
pinMode (y1,INPUT);
pinMode (y2,INPUT);
pinMode (y3,INPUT);
pinMode (y4,INPUT);
pinMode (y5,INPUT);
pinMode (z,OUTPUT);
}
void loop() {
/*La variable temp va a llamar a la funcion sonar*/
temp=sonar();
/*Si el sonar da los datos que estan en el rango hace todo lo que esta adentro*/
if (temp<24 && temp>10){ /*revisar cuerda y sonar*/
/*Es para encender y apagar lasers*/
digitalWrite(z, HIGH); retardo=0;
//delay(500);
//digitalWrite(z, LOW);
//delay(500);
/*leyendo fotoresistencia*/
x1=digitalRead(0);
x2=digitalRead(1);
x3=digitalRead(2);
x4=digitalRead(3);
x5=digitalRead(4);
/*leyendo cuerda fisica*/
y1=digitalRead(5);
y2=digitalRead(6);
y3=digitalRead(7);
y4=digitalRead(8);
y5=digitalRead(9);
/*Hacer un and de la fotoresistencia con la cuerda fisica para saber cual es la cuerda que estas tocando*/
if (x1==1 && y1==1){ /*Notas de la cuerda 6 dependiendo del sonar*/
if (temp==11){
noteOn(0x90,41,63); /*Nota en el traste 1*/
delay(250);
}
else if (temp==12){
noteOn(0x90,42,63); /*Nota en el traste 2*/
delay(250);
}
else if (temp==13){
noteOn(0x90,43,63); /*Nota en el traste 3*/
delay(250);
}
else if (temp==14){
noteOn(0x90,44,63); /*Nota en el traste 4*/
delay(250);
}
else if (temp==15){
noteOn(0x90,45,63); /*Nota en el traste 5*/
delay(250);
}
else if (temp==16){
noteOn(0x90,46,63); /*Nota en el traste 6*/
delay(250);
}
else if (temp==17){
noteOn(0x90,47,63); /*Nota en el traste 7*/
delay(250);
}
else if (temp==18){
noteOn(0x90,48,63); /*Nota en el traste 8*/
delay(250);
}
else if (temp==19){
noteOn(0x90,49,63); /*Nota en el traste 9*/
delay(250);
}
else if (temp==20){
noteOn(0x90,50,63); /*Nota en el traste 10*/
delay(250);
}
else if (temp==21){
noteOn(0x90,51,63); /*Nota en el traste 11*/
delay(250);
}
else if (temp==22){
noteOn(0x90,52,63); /*Nota en el traste 2*/
delay(250);
}
}
else if (x2==1 && y2==1){ /*Notas de la cuerda 5 dependiendo del sonar*/
if (temp==11){
noteOn(0x90,46,63); /*Nota en el traste 1*/
delay(250);
}
else if (temp==12){
noteOn(0x90,47,63); /*Nota en el traste 2*/
delay(250);
}
else if (temp==13){
noteOn(0x90,48,63); /*Nota en el traste 3*/
delay(250);
}
else if (temp==14){
noteOn(0x90,49,63); /*Nota en el traste 4*/
delay(250);
}
else if (temp==15){
noteOn(0x90,50,63); /*Nota en el traste 5*/
delay(250);
}
else if (temp==16){
noteOn(0x90,51,63); /*Nota en el traste 6*/
delay(250);
}
else if (temp==17){
noteOn(0x90,52,63); /*Nota en el traste 7*/
delay(250);
}
else if (temp==18){
noteOn(0x90,53,63); /*Nota en el traste 8*/
delay(250);
}
else if (temp==19){
noteOn(0x90,54,63); /*Nota en el traste 9*/
delay(250);
}
else if (temp==20){
noteOn(0x90,55,63); /*Nota en el traste 10*/
delay(250);
}
else if (temp==21){
noteOn(0x90,56,63); /*Nota en el traste 11*/
delay(250);
}
else if (temp==22){
noteOn(0x90,57,63); /*Nota en el traste 12*/
delay(250);
}
}
else if (x3==1 && y3==1){ /*Notas de la cuerda 4 dependiendo del sonar*/
if (temp==11){
noteOn(0x90,51,63); /*Nota en el traste 1*/
delay(250);
}
else if (temp==12){
noteOn(0x90,52,63); /*Nota en el traste 2*/
delay(250);
}
else if (temp==13){
noteOn(0x90,53,63); /*Nota en el traste 3*/
delay(250);
}
else if (temp==14){
noteOn(0x90,54,63); /*Nota en el traste 4*/
delay(250);
}
else if (temp==15){
noteOn(0x90,55,63); /*Nota en el traste 5*/
delay(250);
}
else if (temp==16){
noteOn(0x90,56,63); /*Nota en el traste 6*/
delay(250);
}
else if (temp==17){
noteOn(0x90,57,63); /*Nota en el traste 7*/
delay(250);
}
else if (temp==18){
noteOn(0x90,58,63); /*Nota en el traste 8*/
delay(250);
}
else if (temp==19){
noteOn(0x90,59,63); /*Nota en el traste 9*/
delay(250);
}
else if (temp==20){
noteOn(0x90,60,63); /*Nota en el traste 10*/
delay(250);
}
else if (temp==21){
noteOn(0x90,61,63); /*Nota en el traste 11*/
delay(250);
}
else if (temp==22){
noteOn(0x90,62,63); /*Nota en el traste 12*/
delay(250);
}
}
else if (x4==1 && y4==1){ /*Notas de la cuerda 3 dependiendo del sonar*/
if (temp==11){
noteOn(0x90,56,63); /*Nota en el traste 1*/
delay(250);
}
else if (temp==12){
noteOn(0x90,57,63); /*Nota en el traste 2*/
delay(250);
}
else if (temp==13){
noteOn(0x90,58,63); /*Nota en el traste 3*/
delay(250);
}
else if (temp==14){
noteOn(0x90,59,63); /*Nota en el traste 4*/
delay(250);
}
else if (temp==15){
noteOn(0x90,60,63); /*Nota en el traste 5*/
delay(250);
}
else if (temp==16){
noteOn(0x90,61,63); /*Nota en el traste 6*/
delay(250);
}
else if (temp==17){
noteOn(0x90,62,63); /*Nota en el traste 7*/
delay(250);
}
else if (temp==18){
noteOn(0x90,63,63); /*Nota en el traste 8*/
delay(250);
}
else if (temp==19){
noteOn(0x90,64,63); /*Nota en el traste 9*/
delay(250);
}
else if (temp==20){
noteOn(0x90,65,63); /*Nota en el traste 10*/
delay(250);
}
else if (temp==21){
noteOn(0x90,66,63); /*Nota en el traste 11*/
delay(250);
}
else if (temp==22){
noteOn(0x90,67,63); /*Nota en el traste 12*/
delay(250);
}
}
else if (x5==1 && y5==1){ /*Notas de la cuerda 2 dependiendo del sonar*/
if (temp==11){
noteOn(0x90,60,63); /*Nota en el traste 1*/
delay(250);
}
else if (temp==12){
noteOn(0x90,61,63); /*Nota en el traste 2*/
delay(250);
}
else if (temp==13){
noteOn(0x90,62,63); /*Nota en el traste 3*/
delay(250);
}
else if (temp==14){
noteOn(0x90,63,63); /*Nota en el traste 4*/
delay(250);
}
else if (temp==15){
noteOn(0x90,64,63); /*Nota en el traste 5*/
delay(250);
}
else if (temp==16){
noteOn(0x90,65,63); /*Nota en el traste 6*/
delay(250);
}
else if (temp==17){
noteOn(0x90,66,63); /*Nota en el traste 7*/
delay(250);
}
else if (temp==18){
noteOn(0x90,67,63); /*Nota en el traste 8*/
delay(250);
}
else if (temp==19){
noteOn(0x90,68,63); /*Nota en el traste 9*/
delay(250);
}
else if (temp==20){
noteOn(0x90,69,63); /*Nota en el traste 10*/
delay(250);
}
else if (temp==21){
noteOn(0x90,70,63); /*Nota en el traste 11*/
delay(250);
}
else if (temp==22){
noteOn(0x90,71,63); /*Nota en el traste 12*/
delay(250);
}
}
}
else
delay (100);
/*Si el rando es mayor al maximo que demos en el sonar entonces permitira entrar a la funcion de tocas la cuerda al aire*/
if (temp>=24){ /*Te dara la nota de la cuerda cuando la tocas sin poner la mano en ningun traste*/
retardo++;
if(retardo>65000){
digitalWrite(z, LOW); /* Apagar el laser*/
retardo=0;
}
/*leyendo cuerda fisica*/
y1=digitalRead(5);
y2=digitalRead(6);
y3=digitalRead(7);
y4=digitalRead(8);
y5=digitalRead(9);
if (y1==1){ /*cuerda 6*/
noteOn(0x90,40,63);
delay(250);
}
else if (y2==1){ /*cuerda 5*/
noteOn(0x90,45,63);
delay(250);
}
else if (y3==1){
noteOn(0x90,50,63); /*cuerda 4*/
delay(250);
}
else if (y4==1){
noteOn(0x90,55,63); /*cuerda 3*/
delay(250);
}
else if (y5==1){
noteOn(0x90,59,63); /*cuerda 2*/
delay(250);
}
else
delay (100);
}
} /*final del void loop*/
/*Es el promediador del sonar*/
int sonar(void){ /*Promedio del sonar*/
int s0=0;
s0=s0+analogRead(0);
s0=s0+analogRead(0);
s0=s0+analogRead(0);
s0=s0+analogRead(0);
s0=s0+analogRead(0);
s0=s0+analogRead(0);
s0=s0+analogRead(0);
s0=s0+analogRead(0);
s0=s0+analogRead(0);
s0=s0+analogRead(0);
s0=s0/10;
// Serial.println(s0, DEC);
return s0;
}
/*Codigo para hacer sonar las notas que toquemos*/
void noteOn(char cmd, char data1, char data2)
{
Serial.print(cmd,BYTE);
Serial.print(data1,BYTE);
Serial.print(data2,BYTE);
}
Ya que solo estamos usando 5 lasers nuestras variables de entrada son 5, pero para quien quiera poner 6 lasers solo tiene que aumentar una variable mas para la fotoresistencia y para la cuerda fisica. Otra parte importante de este programa es que decidimos no encender los lasers intermitentemente pues el relevador hacia mucho ruido y no era lo suficientemente rapido para que fuera imperceptible, por eso decidimos mejor programar que los laser se encendieran cuando el sonar detectara la mano en el brazo y si no detecta nada en 7 segundos los lasers se apagaran.
/*x es para las fotoresistencias*/
int x1=0;
int x2=1;
int x3=2;
int x4=3;
int x5=4;
/*y es para las cuerdas fisicas*/
int y1=5;
int y2=6;
int y3=7;
int y4=8;
int y5=9;
/*z es para encender y apagar lasers*/
int z=10;
/*s es para el sonar*/
int s=0;
int temp=0;
unsigned int retardo=0;
void setup() {
Serial.begin(115200);
pinMode (x1,INPUT);
pinMode (x2,INPUT);
pinMode (x3,INPUT);
pinMode (x4,INPUT);
pinMode (x5,INPUT);
pinMode (y1,INPUT);
pinMode (y2,INPUT);
pinMode (y3,INPUT);
pinMode (y4,INPUT);
pinMode (y5,INPUT);
pinMode (z,OUTPUT);
}
void loop() {
/*La variable temp va a llamar a la funcion sonar*/
temp=sonar();
/*Si el sonar da los datos que estan en el rango hace todo lo que esta adentro*/
if (temp<24 && temp>10){ /*revisar cuerda y sonar*/
/*Es para encender y apagar lasers*/
digitalWrite(z, HIGH); retardo=0;
//delay(500);
//digitalWrite(z, LOW);
//delay(500);
/*leyendo fotoresistencia*/
x1=digitalRead(0);
x2=digitalRead(1);
x3=digitalRead(2);
x4=digitalRead(3);
x5=digitalRead(4);
/*leyendo cuerda fisica*/
y1=digitalRead(5);
y2=digitalRead(6);
y3=digitalRead(7);
y4=digitalRead(8);
y5=digitalRead(9);
/*Hacer un and de la fotoresistencia con la cuerda fisica para saber cual es la cuerda que estas tocando*/
if (x1==1 && y1==1){ /*Notas de la cuerda 6 dependiendo del sonar*/
if (temp==11){
noteOn(0x90,41,63); /*Nota en el traste 1*/
delay(250);
}
else if (temp==12){
noteOn(0x90,42,63); /*Nota en el traste 2*/
delay(250);
}
else if (temp==13){
noteOn(0x90,43,63); /*Nota en el traste 3*/
delay(250);
}
else if (temp==14){
noteOn(0x90,44,63); /*Nota en el traste 4*/
delay(250);
}
else if (temp==15){
noteOn(0x90,45,63); /*Nota en el traste 5*/
delay(250);
}
else if (temp==16){
noteOn(0x90,46,63); /*Nota en el traste 6*/
delay(250);
}
else if (temp==17){
noteOn(0x90,47,63); /*Nota en el traste 7*/
delay(250);
}
else if (temp==18){
noteOn(0x90,48,63); /*Nota en el traste 8*/
delay(250);
}
else if (temp==19){
noteOn(0x90,49,63); /*Nota en el traste 9*/
delay(250);
}
else if (temp==20){
noteOn(0x90,50,63); /*Nota en el traste 10*/
delay(250);
}
else if (temp==21){
noteOn(0x90,51,63); /*Nota en el traste 11*/
delay(250);
}
else if (temp==22){
noteOn(0x90,52,63); /*Nota en el traste 2*/
delay(250);
}
}
else if (x2==1 && y2==1){ /*Notas de la cuerda 5 dependiendo del sonar*/
if (temp==11){
noteOn(0x90,46,63); /*Nota en el traste 1*/
delay(250);
}
else if (temp==12){
noteOn(0x90,47,63); /*Nota en el traste 2*/
delay(250);
}
else if (temp==13){
noteOn(0x90,48,63); /*Nota en el traste 3*/
delay(250);
}
else if (temp==14){
noteOn(0x90,49,63); /*Nota en el traste 4*/
delay(250);
}
else if (temp==15){
noteOn(0x90,50,63); /*Nota en el traste 5*/
delay(250);
}
else if (temp==16){
noteOn(0x90,51,63); /*Nota en el traste 6*/
delay(250);
}
else if (temp==17){
noteOn(0x90,52,63); /*Nota en el traste 7*/
delay(250);
}
else if (temp==18){
noteOn(0x90,53,63); /*Nota en el traste 8*/
delay(250);
}
else if (temp==19){
noteOn(0x90,54,63); /*Nota en el traste 9*/
delay(250);
}
else if (temp==20){
noteOn(0x90,55,63); /*Nota en el traste 10*/
delay(250);
}
else if (temp==21){
noteOn(0x90,56,63); /*Nota en el traste 11*/
delay(250);
}
else if (temp==22){
noteOn(0x90,57,63); /*Nota en el traste 12*/
delay(250);
}
}
else if (x3==1 && y3==1){ /*Notas de la cuerda 4 dependiendo del sonar*/
if (temp==11){
noteOn(0x90,51,63); /*Nota en el traste 1*/
delay(250);
}
else if (temp==12){
noteOn(0x90,52,63); /*Nota en el traste 2*/
delay(250);
}
else if (temp==13){
noteOn(0x90,53,63); /*Nota en el traste 3*/
delay(250);
}
else if (temp==14){
noteOn(0x90,54,63); /*Nota en el traste 4*/
delay(250);
}
else if (temp==15){
noteOn(0x90,55,63); /*Nota en el traste 5*/
delay(250);
}
else if (temp==16){
noteOn(0x90,56,63); /*Nota en el traste 6*/
delay(250);
}
else if (temp==17){
noteOn(0x90,57,63); /*Nota en el traste 7*/
delay(250);
}
else if (temp==18){
noteOn(0x90,58,63); /*Nota en el traste 8*/
delay(250);
}
else if (temp==19){
noteOn(0x90,59,63); /*Nota en el traste 9*/
delay(250);
}
else if (temp==20){
noteOn(0x90,60,63); /*Nota en el traste 10*/
delay(250);
}
else if (temp==21){
noteOn(0x90,61,63); /*Nota en el traste 11*/
delay(250);
}
else if (temp==22){
noteOn(0x90,62,63); /*Nota en el traste 12*/
delay(250);
}
}
else if (x4==1 && y4==1){ /*Notas de la cuerda 3 dependiendo del sonar*/
if (temp==11){
noteOn(0x90,56,63); /*Nota en el traste 1*/
delay(250);
}
else if (temp==12){
noteOn(0x90,57,63); /*Nota en el traste 2*/
delay(250);
}
else if (temp==13){
noteOn(0x90,58,63); /*Nota en el traste 3*/
delay(250);
}
else if (temp==14){
noteOn(0x90,59,63); /*Nota en el traste 4*/
delay(250);
}
else if (temp==15){
noteOn(0x90,60,63); /*Nota en el traste 5*/
delay(250);
}
else if (temp==16){
noteOn(0x90,61,63); /*Nota en el traste 6*/
delay(250);
}
else if (temp==17){
noteOn(0x90,62,63); /*Nota en el traste 7*/
delay(250);
}
else if (temp==18){
noteOn(0x90,63,63); /*Nota en el traste 8*/
delay(250);
}
else if (temp==19){
noteOn(0x90,64,63); /*Nota en el traste 9*/
delay(250);
}
else if (temp==20){
noteOn(0x90,65,63); /*Nota en el traste 10*/
delay(250);
}
else if (temp==21){
noteOn(0x90,66,63); /*Nota en el traste 11*/
delay(250);
}
else if (temp==22){
noteOn(0x90,67,63); /*Nota en el traste 12*/
delay(250);
}
}
else if (x5==1 && y5==1){ /*Notas de la cuerda 2 dependiendo del sonar*/
if (temp==11){
noteOn(0x90,60,63); /*Nota en el traste 1*/
delay(250);
}
else if (temp==12){
noteOn(0x90,61,63); /*Nota en el traste 2*/
delay(250);
}
else if (temp==13){
noteOn(0x90,62,63); /*Nota en el traste 3*/
delay(250);
}
else if (temp==14){
noteOn(0x90,63,63); /*Nota en el traste 4*/
delay(250);
}
else if (temp==15){
noteOn(0x90,64,63); /*Nota en el traste 5*/
delay(250);
}
else if (temp==16){
noteOn(0x90,65,63); /*Nota en el traste 6*/
delay(250);
}
else if (temp==17){
noteOn(0x90,66,63); /*Nota en el traste 7*/
delay(250);
}
else if (temp==18){
noteOn(0x90,67,63); /*Nota en el traste 8*/
delay(250);
}
else if (temp==19){
noteOn(0x90,68,63); /*Nota en el traste 9*/
delay(250);
}
else if (temp==20){
noteOn(0x90,69,63); /*Nota en el traste 10*/
delay(250);
}
else if (temp==21){
noteOn(0x90,70,63); /*Nota en el traste 11*/
delay(250);
}
else if (temp==22){
noteOn(0x90,71,63); /*Nota en el traste 12*/
delay(250);
}
}
}
else
delay (100);
/*Si el rando es mayor al maximo que demos en el sonar entonces permitira entrar a la funcion de tocas la cuerda al aire*/
if (temp>=24){ /*Te dara la nota de la cuerda cuando la tocas sin poner la mano en ningun traste*/
retardo++;
if(retardo>65000){
digitalWrite(z, LOW); /* Apagar el laser*/
retardo=0;
}
/*leyendo cuerda fisica*/
y1=digitalRead(5);
y2=digitalRead(6);
y3=digitalRead(7);
y4=digitalRead(8);
y5=digitalRead(9);
if (y1==1){ /*cuerda 6*/
noteOn(0x90,40,63);
delay(250);
}
else if (y2==1){ /*cuerda 5*/
noteOn(0x90,45,63);
delay(250);
}
else if (y3==1){
noteOn(0x90,50,63); /*cuerda 4*/
delay(250);
}
else if (y4==1){
noteOn(0x90,55,63); /*cuerda 3*/
delay(250);
}
else if (y5==1){
noteOn(0x90,59,63); /*cuerda 2*/
delay(250);
}
else
delay (100);
}
} /*final del void loop*/
/*Es el promediador del sonar*/
int sonar(void){ /*Promedio del sonar*/
int s0=0;
s0=s0+analogRead(0);
s0=s0+analogRead(0);
s0=s0+analogRead(0);
s0=s0+analogRead(0);
s0=s0+analogRead(0);
s0=s0+analogRead(0);
s0=s0+analogRead(0);
s0=s0+analogRead(0);
s0=s0+analogRead(0);
s0=s0+analogRead(0);
s0=s0/10;
// Serial.println(s0, DEC);
return s0;
}
/*Codigo para hacer sonar las notas que toquemos*/
void noteOn(char cmd, char data1, char data2)
{
Serial.print(cmd,BYTE);
Serial.print(data1,BYTE);
Serial.print(data2,BYTE);
}
Ya que solo estamos usando 5 lasers nuestras variables de entrada son 5, pero para quien quiera poner 6 lasers solo tiene que aumentar una variable mas para la fotoresistencia y para la cuerda fisica. Otra parte importante de este programa es que decidimos no encender los lasers intermitentemente pues el relevador hacia mucho ruido y no era lo suficientemente rapido para que fuera imperceptible, por eso decidimos mejor programar que los laser se encendieran cuando el sonar detectara la mano en el brazo y si no detecta nada en 7 segundos los lasers se apagaran.
Ultimos detalles en la guitarra
Finalmente ya tenemos todo lo necesario para hacer que nuestra guitarra sea funcional. Entonces es momento de poner todo sobre la estructura de la guitarra que conseguimos. En la foto se ve como es que pusimos todo en nuestra guitarra:
Como se puede observar en la guitarra solo tenemos 5 lasers, eso es porque como en todo proyecto los componentes mas caros son los que se descomponen, entonces ya que no teniamos suficiente tiempo (y dinero) para comprar otro laser decidimos que lo hariamos con 5 cuerdas teniendo en cuenta que la cuerda que no se podra tocar es la primera.
Ya teniendo todo ensamblado y acomodado para que toque perfectamente solo queda un paso mas, hacer nuestro programa.
Como se puede observar en la guitarra solo tenemos 5 lasers, eso es porque como en todo proyecto los componentes mas caros son los que se descomponen, entonces ya que no teniamos suficiente tiempo (y dinero) para comprar otro laser decidimos que lo hariamos con 5 cuerdas teniendo en cuenta que la cuerda que no se podra tocar es la primera.
Ya teniendo todo ensamblado y acomodado para que toque perfectamente solo queda un paso mas, hacer nuestro programa.
miércoles, 1 de diciembre de 2010
Circuito para encender los lasers
Como mencionamos en la entrada anterior, necesitabamos hacer un circuito con el cual nuestros lasers prendieran y apagaran a una gran velocidad para evitar calentarse demasiado. De esta manera decidimos utilizar el circuito con el uln2803 y un relevador; al revisar el funcionamiento del integrado diseñamos el siguiente circuito que permite hacer lo que deseabamos:
En nuestro circuito se pueden observar unicamente 5 lasers, esto debido a que uno de los lasers que teniamos tuvo un problema y no funciono muy bien por lo cual decidimos seguir con el proyecto pero unicamente con 5. Ya que habiamos calculado que para 6 lasers se necesitaban 1.8A para prender, ahora que son 5 solo seran necesario 1.5A para que funcionen correctamente.
Como se puede observar solo utilzamos 4 pines del integrado que son: tierra, voltaje, la entrada 1 y salida 1. La salida va conectada a un relevador que recibe en su patita central 3V y 1.5A y en normalmente abierto unos 5V; de esta manera al momento de cerrar el switch en el relevador manda los 3V y 1.5A a los lasers.
En nuestro circuito se pueden observar unicamente 5 lasers, esto debido a que uno de los lasers que teniamos tuvo un problema y no funciono muy bien por lo cual decidimos seguir con el proyecto pero unicamente con 5. Ya que habiamos calculado que para 6 lasers se necesitaban 1.8A para prender, ahora que son 5 solo seran necesario 1.5A para que funcionen correctamente.
Como se puede observar solo utilzamos 4 pines del integrado que son: tierra, voltaje, la entrada 1 y salida 1. La salida va conectada a un relevador que recibe en su patita central 3V y 1.5A y en normalmente abierto unos 5V; de esta manera al momento de cerrar el switch en el relevador manda los 3V y 1.5A a los lasers.
martes, 30 de noviembre de 2010
Encendido de los lasers
Los laser que utilizamos pueden encender con 3V y 300mA cada uno, por lo que para encenderlos juntos se necesitan 3V y cerca de 1.8A. Sin embargo al estar mucho tiempo prendidos comenzaban a calentarse y esto era un problema pues podrian llegar a descomponerse, por lo que decidimos que lo mejor era lograr que los leds encendieran y apagaran a una velocidad imperceptible para el ojo humano y de esta manera evitariamos que se calentaran tanto.
Ademas utilizamos un circuito especial con el que utilizamos un relevador para poder prenderlos, pues el arduino no logra mandar esa cantidad de amperes por lo cual con el relevador es mucho mas sencillo. Tambien utilizamos el integrado ULN2803, esto debido a que con el fuimos capaces de prender el relevador de una manera sencilla.
Dentro del ULN2803 se encuentran 8 transistores NPN Darlington. Es un circuito integrado ideal para ser empleado como interfaz entre las salidas de un PIC o cualquier integrante de las familias TTL o CMOS y dispositivos que necesiten una corriente más elevada para funcionar, como por ejemplo, un rele. Todas sus salidas son a colector abierto y se dispone de un diodo para evitar las corrientes inversas. El modelo ULN2803 esta especialmente diseñado para ser compatible con entradas TTL.
Ademas utilizamos un circuito especial con el que utilizamos un relevador para poder prenderlos, pues el arduino no logra mandar esa cantidad de amperes por lo cual con el relevador es mucho mas sencillo. Tambien utilizamos el integrado ULN2803, esto debido a que con el fuimos capaces de prender el relevador de una manera sencilla.
Dentro del ULN2803 se encuentran 8 transistores NPN Darlington. Es un circuito integrado ideal para ser empleado como interfaz entre las salidas de un PIC o cualquier integrante de las familias TTL o CMOS y dispositivos que necesiten una corriente más elevada para funcionar, como por ejemplo, un rele. Todas sus salidas son a colector abierto y se dispone de un diodo para evitar las corrientes inversas. El modelo ULN2803 esta especialmente diseñado para ser compatible con entradas TTL.
Circuito electrico de las fotoresistencias
El circuito que utilizamos para nuestras fotoresistencias es un divisor de voltaje muy basico. En la siguiente imagen se ve el circuito que decidimos utilzar:
Como se puede ver estamos utilzando unicamente la fotoresistencia que tenemos (2M) y una resistencia comercial (1k), el voltaje al que esta conectada la resistencia es de 5V.
Este divisor manda al pin del Arduino un voltaje de 5V cuando a la fotoresistencia no le llega el laser y menor a 2V cuando si tiene el rayo del laser sobre ella con lo cual el Arduino no alcanza a leer ese pin.
Como se puede ver estamos utilzando unicamente la fotoresistencia que tenemos (2M) y una resistencia comercial (1k), el voltaje al que esta conectada la resistencia es de 5V.
Este divisor manda al pin del Arduino un voltaje de 5V cuando a la fotoresistencia no le llega el laser y menor a 2V cuando si tiene el rayo del laser sobre ella con lo cual el Arduino no alcanza a leer ese pin.
Instalación del programa de Arduino
Para poder instalar el programa que utilizamos para el Arduino utilizamos la siguiente pagina:
http://todoarduino.blogspot.com/
En esa pagina viene no solo la manera de instalar el programa para el Arduino, pues tambien viene un pequeño resumen sobre como utilizar el midi en el arduino. En esta pagina viene de manera muy detallada como hacer la instalacion de los programas que utilizamos.
http://todoarduino.blogspot.com/
En esa pagina viene no solo la manera de instalar el programa para el Arduino, pues tambien viene un pequeño resumen sobre como utilizar el midi en el arduino. En esta pagina viene de manera muy detallada como hacer la instalacion de los programas que utilizamos.
sábado, 27 de noviembre de 2010
¿Como se escucharan las notas que toque?
Algo muy importante para este proyecto es la manera en como vamos a conseguir el sonido que deseamos despues de tocar alguna nota en la guitarra. El sonido que manda nuestro Arduino a la computadora es de tipo midi, por lo cual se necesita un programa con el cual se pueda leer un archivo midi y ademas que se escuche bien. Este problema se resuelve muy facilment, primeramente se tiene que bajar el programa Guitar Pro (al parecer su version mas reciente es la 5), este programa es un editor de partituras fundamentalmente de guitarra, aunque admite todos los instrumentos soportados por el formato midi.
La forma en como se puede escuchar el sonido con el Guitar Pro, es configurandolo de la siguiente manera.
La forma en como se puede escuchar el sonido con el Guitar Pro, es configurandolo de la siguiente manera.
- En el menu de Opciones se da clic en donde dice Ajustes de Audio (MIDI/RSE).
- En el cuadro de dialogo que aparece se debe modificar el submenu que se llama Captura de MIDI (Nota a Nota). En donde dice dispositivo debe estar en In From MIDI Yoke: 1
- Tambien se debe poner la frecuencia primordialmente en 32000.
¿Cómo funcionara la guitarra?
La manera en como va a funcionar nuestra guitarra con lasers es de manera muy sencilla. Se montasran un total de 6 lasers en la parte donde se encuentra la maquinaria de la guitarra, los cuales estaran dirigidos hacia 6 fotoresistencias ubicadas en la parte final del brazo. Cuando sea de noche y si los lasers son de buena calidad se podra ver perfectamente el haz de luz como si fueran las cuerdas de la guitarra.
Ademas de tener 6 lasers en forma de cuerda, la manera en como se realizara el rasgueo es mediante un juego de 6 cables gruesos que se encuentran en la caja de la guitarra, entre la boca y el puente. Estos cables tambien simularan las cuerdas de nuestra guitarra. Cuando interrumpas el haz de lus de un laser y toques el cable que corresponderia a esa cuerda mandara una señal al Arduino con lo cual el microcontrolador sabra cual es la cuerda que estas tocando.
¿Pero como sabra la nota que estoy tocando?
Es en esta parte en donde aparece nuestro sonar, ya que permitira darnos la posicion de nuestra mano en el brazo de la guitarra. De esta manera al conocer la cuerda que estamos tocando y la posicion que tiene conoceremos cual es la nota que debera reconocer nuestro Arduino
Ademas de tener 6 lasers en forma de cuerda, la manera en como se realizara el rasgueo es mediante un juego de 6 cables gruesos que se encuentran en la caja de la guitarra, entre la boca y el puente. Estos cables tambien simularan las cuerdas de nuestra guitarra. Cuando interrumpas el haz de lus de un laser y toques el cable que corresponderia a esa cuerda mandara una señal al Arduino con lo cual el microcontrolador sabra cual es la cuerda que estas tocando.
¿Pero como sabra la nota que estoy tocando?
Es en esta parte en donde aparece nuestro sonar, ya que permitira darnos la posicion de nuestra mano en el brazo de la guitarra. De esta manera al conocer la cuerda que estamos tocando y la posicion que tiene conoceremos cual es la nota que debera reconocer nuestro Arduino
Sonar
Sonar o sensor ultrasónico
Un sonar no es mas que un sensor ultrasónico de proximidad el cual funciona midiendo la distancia empleando un transductor que emite “paquetes” de ultrasonido que contienen una serie de ondas sonoras intermitentes. El paquete se emite en forma cónica, se rebota o refleja en la superficie del objetivo y se recibe de regreso en un transductor. El tiempo requerido por el sonido para ir y volver se mide y se convierte a unidades de distancia.
Varios factores afectan la medición con ultrasonido: la naturaleza de la superficie, el ángulo del cono y la distancia del sensor al objetivo. La condiciones ambientales como son temperatura, humedad relativa, gases, vapores y la presión también afectan.
Algunas consideracion que se deben realizar para un correcto funcionamiento de un sensor ultrasonico son:
Varios factores afectan la medición con ultrasonido: la naturaleza de la superficie, el ángulo del cono y la distancia del sensor al objetivo. La condiciones ambientales como son temperatura, humedad relativa, gases, vapores y la presión también afectan.
Algunas consideracion que se deben realizar para un correcto funcionamiento de un sensor ultrasonico son:
- La superficie del objeto debe ser dura y lisa. De esta manera reflejara una mayor cantidad de señal que una superficie suave y rugosa. SI se tiene un “eco” debil se reduce la distancia de operacion del sensor y disminuye su exactitud.
- La distancia del objeto debe ser corta para que el eco sea mas fuerte. Pues si la distancia es muy grande el objetio necesita tener mejores caracteristicas reflejantes.
- Un objeto grande puede rebotar la señal en una mayor superficie que un objeto pequeño.
- La inclinacion que tenga el objeto afectara la reflectividad del mismo. Si una supeficie es perpendicular al sensor, esta sera capaz de rebotar mucho mejor el eco.
Fotoresistencias
Fotoresistencia
Una fotorresistencia es una resistencia que depende de la cantidad de luz que recibe, este dispositivo electrónico puede variar su resistencia, ya que disminuye con el aumento de intensidad de luz incidente sobre él, esta resistencia puede descender hasta 50 ohms, de igual modo su resistencia es muy alta cuando esta a oscuras, estos componentes se fabrican generalmente con sulfuro de cadmio, el cual es material semiconductor.
El modo de funcionamiento de estos dispositivos radica en que si la luz que incide en el dispositivo es de alta frecuencia, los fotones son absorbidos dando a los electrones la suficiente energía para saltar la banda de conducción. Debido a este salto, un electrón quedara libre, y esto a su vez, generara un hueco, este hueco puede conducir la electricidad, por lo que la resistencia disminuye.
Estos dispositivos pueden reaccionar a diferentes frecuencias, como son la luz infrarroja, la luz visible, la luz ultravioleta y la luz emitida por un laser.Laser
Laser
Un láser es un dispositivo capas de producir un tipo muy especial de luz, no obstante, la luz que genera un láser, es diferente a la luz de una linterna, en primer lugar, por que la luz de un láser es intensa, dicha intensidad puede ser igual a la de la luz del sol en los dispositivos mas potentes.
En segundo lugar, por que la luz laser posee direccionalidad, o sea que el haz de luz láser es estrecho, y no se dispersan como los demás haces de luz como las lámparas, además todas las ondas luminosas procedentes de un láser se acoplan ordenadamente entre sí, y finalmente, la luz que emite un laser es monocromática.
Los láseres están confomados por un medio activo que puede producir el láser. Existen cuatro procesos principales que se producen en el momento de la generación del láser: bombeo, emisión espontánea de radiación, emisión estimulada de radiación y absorción.
Arduino
Arduino
Es una plataforma de hardware libre basada en una sencilla placa de entradas y salidas simple y un entorno de desarrollo que implementa el lenguaje de programación Processing/Wiring. Arduino se puede utilizar para desarrollar objetos interactivos autónomos o puede ser conectado a software del ordenador (por ejemplo: Macromedia Flash, Processing, Max/MSP, Pure Data). Las placas se pueden montar a mano o adquirirse. El entorno de desarrollo integrado libre se puede descargar gratuitamente.
Las plataformas Arduino están basadas en los microcontroladores Atmega168, Atmega328, Atmega1280, ATmega8 y otros similares, chips sencillos y de bajo coste que permiten el desarrollo de múltiples diseños.
Al ser open-hardware, tanto su diseño como su distribución es libre. Es decir, puede utilizarse libremente para el desarrollo de cualquier tipo de proyecto sin haber adquirido ninguna licencia.
Materiales
Los materiales que utilizaremos para realizar este proyecto son los siguientes:
- Una estructura donde se instalen todos los circuitos (nosotros usaremos una vieja guitarra)
- Un Arduino Duemilanove (dispositivo que utiliza un microcontrolador ATMEGA328)
- Lasers (preferentemente verdes, para que se vea el haz de luz)
- Fotoresistencia
- Sonar o sensor ultrasonico (usaremos el EZ0)
- Resistencias comerciales (100k y 1k)
- Placas perforadas para poner los circuitos
- Cable A-B (como el de una impresora)
martes, 7 de septiembre de 2010
Electronic Laser Guitar
Este blog te mostrara como se realizara la construcción de una guitarra laser, es decir, en vez de utilizar cuerdas normales se tendran hazes de luz de 6 lasers distintos y mediante un cicuito electronico conectado a una computadora te permitira tocar la guitarra como si fuera real.
Suscribirse a:
Entradas (Atom)