Lab_interaccio/2011/Marcelli/BahiaFirmware/detalles_tecnicos.txt
2025-02-25 21:29:42 +01:00

138 lines
4.1 KiB
Plaintext

*******************************
* 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)