XILÓFONO UTILIZANDO EL PROGRAMA PROCESSING CON COMUNICACIÓN SERIAL CON EL ARDUINO.
objetivo de este proyecto es mostrar lo sencillo que
es con el uso del processing para su comunicación serial con el arduino, en este caso se tiene la programación de un xilófono de ocho nota, con este programa el cual brinda mayor comodidad por sus librerías para el
manejo de los que en particularmente queremos, el trabajo se en foco en dos
librerías la cual solo una utilizamos para la comunicación serial con el
arduino, el cual para la configuración o mas bien para obtener la
comunicación con el processing se necesito una librería que denominada Firmata.
entonces hablaremos del programa que utilice con la librería Maxin y el cual tuvo una buena comunicación serial, aclaro esto no quiere decir que el otro programa con el minin no tiene buena comunicación serial
sino que los resultados eran no muy buenos el cual l debe ser por mala
configuración. Ya para lo que tiene que ver en la parte física utilizamos un
arduino mega el cual nos brinda una variedad de pines tanto analógicos,
digitales, Tx, Rx etc, en nuestro caso utilizamos ocho de los pines digitales las cuales me activaran cada uno de los tono del xilófono como se dijo son ocho tonos DO-RE-MI-FA-SOL-LA-SI-DO* y por consiguiente usamos ocho pines digitales del arduino.
A continuación se describirá el funcionamiento para el
xilófono y la parte de la programación
que requirió.
Este proyecto es muy sencillo, ya que el código del programa
no muestra complejidad y no es muy extenso, pero por causas de comunicación
serial se genero dos códigos como se resalto anteriormente pero
en este caso nos centraremos en el que si tuvo una buena comunicación
serial, más adelante hablaremos de por qué no se usó el otro código, entonces para este
código utilizamos la librería del processing llamada Maxim el cual su naturalidad
es de reproducir audio, por consiguiente los sonidos del programa se debieron truncar o se puede decir detener después de accionar el pin que se le hacinaba a este, al programa se le configuraron ocho pines de entradas para el accionar de
cada sonido como se ve a continuación:
//comunicacion serial arduino processing
import processing.serial.*;
import cc.arduino.*;
Arduino arduino;
// declarar los pines como estrada
int Pin2= 2;
Maxim maxim;
AudioPlayer player2;
// declarar la constante T la cual es la imagen
PImage T;
void setup()
{
//configuracio de los pines como entrada en el arduino
println(Arduino.list());
arduino = new Arduino(this, Arduino.list()[0], 57600);
arduino.pinMode (Pin2, Arduino.INPUT);
T=loadImage("xilojugo.jpg");// imagen
size(T.width,T.height);// de la pantalla ajustada a la imagen utilizada
image(T,0,0);// configuracion de imagen
maxim= new Maxim(this);
player2= maxim.loadFile("1xilofono.WAV");
player2.setLooping(true);
}
void draw() {
//cnfiguracion de la imagen con sus coordenadas
background(T);
println( pmouseX);
println( pmouseY);
// activar el pin del arduino para activar elsonido
if (arduino.digitalRead(Pin2)==Arduino.HIGH){
fill(255,0,0);// color de el rectangulo
rect(13,6,37,247);// sombreo de el rectangulo que se va activar
player2.play(); }
//si no es activado el pin del sonido
// se tiene que detener el sonido con un stop
// por la libreria Maxim que su naturalidad es de ser reproductor
// estos pasos tambie para los siguientes 7 tonos que siguen
else{
player2.stop();}
Maxim maxim;
AudioPlayer player2;
// declarar la constante T la cual es la imagen
PImage T;
void setup()
{
//configuracio de los pines como entrada en el arduino
println(Arduino.list());
arduino = new Arduino(this, Arduino.list()[0], 57600);
arduino.pinMode (Pin2, Arduino.INPUT);
T=loadImage("xilojugo.jpg");// imagen
size(T.width,T.height);// de la pantalla ajustada a la imagen utilizada
image(T,0,0);// configuracion de imagen
maxim= new Maxim(this);
player2= maxim.loadFile("1xilofono.WAV");
player2.setLooping(true);
}
void draw() {
//cnfiguracion de la imagen con sus coordenadas
background(T);
println( pmouseX);
println( pmouseY);
// activar el pin del arduino para activar elsonido
if (arduino.digitalRead(Pin2)==Arduino.HIGH){
fill(255,0,0);// color de el rectangulo
rect(13,6,37,247);// sombreo de el rectangulo que se va activar
player2.play(); }
//si no es activado el pin del sonido
// se tiene que detener el sonido con un stop
// por la libreria Maxim que su naturalidad es de ser reproductor
// estos pasos tambie para los siguientes 7 tonos que siguen
else{
player2.stop();}
}
vemos que este código es para la activación de un solo pin consecuente a un solo tono.
una imagen relacionado a lo que se tiene es el
siguiente:
las conexiones con el arduino:
una esquema mas coloquial es:
Con el xilófono como como los pulsadores el arduino como el que hace el trabajo
de la comunicación serial y pc donde se
manejan todos los que lleva de software del proyecto. Ahora hablaremos del otro programa el cual su funcionamiento se
basaba en la librería Minim que Utiliza JavaSound para proporcionar una biblioteca que es fácil de usar audio y sin dejar de ofrecer flexibilidad a los
usuarios.
También se puede decir que al programa le implementamos con las coordenadas que nos brindaba el mouse la delimitacion el lugar de la imagen donde queríamos tener el tono mas adelante veremos un código para un solo pin del xilófono de con el voimousePressed() y también cambiar el color del lugar pulsado esto sirve para ver bien la función que
queremos que era controlar con el mouse los tonos de xilófono, no solo se uso ese medio de control para el instrumento también como para ver los otra opción de funcionamiento
utilizamos el void keyPressed() para que ya no solo el mouse sea el que pueda manipular los tonos si no el teclado aquí el código para una sola nota :
:
PImage T;
import ddf.minim.*;//libreria audio
Minim minim;
AudioPlayer player1;// variables de sonidos
AudioInput input;
void setup()
{
T=loadImage("xilojugo.jpg");// imagen
size(T.width,T.height);// de la pantalla ajustada a la imagen utilizada
}
void draw(){
image(T,0,0);// configuracion de imagen
println("mouseX: " + mouseX + " mouseY: " + mouseY);}
void mousePressed(){
if(mouseX>14 && mouseX<47 && mouseY>9 && mouseY<252){// cordenadas para el mouse para el primer rectangulo
minim = new Minim(this);//configuracion audio
player1 = minim.loadFile("1xilofono.mp3");// sonido utilizada en la coordenada
player1.play();
fill(255,0,0);// color de el rectangulo
rect(13,6,37,247);// sombreo de el rectangulo
} }
void keyPressed(){
if(key== 'q'){
minim = new Minim(this);//configuracion audio
player1 = minim.loadFile("1xilofono.mp3");// sonido utilizado en
player1.play();
fill(255,0,0);// color del rectangulo
rect(13,6,37,247);// restangulo en cada tono de la imagen
}
}
Autor : Pablo Vides




No hay comentarios:
Publicar un comentario