Show Posts
Pages: [1] 2 3
1  International / Español / PROYECTO, MIDI Keyboard y Cambio de Octava [AYUDA] on: May 11, 2012, 01:14:13 pm
Hola que tal a todos, me arme un MIDI keyboard; el cual consiste en 7 pulsadores para cada nota y 2 pulsadores para subir o bajar de octava. Al presionar el pulsador "mas" debería sumarse 12 a note y presionando el pulsador "menos" debería restarse 12 a note, pero no he podido pues no se suman los valores al presionar los pulsadores correspondientes.

Code:
int a; int menoss = 12; int mass = 12; int menos; int mas;
int doo1; int re1; int mi1; int fa1;
int sol1; int la1; int si1;
int doo; int re; int mi; int fa;
int sol; int la; int si;
void setup() {
pinMode(mass, INPUT);
pinMode(menoss, INPUT);
  pinMode(doo1, INPUT);
  pinMode(re1, INPUT);
  pinMode(mi1, INPUT);
  pinMode(fa1, INPUT);
  pinMode(sol1, INPUT);
  pinMode(la1, INPUT);
  pinMode(si1, INPUT);
    Serial.begin(9600);
}
void loop() {
  mas = digitalRead(mass); 
    if (mas == HIGH) { a = 12; }     

  menos = digitalRead(menoss);
    if (menos == HIGH) { a = -12; }
   
doo = digitalRead(doo1);
  if (doo == HIGH) { notes(159,48+a,127); }
  if (doo == LOW) { notes(143,48+a,0); }   

re = digitalRead(re1);
  if (re == HIGH) { notes(159,50+a,127); }
  if (re == LOW) { notes(143,50+a,0); }   

mi = digitalRead(mi1);
  if (mi == HIGH) { notes(159,52+a,127); }
  if (mi == LOW) {
    notes(143,52+a,0);       
}
fa = digitalRead(fa1);
  if (fa == HIGH) { notes(159,54+a,127); }
  if (fa == LOW) { notes(143,54+a,0); }

sol = digitalRead(sol1);
  if (sol == HIGH) { notes(159,55+a,127); }
  if (sol == LOW) { notes(143,55+a,0); }

la = digitalRead(la1);
  if (la == HIGH) { notes(159,57+a,127); }
  if (la == LOW) { notes(143,57+a,127); }
 
si = digitalRead(si1);
  if (si == HIGH) { notes(159,59+a,127); }
  if (si == LOW) { notes(143,59+a,0); }
}
void notes(int cmd, int note, int velocity) {
  Serial.println(cmd);
  Serial.println(note);
  Serial.println(velocity);
    delay(1000); }

gracias! ,,, espero puedan ayudarme
saludos desde Colombia!
2  International / Español / Re: ayuda operación con pulsadores on: May 10, 2012, 09:05:02 am
pues b seria el valor resultante de la suma o resta al presionar los pulsadores
3  International / Español / Re: ayuda operación con pulsadores on: May 10, 2012, 07:32:47 am
bueno vuelvo a poner el codigo que me equivoque en algo

