Monday, December 1, 2014

Codigo utilizado para el triciclo sonoro

#include <VirtualWire.h>

void setup()
{
Serial.begin(4800);
Serial.println("setup");
vw_setup(2000);
vw_set_tx_pin(1);
pinMode(8,INPUT);
}

void loop()
{
if (digitalRead(8)==HIGH)
{
char *msg = "2";
digitalWrite(13, true);
vw_send((uint8_t *)msg, strlen(msg));
vw_wait_tx();
digitalWrite(13, false);
}
else
{
char *msg = "1";
vw_send((uint8_t *)msg, strlen(msg));
vw_wait_tx();
}
}
ese es el código del emisor
manda un pulso vía radio frecuencia cuando se está espichando el botón
es decir, un 1 cuando se espicha y un 0 cuando se suelta
bueno...para cosas prácticas en este caso manda un 2 cuando se espicha y un 1 cuando se suelta...el segundo código es el del receptor:
#include <VirtualWire.h>
int acc=0;
int cont=2;
int val=1;
void setup()
{
Serial.begin(4800);
vw_set_ptt_inverted(true);
vw_setup(2000);
vw_set_rx_pin(2);
vw_rx_start();
}

void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen))
{
int i;
digitalWrite(13, true);
for (i = 0; i < buflen; i++)
{
if(buf[i] == '2')
{
if (acc== 0)
{
acc = 1;
Serial.write(val);
}
digitalWrite(13, true);
delay(5);
}
else
{
if (acc==1)
{
Serial.write(cont);
}
acc = 0;
digitalWrite(13, false);
}
}
digitalWrite(13, false);
}
}
este código agarra el dato recibido y dependiendo de lo que reciba envía un 1 o un 2 por puerto serial...
luego, en pD (puredata) se agarra ese valor del puerto serial y se convierte a una nota midi, si es 1 la manda por el canal midi 1 y respectivamente si recibe un 2 la manda por el canal 2...
por último, en algun programa de manejo de clips en vivo (como lo es Ableton Live, AudioMulch o el que usamos en este caso que fue Resolume) se le da trigger a un clip con el bombo (boom) cuando se presiona el botón, y un hihat cuando se suelta (tsszt)

No comments:

Post a Comment