sábado, 31 de mayo de 2014

Proyecto Final

Descripción.


Para esta ocasion vamos a crear una batería electrónica por medio del arduino,Utilizando este ultimo como controlador MIDI. en este proyecto utilizaremos programas externos que servirán como controladores y instrumentos virtuales como lo son el superior drummer,el serial MIDI converter y el loopbe1.



Lista de elementos utilizados:

  • Un Arduino UNO
  • 6 Piezoelectricos 
  • 6 resistencias de 100 k ohms
  • 6 diodos de cilicio 
  • Cable (Conexiones)
  • Protoboard

Diagrama del Montaje en la Protoboard:




Diagrama Esquemático del Circuito:






Fotos del Montaje (paso a paso):

primero armamos la base de la batería con tubos pvc y organizamos cada uno de los elementos de la batería de forma que quede cómoda para poder tocar en ella.









Luego de esto agregamos los pads hechos de madera para simular una batería real



Una vez terminada esta parte,vamos a enfocarnos en la parte electrónica. primero conectamos las resistencias.


Luego los diodos.


 luego de esto pegamos los cables al piezoelectrico en cada uno de sus polos (negativo y positivo).


luego de esto perforamos cada uno de los pads de la batería así como en la foto.


una vez terminada esta parte pasamos un cable por medio del orificio que le hicimos a nuestro pad anterior mente.



luego le pegamos a otro pedazo de madera triplex el piezo electrico y lo juntamos con el pad así como se muestra en las siguientes imágenes.



Luego de esto instalamos el loopbe y configuramos nuestro arduino como controlador midi por medio de un programa llamado serial midi converter de la siguiente forma.


 primero seleccionamos el puerto COM 7 presionando a


Luego seleccionamos la opción de tiempo de retraso de 115200 bps con la opcion f 

luego escogemos el puerto midi loopBe internal midi presionando a




 Luego escogemos por segunda vez el puerto midi  loopBe internal midi presionando d

por ultimo nos saldra la siguiente pantalla y asi temrmina la configuracion del arduino como controlador midi.


Luego cargamos en un DAW (en este caso utilice cubase 5) el pluguin superior drummer 2.0


Inmediatamente al haber instalado el loopbe 1 y al haber configurado el serial midi converter como lo explique anterior mente nuestro DAW va a reconocer cada uno de los golpes que se genere en el pad que diseñamos anterior mente el cual contiene el piezoelectrico en su interior.




Código Fuente en Arduino:.


//*******************************************************************************************************************
// User settable variables                         
//*******************************************************************************************************************

unsigned char PadNote[6] = {66,81,77,74,16,52};         // MIDI notes from 0 to 127 (Mid C = 60)

int PadCutOff[6] = {600,600,600,600,600,600};           // Minimum Analog value to cause a drum hit

int MaxPlayTime[6] = {90,90,90,90,90,90};               // Cycles before a 2nd hit is allowed

#define  midichannel     0;                              // MIDI channel from 0 to 15 (+1 in "real world")

boolean VelocityFlag  = true;                           // Velocity ON (true) or OFF (false)





//*******************************************************************************************************************
// Internal Use Variables                          
//*******************************************************************************************************************

boolean activePad[6] = {0,0,0,0,0,0};                   // Array of flags of pad currently playing
int PinPlayTime[6] = {0,0,0,0,0,0};                     // Counter since pad started to play

unsigned char status;

int pin = 0;     
int hitavg = 0;

//*******************************************************************************************************************
// Setup                        
//*******************************************************************************************************************

void setup() 
{
  Serial.begin(115200);                                  // connect to the serial port 115200
}

//*******************************************************************************************************************
// Main Program                    
//*******************************************************************************************************************

void loop() 
{
  for(int pin=0; pin < 6; pin++)
  {
    hitavg = analogRead(pin);                              // read the input pin

    if((hitavg > PadCutOff[pin]))
    {
      if((activePad[pin] == false))
      {
        if(VelocityFlag == true)
        {
//          hitavg = 127 / ((1023 - PadCutOff[pin]) / (hitavg - PadCutOff[pin]));    // With full range (Too sensitive ?)
          hitavg = (hitavg / 8) -1 ;                                                 // Upper range
        }
        else
        {
          hitavg = 127;
        }

        MIDI_TX(144,PadNote[pin],hitavg); 
        PinPlayTime[pin] = 0;
        activePad[pin] = true;
      }
      else
      {
        PinPlayTime[pin] = PinPlayTime[pin] + 1;
      }
    }
    else if((activePad[pin] == true))
    
    {
      PinPlayTime[pin] = PinPlayTime[pin] + 1;
      
      if(PinPlayTime[pin] > MaxPlayTime[pin])
      {
        activePad[pin] = false;
        MIDI_TX(128,PadNote[pin],127); 
      }
    }
  } 
}


