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.
No hay comentarios:
Publicar un comentario