******************************* * PROTOCOLO OSC * ******************************* Páginas de referencia: http://opensoundcontrol.org/spec-1_0 http://opensoundcontrol.org/spec-1_0-examples http://www.linuxjournal.com/content/introduction-osc + Arduino -> World =================== "Envío del valor de un sensor" /ard/id/n value ard = Placa bahía Arduino id = Id de la placa (byte, en firmware) n = Número de puerto (byte, 1-56) value = Valor leído (int32, Arduino solo soporta int16) Para las tres operaciones esta es a estructura en bytes: Indices 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 Bits 8 16 24 32 40 48 56 64 72 80 88 96 8 16 24 32 8 16 24 32 Contenido / a r d / B / B \0 \0 \0 \0 , i \0 \0 INT32 Tipo { OSC Address Pattern }{OSCTypeTag}{OSCArgument} = mensaje fijo de 20 bytes + World -> Arduino =================== "Escritura del valor de un sensor" /ard/id/wr/n value ard = Placa bahía Arduino id = Id de la placa (byte, 1-255) wr = Escribir valor n = Número de puerto (byte, 1-56) value = Valor a escribir (int32, interpretado como byte) Nota: El Arduino no tiene un DAC, por lo que sólo puede escribir valores digitales o PWM. El PWM solo es posible en los puertos que cuenten con esa capacidad. "Activar o desactivar un sensor" /ard/id/en/n value ard = Placa bahía Arduino id = Id de la placa (byte, 1-255) en = Activar pin n = Número de puerto (byte, 1-56) value = Activar o desactivar el envío de ese sensor (int32, interpretado como bool) =0 : true !=0 : false "Configurar la función de un pin" /ard/id/cf/n value ard = Placa bahía Arduino id = Id de la placa (byte, 1-255) cf = Configurar pin n = Identificador de pin (byte, nomenclatura pin_bahia, ver más abajo) value = (int32) 1 | Digital Out 2 | Digital In 3 | "Analog Out" (PWM) 4 | Analog In Para las tres operaciones esta es a estructura en bytes: Indices 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 Bits 8 16 24 32 40 48 56 64 72 80 88 96 8 16 24 32 8 16 24 32 Contenido / a r d / B / c f / B \0 , i \0 \0 INT32 Tipo { OSC Address Pattern }{OSCTypeTag}{OSCArgument} = mensaje fijo de 20 bytes ******************************* * CONFIGURACION PINES * ******************************* + Mapeo pines Arduino <-> bahía <-> pin_bahia <-> ATMega <-> # pin paquete DIP: =============================================================================== Arduino Bahía pin_bahia ATMega DIP 28 A0 X1 0 PC0(ADC0) 23 A1 X2 1 PC1(ADC1) 24 A2 X3 2 PC2(ADC2) 25 A3 X4 3 PC3(ADC3) 26 A4 X5 4 PC4(ADC4/SDA) 27 A5 X6 5 PC5(ADC5/SCL) 28 D13 X7_0 6 PB5(SCK) 19 D12 X7_1 7 PB4(MISO) 18 D11 X7_2 8 PB3(MOSI/OC2) 17 D9 X7_3 9 PB1(OC1A) 15 D5 X7_4 10 PD5(T1) 11 D6 X7_5 11 PD6(AIN0) 12 D7 X7_6 12 PD7(AIN1) 13 D8 X7_7 13 PB0(ICP) 14 + Configuración zonas por defecto: ================================== "Analog Out" (PWM) = X7_2 - X7_5 Analog In = X6, X5 Digital Out = X4, X3, X7_0, X7_1, X7_6, X7_7 Digital In = X2, X1 + Zona 7: ========= Id PWM 0 No 1 No 2 Si 3 Si 4 Si 5 Si 6 No 7 No ******************************* * TABLAS CONFIGURACION * ******************************* (Los indices son bahia_pin)