#include //No puede haber serial si pongo esto #define DMX_SLAVE_CHANNELS 10 DMX_Slave dmx_slave ( DMX_SLAVE_CHANNELS ); //MUSICLETA const int T4=1200; // Es un cuarto de lo que le cuesta pasar entre cuerda y cuerda (T/4)--> Ajustar parámetro int instante_anterior=0; int instante=0; int tiempo=0; int cuerda_tocar=0; int cuerda_siguiente=0; const int control_motor=9; const int control_solenoide=10; const int optico=0; //Esto corresponde al pin 2 void setup() { dmx_slave.enable (); dmx_slave.setStartAddress (10); //Asi me cogera de la 11 a la 20 pinMode(control_motor, OUTPUT); pinMode(control_solenoide, OUTPUT); attachInterrupt( optico, InterrupcionOptico, FALLING); //Corregir lo de falling analogWrite(control_solenoide,0); //Solenoide desactivado al comenzar el proceso //Motor encendiendose. PRECAUCION delay(500); //Espero medio segundo por precaución //Encendido Progresivo analogWrite(control_motor, 50); delay(200); analogWrite(control_motor, 100); delay(200); analogWrite(control_motor, 150); delay(200); analogWrite(control_motor, 200); delay(200); analogWrite(control_motor, 255); //Motor funcionando a toda pastilla delay(2000); delay(1000); analogWrite(control_motor, 0); //Apago el motor para que no me de mal en las pruebas } void loop() { if ( dmx_slave.getChannelValue (11) > 127 ) cuerda_tocar=1; else if ( dmx_slave.getChannelValue (12) > 127 ) cuerda_tocar=2; else if ( dmx_slave.getChannelValue (13) > 127 ) cuerda_tocar=3; else if ( dmx_slave.getChannelValue (14) > 127 ) cuerda_tocar=4; else if ( dmx_slave.getChannelValue (15) > 127 ) cuerda_tocar=5; else cuerda_tocar=0; if(cuerda_tocar!=0){ while(cuerda_tocar!=cuerda_siguiente){} analogWrite(control_solenoide, 255); //Activo Solenoide delay(300); //Ajustar tiempos!!! analogWrite(control_solenoide, 0); //Desactivo Electroiman delay(1000); //Hace falta esperar un tiempo antes de tocar la siguiente nota por algo? } } void InterrupcionOptico(){ instante_anterior=instante; instante=millis(); tiempo=instante-instante_anterior; if(tiempo