//*******************************************************************************************************************
// Transmit MIDI Message                        
//*******************************************************************************************************************
void MIDI_TX(unsigned char MESSAGE, unsigned char PITCH, unsigned char VELOCITY) 
{
  status = MESSAGE + midichannel;
  Serial.write(status);
  Serial.write(PITCH);
  Serial.write(VELOCITY);
}


Video de funcionamiento del proyecto:



para el desarrollo de este proyecto utilice informacion de los siguientes links:

https://www.youtube.com/watch?v=odVLSXJ414Q

http://spikenzielabs.com/SpikenzieLabs/DrumKitKit.html

http://spikenzielabs.com/SpikenzieLabs/Serial_MIDI.html

https://www.youtube.com/redirect?q=http%3A%2F%2Fwww.nerds.de%2Fdata%2Fsetuploopbe1.exe&redir_token=VtB1pMGgvsnn-jCBmFaI4XXzlJZ8MTQwMTY3MzI4MEAxNDAxNTg2ODgw

https://www.youtube.com/redirect?q=http%3A%2F%2Farduino.cc%2Fforum%2Findex.php%3Ftopic%3D84195.0&redir_token=VtB1pMGgvsnn-jCBmFaI4XXzlJZ8MTQwMTY3MzI4MEAxNDAxNTg2ODgw

miércoles, 30 de abril de 2014

Laboratorio 10.

DESCRIPCIÓN DEL LABORATORIO:

Mostrar los datos capturados por medio de una interfaz web, utilizando ethernet shiel el cual me permite diseñar esta interfaz y enviar los valores dados a  una pantalla LCD 16x2 conectada al Arduino.

Para poder hacer uso optimo de este shield configuramos una dirección I.P, la de nuestro computador, así logramos compactar todo y realizar el muestreo del valor que esta tomando en la interfaz en el servidor.

LISTA DE ELEMENTOS UTILIZADOS:
  • Un Arduino UNO
  • Un LCD 16x2
  • Un Arduino ethernet shield
  • Un potenciometro
  • Cable (conexiones)
  • Protoboard

Diagrama del Montaje en la Protoboard:



Diagrama Esquemático del Circuito:





Fotos del Montaje (paso a paso):

primero unimos el ethernet shield y el arduinio


Luego de esto conectamos el potenciometro a la protoboard.


Luego de esto conectamos el  LCD 16x2



una vez terminada esta parte,empezamos a hacer las conexiones según como esta el diagrama del circuito.






deo del Funcionamiento:




Código Fuente en Arduino:.






martes, 15 de abril de 2014

Laboratorio 9.

DESCRIPCIÓN DEL LABORATORIO:

Mostrar los datos capturados por el arduino desde dos potenciometros, una fotocelda y un switch reed  en una interfaz web, utilizando ethernet shiel el cual me permite diseñar esta interfaz y mostrar los valores de cada sensor.


Para poder hacer uso optimo de este shield configuramos una dirección I.P, la de nuestro computador, así logramos compactar todo y realizar el muestreo del valor que esta tomando el arduino en el servidor.



LISTA DE ELEMENTOS UTILIZADOS:
  • Un Arduino UNO
  • Un modulo ethernet shield
  • Dos potenciometros
  • una fotocelda
  • Un switch reed
  • Una resistencia de 10k
  • Cable (conexiones)
  • Protoboard

Diagrama del Montaje en la Protoboard:


Diagrama Esquemático del Circuito:




Fotos del Montaje (paso a paso):

primero unimos el ethernet shield y el arduinio


Luego de esto conectamos los potenciometros a la protoboard.


Luego de esto conectamos la fotocelda. 


Una vez conectamos la fotocelda, conectamos el switch reed.


una vez terminada esta parte,empezamos a hacer las conexiones según como esta el diagrama del circuito.


deo del Funcionamiento:

viernes, 28 de marzo de 2014

Laboratorio 8.

Descripción del Laboratorio:

En este laboratorio veremos como a través de un Joystick shield, se crea una aplicación gráfica la cual nos permite ver como se genera una acción con el Joystick shield utilizando processing como interfaz gráfica y Arduino receptor de datos.

Lista de los Elementos utilizados:
  • Una (1) Protoboard
  • Un (1) Joystick shield
  • Un (1) Arduino UNO

Diagrama del Montaje en la Protoboard:




Diagrama Esquemático del Circuito:



Fotos del Montaje (paso a paso):

Primero tomamos el Joystick shield y la tarjeta Arduino UNO



luego de esto unimos las dos tarjetas de forma que queden bien acopladas tal cual como esta en el diagrama esquemático.



deo del Funcionamiento:



Código Fuente en Arduino:.

http://pastebin.com/raw.php?i=axgvr5sQ

Código Fuente en Processing:

http://pastebin.com/raw.php?i=9NPCDG4U