sábado, 14 de septiembre de 2013

Timables (arduino-processing)


Objetivo: Realizar una interfaz grafica que permita emular los timbales como instrumento muscial y conjuntamente se realize la comunicacion directa con arduino.

Inicialmente no se necesitan conocimientos previos del sofware processing ya que al transcurrir del desarrollo del proyecto y con un poco de investigación se lograran aclarar dudas ya que este sofware es libre y permite realizar aportes y correciones del mismo si se logra captar alguna, al ser gratuito da muchas ventajas porque permite tomar codigos ya realizados y utilizarlos para el desarrollo del proyecto a realizar, de manera ilutrastiva se muestran las interfaces graficas que manejan arduino y processing.




 El desarrollo del proyecto se baso principalmente en la comunicacion de arduino- processing ya que es el objetivo principal de la practica a continuación el codigo generado:

//comunicacion serial arduino processing
import processing.serial.*;  // se importa la libreria de processing para comunicacion serial
import cc.arduino.*;  // se importa la libreria de arduiono para processing
Arduino arduino;
int Pin1= 12; // se declaran variables para asignar los puertos del arduino
int Pin= 13;
//int Pin2= 11;
//int Pin3= 10;
//int Pin4= 9;
//final configuracion comunicacion serial
Maxim maxim; // se carga la libreria Maxim para reproducir audios
AudioPlayer player1; // se declaran las variables para asignar el audio requerido
AudioPlayer player;
AudioPlayer player2;
AudioPlayer player3;
AudioPlayer player4;
AudioPlayer player5;
AudioPlayer player6;
AudioPlayer player7;
AudioPlayer player8;

PImage Stivenson; // se carga la imagen por medio de la variable stivenson
int x;

void setup()
{
       println(Arduino.list()); // imprime la lista de los puertos com
       arduino = new Arduino(this, Arduino.list()[1], 57600); // se escoge la lista de los puertos com reconocidos por processing y la velicidad de transmisión
         arduino.pinMode (Pin, Arduino.INPUT); // se declaran los puertos del arduino como entrada
           arduino.pinMode (Pin1, Arduino.INPUT);
   //           arduino.pinMode (Pin2, Arduino.INPUT);
     //            arduino.pinMode (Pin3, Arduino.INPUT);
       //           arduino.pinMode (Pin4, Arduino.INPUT);
      
  size(800,600); // de cargan los pixeles de la pizarra preferiblemente los pixeles de la imagen
   Stivenson= loadImage("timbales.jpg");
     maxim= new Maxim(this);
     /// cargar sonidos altos de los timables
      player= maxim.loadFile("Timbale1.wav");
        player1= maxim.loadFile("Timbale2.wav");
          player2= maxim.loadFile("Timbale3.wav");
            player3= maxim.loadFile("Timbale4.wav");
               player4= maxim.loadFile("Timbale5.wav");
                 player5= maxim.loadFile("Timbale6.wav");
                   player6= maxim.loadFile("Timbale7.wav");       
                     player7= maxim.loadFile("Timbale8.wav");
                       player8= maxim.loadFile("Timbale9.wav");
      
        player.setLooping(true);
         player1.setLooping(true);
           player2.setLooping(true);
             player3.setLooping(true);
               player4.setLooping(true);
                 player5.setLooping(true);
                   player6.setLooping(true);
                      player7.setLooping(true);
                         player8.setLooping(true);   
                     
         }
void draw()   {
      background(Stivenson);
        println(  pmouseX);// imprime la posicion  en x del mouse si se llega a utilizar
          println( pmouseY);
           if (arduino.digitalRead(Pin)==Arduino.HIGH){// de esta manera se pregunta por el estado del pin del arduino y se realizan los condicionales necesarios.
             ellipse(160, 107, 75, 55);
         player8.play(); }
          else{
        player8.stop();}  
         
          if (arduino.digitalRead(Pin1)==Arduino.HIGH){
             ellipse(350, 107, 75, 55);
         player4.play(); }
          else{
        player4.stop();}
}  


nota: la libreria maxim solo recibe audios .wav, se bede cargar la libreria de arduino para processing ya que si no se realiza este paso generara errores al compilar el codigo.
 se puede concluir que la experiencia fue importante ya genero errores que fueron solucionados a tiempo como la libreria que generaba errores  al establecer la comunicacion con el arduino y los .wav que recibe la libreria maxim.

No hay comentarios:

Publicar un comentario