Code:
int a;   int b; int z;
int pul1 = 2;   int p1 = 0;
int pul2 = 8;   int p2 = 0;
int s7;   int v7;    int c8;
void setup() {
pinMode(pul1, INPUT);
pinMode(pul2, INPUT);
Serial.begin(9600);
}
void loop() {
c8 = digitalRead(pul1);
v7 = digitalRead(pul2);
if ((v7 == HIGH)&&(z=12)) { 
(a = 39);
(b = a+z);
}
if (v7 == LOW){
(z==0);
}
if ((c8 == HIGH)&&(z=12)) {

(a = 39);
(b = a-z);

if (c8 == LOW){
(z==0);
}

s7 = digitalRead(pul1);
if (s7 == HIGH) {
a = 36;
no(159,b,127);         
}
if (s7 == LOW ) {
a = 36;
no(143,b,0);       
}   
}
void no(byte cmd, byte note, byte velocity){
Serial.println(cmd);
Serial.println(b); <<<<< este valor se debe sumar y restar al presionar los pulsadores
Serial.println(velocity);
delay(1000);
}

la idea es que cada vez que oprima s7 el valor de b sea constante y al presionar v7 o c8 se sume o se reste este valor con 12 osea z=12 si a=39

lo que trato de hacer es algo parecido en C++ aqui dejo el ejemplo, ya lo hize con un pic pero no he podido realizarlo en arduino:

void main(void)

{int a=0,b=0, c=0, d=0, e=0, f=0, g=0, h=0, i=0, j=0, k=0, l=0, m=0, n=0;
set_tris_a( 0xff );
set_tris_b( 0xff );
set_tris_e( 0xff );

while(true)
      {

      if(input(PIN_E0)==1)
 {a=a+12;
 while(input(PIN_E0)==1)
                        {}}
if(input(PIN_E1)==1)
{a=a-12;
while(input(PIN_E1)==1)
                        {}}
      if ((input(PIN_B7)==1)&&(b==0))
         {

            fputc(146,mic);
            fputc(60+a,mic);
            fputc(126,mic);

                       b=5;}
    if ((input(PIN_B7)==0)&&(b==5))
           { fputc(130,mic);
            fputc(60+a,mic);
            fputc(126,mic);

       b=0;  }
  if ((input(PIN_B6)==1)&&(c==0))
         {

            fputc(146,mic);
            fputc(61+a,mic);
            fputc(126,mic);

          c=5;   }
          if ((input(PIN_B6)==0)&&(c==5))
            {fputc(130,mic);
            fputc(61+a,mic);
            fputc(126,mic);

     c=0;    }
  if ((input(PIN_B5)==1)&&(d==0))
         {

            fputc(146,mic);
            fputc(62+a,mic);
            fputc(126,mic);
       d=5;      }
        if ((input(PIN_B5)==0)&&(d==5))
         {
            fputc(130,mic);
            fputc(62+a,mic);
            fputc(126,mic);

      d=0;   }
   if ((input(PIN_B4)==1)&&(e==0))
         {

            fputc(146,mic);
            fputc(63+a,mic);
            fputc(126,mic);
         e=5;    }
          if ((input(PIN_B4)==0)&&(e==5))
         {
            fputc(130,mic);
            fputc(63+a,mic);
            fputc(126,mic);

   e=0;      }
    if ((input(PIN_B3)==1)&&(f==0))
         {

            fputc(146,mic);
            fputc(64+a,mic);
            fputc(126,mic);
         f=5;    }
         if ((input(PIN_B3)==0)&&(f==5))
         {
            fputc(130,mic);
            fputc(64+a,mic);
            fputc(126,mic);

     f=0;      }
    if ((input(PIN_B2)==1)&&(g==0))
         {

            fputc(146,mic);
            fputc(65+a,mic);
            fputc(126,mic);
            g=5;}
            if ((input(PIN_B2)==0)&&(g==5))
         {
            fputc(130,mic);
            fputc(65+a,mic);
            fputc(126,mic);

       g=0;  }
    if ((input(PIN_B1)==1)&&(h==0))
         {

            fputc(146,mic);
            fputc(66+a,mic);
            fputc(126,mic);
           h=5;  }
           if ((input(PIN_B1)==0)&&(h==5))
         {
            fputc(130,mic);
            fputc(66+a,mic);
            fputc(126,mic);
h=0;
         }
    if ((input(PIN_B0)==1)&&(i==0))
         {

            fputc(146,mic);
            fputc(67+a,mic);
            fputc(126,mic);
             i=5;}
             if ((input(PIN_B0)==1)&&(i==5))
         {
            fputc(130,mic);
            fputc(67+a,mic);
            fputc(126,mic);
i=0;
         }
    if ((input(PIN_A0)==1)&&(j==0))
         {

            fputc(146,mic);
            fputc(68+a,mic);
            fputc(126,mic);
             j=5;}
              if ((input(PIN_A0)==0)&&(j==5))
         {
            fputc(130,mic);
            fputc(68+a,mic);
            fputc(126,mic);
j=0;
         }
     if ((input(PIN_A1)==1)&&(k==0))
         {

            fputc(146,mic);
            fputc(69+a,mic);
            fputc(126,mic);
             k=5;}
              if ((input(PIN_A1)==0)&&(k==5))
         {
            fputc(130,mic);
            fputc(69+a,mic);
            fputc(126,mic);
 k=1;
         }
    if ((input(PIN_A2)==1)&&(l==0))
         {

            fputc(146,mic);
            fputc(70+a,mic);
            fputc(126,mic);
           l=5;  }
           if ((input(PIN_A2)==0)&&(l==5))
         {
            fputc(130,mic);
            fputc(70+a,mic);
            fputc(126,mic);
l=0;
         }
  if ((input(PIN_A3)==1)&&(m==0))
  {

            fputc(146,mic);
            fputc(71+a,mic);
            fputc(126,mic);
        m=5;    }
        if ((input(PIN_A3)==0)&&(m==5))
  {
            fputc(130,mic);
            fputc(71+a,mic);
            fputc(126,mic);

        m=0;   }
 if ((input(PIN_A4)==1)&&(n==0))
         {

            fputc(146,mic);
            fputc(72+a,mic);
            fputc(126,mic);
           n=5; }
           if ((input(PIN_A4)==0)&&(n==5))
         {
            fputc(130,mic);
            fputc(72+a,mic);
            fputc(126,mic);
 n=0;
         }
}
}

gracias!
4  International / Español / ayuda operación con pulsadores on: May 10, 2012, 02:20:23 am

que tal a todos estoy tratando de hacer una operacion que es facil en otros entornos de programacion como c++ pero en arduino no he podido, la idea es la siguiente que al tener un valor y oprima el pulsador se sume y si lo vuelvo a presionar vuelva a sumar así consecutivamente hasta un limite y en sentido viceversa restando...

esto es lo que llevo, por favor corrijanme que soy novato:

Code:
int a;   int b; int z;
int pul1 = 2;   int p1 = 0;
int pul2 = 8;   int p2 = 0;
int s7;   int v7;    int c8;
void setup() {
pinMode(pul1, INPUT);
pinMode(pul2, INPUT);
Serial.begin(9600);
}
void loop() {
c8 = digitalRead(pul1);
v7 = digitalRead(pul2);
if ((v7 == HIGH)&&(z=12)) { 
(a = 39);
(b = a+z);
}
if (v7 == LOW){
(z==0);
}
if ((c8 == HIGH)&&(z=12)) {

(a = 39);
(b = a-z);

if (c8 == LOW){
(z==0);
}

s7 = digitalRead(pul1);
if (s7 == HIGH) {
a = 36;
no(159,b,127);         
}
if (s7 == LOW ) {
a = 36;
no(143,b,0);       
}   
}
void no(byte cmd, byte note, byte velocity){
Serial.println(cmd);
Serial.println(a); <<<<< este valor se debe sumar y restar al presionar los pulsadores
Serial.println(velocity);
delay(1000);
}

gracias espero que puedan ayudar
5  International / Español / Re: PROYECTO TUBOS MIDI [ayuda] on: May 07, 2012, 05:09:39 pm

el problema es de los sensores ya que arroja un voltaje sin inducirle presion de 30,9mv y maximo de 40mv al ejercerle presion ... estos sensores empiezan a trabajar desde 30,9mv segun pude ver bien en el datasheet ntonces el voltaje nunca sera cero...
6  International / Español / Re: PROYECTO TUBOS MIDI [ayuda] on: May 05, 2012, 02:34:38 pm
pues son varios tubos pero estoy comenzando con uno ... el proyecto consiste en hacer un controlador midi a base de la variacion de presion que se ejerce al ejecutar presion sobre los sensores que estan ubicados al final del tubo ... alimento al circuito con la tajeta arduino 5v y gnd
7  International / Español / Re: PROYECTO TUBOS MIDI [ayuda] on: May 05, 2012, 01:55:15 pm
si a vref conecto el aref de la tarjeta arduino ... asi lo he tenido conectado todo este tiempo y sigue el problema que comentaba anteriormente ... al quitar el aref solo salen ceros aun aplicando presion
8  International / Español / Re: PROYECTO TUBOS MIDI [ayuda] on: May 05, 2012, 01:26:35 pm
cheyenne ... el circuito amplificador esta bien explicado y todo con resistencias al inicio del tema
9  International / Español / Re: PROYECTO TUBOS MIDI [ayuda] on: May 05, 2012, 01:05:55 pm
curo la idea es adaptar un tubo cualquiera para que me sirva como controlador midi para esto el byte caracterisco sera el del velocity, pero pues no he tenido suerte con estos por que sin aplicar presion me envia datos y al aplicar presion no pasa nada  smiley-cry
10  International / Español / Re: PROYECTO TUBOS MIDI [ayuda] on: May 05, 2012, 12:52:42 pm
mmm solo me salen ceros aplico presion y no pasa nada smiley-sad
11  International / Español / Re: PROYECTO TUBOS MIDI [ayuda] on: May 05, 2012, 12:32:03 pm

no entiendo lo del map ... como veo esos valores?
12  International / Español / Re: PROYECTO TUBOS MIDI [ayuda] on: May 05, 2012, 11:56:39 am
pues la variable la declare como byte para que me diera datos del 0 al 255 .... pero aun así no logro que se quede quieto el monitor siguen saliendo datos como en la captura pasada sin estar aplicando presión sobre el mp10d  smiley-cry
13  International / Español / Re: PROYECTO TUBOS MIDI [ayuda] on: May 05, 2012, 10:16:51 am
bueno aqui unas capturas de los datos que salen en el monitor sin aplicar presion (al no aplicar presion el dato sea 0)... la idea es que al aplicar presion los datos que me arroje el monitor oscilen entre 1 y 127 correspondientes al velocity del midi.



gracias
14  International / Español / Re: PROYECTO TUBOS MIDI [ayuda] on: May 05, 2012, 07:47:33 am

ya lo intente pero aun asi el problema persiste
15  International / Español / PROYECTO TUBOS MIDI [ayuda] on: May 05, 2012, 12:41:03 am
Que tal a todos recurro a uds ya que no es mucha la informacion que he encontrado en la red, para capturar la variacion de presion estoy usando unos sensores de presion MPX10D estos tienen una salida diferencial v+ y v- estoy usando el diseño del documento AN1668 de motorola y pues los AO que uso son los LM358.

el montaje es el siguiente:



en donde R+S1 = 1K, R+S2 = 100, Vref = que a mi parecer es el Aref de la tarjeta arduino, R1 = 39K, R2 = 100, R3 = 100, R4 = 39K, Vout_fs = lo conecto a A0 (entrada análoga de la tarjeta arduino).

el codigo es el siguiente :

Code:
byte s1;

void setup ...
void loop:

s1 = analogRead(A0)/8;
  if (s1 > 0) {
    notes(158,57,s1);
}
  if (s1 == 0) {
    notes(142,57,0);       
}
}
void notes(int cmd, int note, int velocity){
 Serial.println(velocity);
delay(1000);     
}

en este caso el único valor que me interesa es el del velocity, pero pues tengo un problema viendo el monitor de arduino el sensor me envía datos sin aplicarle presión; estoy buscando que me envié ceros al no aplicarle presión y datos variables según la presión que se le aplique....        no se que hacer ya he probado muchas cosas, recurro a vuestra ayuda

gracias!
Pages: [1] 2 3