INTERFÍCIES -entrega final- Proyecto Mecánica Electrónica Programación

Programación

El programa de PINBALL consiste en primer lugar en recoger los valores de los sensores a través del BasicStamp con funciones como RCTIME y BUTTON para mandarlas depués a MidiPoet. Los mensajes midi se mandan desde el Basic con la función SEROUT y MidiPoet recoge estos datos y los transforma en valores que controlan las imágenes (velocidad, frames, orden de reproducción...). El mismo mensaje midi sale desde el MidiPoet al sintetizador midi de la tarjeta de sonido. En un futuro la información de sonido se sacaría a un programa tipo PD para poder manipular el sonido de una forma más rica en tiempo real.

Código BasicStamp:

'{$STAMP BS2}
'{$PBASIC 2.5}

btwk VAR Byte
btwk=0
pib3 VAR Word
pib4 VAR Word
pib5 VAR Word
pib6 VAR Word
pib7 VAR Word
flex VAR Word
posicion VAR Word
potenciometro VAR Word


baudmode CON 12
midinoteon CON 144
midiconchange CON 176
midiprogchange CON 192


inicio:

HIGH 2 'potenciometro
HIGH 3 'pibote3
HIGH 4 'pibote4
HIGH 5 'pibote5
HIGH 6 'pibote6
HIGH 7 'pibote7
HIGH 14 'posicion
HIGH 15 'flex
HIGH 8 'leds


BUTTON 0,0,254,0,btwk,1,diana
'BUTTON 9,0,0,0,btwk,1,nobout9
BUTTON 10,0,0,0,btwk,1,nobout10
BUTTON 11,0,0,0,btwk,1,nobout11
BUTTON 12,0,0,0,btwk,1,nobout12
BUTTON 13,0,0,0,btwk,1,nobout13

RCTIME 2,1,potenciometro
IF potenciometro =1 THEN saltarpotenciometro
SEROUT 1, baudmode, [ midinoteon, potenciometro/5, 120]
DEBUG DEC ? potenciometro/5
saltarpotenciometro:

BUTTON 0,0,254,0,btwk,1,diana
'BUTTON 9,0,0,0,btwk,1,nobout9
BUTTON 10,0,0,0,btwk,1,nobout10
BUTTON 11,0,0,0,btwk,1,nobout11
BUTTON 12,0,0,0,btwk,1,nobout12
BUTTON 13,0,0,0,btwk,1,nobout13

RCTIME 3,0,pib3
IF pib3 =1 THEN saltarpib3
SEROUT 1, baudmode, [ midinoteon+1, 1, 120]
DEBUG DEC ? pib3
saltarpib3:

BUTTON 0,0,254,0,btwk,1,diana
'BUTTON 9,0,0,0,btwk,1,nobout9
BUTTON 10,0,0,0,btwk,1,nobout10
BUTTON 11,0,0,0,btwk,1,nobout11
BUTTON 12,0,0,0,btwk,1,nobout12
BUTTON 13,0,0,0,btwk,1,nobout13

RCTIME 4,0,pib4
IF pib4 =1 THEN saltarpib4
SEROUT 1, baudmode, [ midinoteon+2, 8, 120]
DEBUG DEC ? pib4
saltarpib4:

BUTTON 0,0,254,0,btwk,1,diana
'BUTTON 9,0,0,0,btwk,1,nobout9
BUTTON 10,0,0,0,btwk,1,nobout10
BUTTON 11,0,0,0,btwk,1,nobout11
BUTTON 12,0,0,0,btwk,1,nobout12
BUTTON 13,0,0,0,btwk,1,nobout13

RCTIME 5,0,pib5
IF pib5 =1 THEN saltarpib5
SEROUT 1, baudmode, [ midinoteon+3, 13, 120]
DEBUG DEC ? pib5
saltarpib5:

BUTTON 0,0,254,0,btwk,1,diana
BUTTON 9,0,0,0,btwk,1,nobout9
BUTTON 10,0,0,0,btwk,1,nobout10
BUTTON 11,0,0,0,btwk,1,nobout11
BUTTON 12,0,0,0,btwk,1,nobout12
BUTTON 13,0,0,0,btwk,1,nobout13

RCTIME 6,0,pib6
IF pib6 =1 THEN saltarpib6
SEROUT 1, baudmode, [ midinoteon+4, 25, 120]
DEBUG DEC ? pib6
saltarpib6:

BUTTON 0,0,254,0,btwk,1,diana
'BUTTON 9,0,0,0,btwk,1,nobout9
BUTTON 10,0,0,0,btwk,1,nobout10
BUTTON 11,0,0,0,btwk,1,nobout11
BUTTON 12,0,0,0,btwk,1,nobout12
BUTTON 13,0,0,0,btwk,1,nobout13

RCTIME 7,0,pib7
IF pib7 =1 THEN saltarpib7
SEROUT 1, baudmode, [ midinoteon+5, 32, 120]
DEBUG DEC ? pib7
saltarpib7:

BUTTON 0,0,254,0,btwk,1,diana
'BUTTON 9,0,0,0,btwk,1,nobout9
BUTTON 10,0,0,0,btwk,1,nobout10
BUTTON 11,0,0,0,btwk,1,nobout11
BUTTON 12,0,0,0,btwk,1,nobout12
BUTTON 13,0,0,0,btwk,1,nobout13

RCTIME 14,1,posicion
IF posicion >780 THEN saltarposicion
SEROUT 1, baudmode, [ midinoteon+6, posicion/6, 120]
DEBUG DEC ? posicion
saltarposicion:

BUTTON 0,0,254,0,btwk,1,diana
'BUTTON 9,0,0,0,btwk,1,nobout9
BUTTON 10,0,0,0,btwk,1,nobout10
BUTTON 11,0,0,0,btwk,1,nobout11
BUTTON 12,0,0,0,btwk,1,nobout12
BUTTON 13,0,0,0,btwk,1,nobout13

RCTIME 15,1,flex
IF flex <3700 THEN saltarflex
SEROUT 1, baudmode, [ midinoteon+7, flex/250, 120]
DEBUG DEC ? flex
saltarflex:

GOTO inicio

nobout9:

SEROUT 1, baudmode, [ midinoteon+8, 50, 120]
DEBUG "999999999999999999999999999999"
GOTO inicio
diana:
SEROUT 1, baudmode, [ midinoteon+9, 1, 120]
DEBUG "ffffffffffffffffffffffffffffffff"
GOTO inicio
nobout10:
SEROUT 1, baudmode, [ midinoteon+8, 10, 120]
DEBUG "101010101010101010101010101010"
GOTO inicio
nobout11:
SEROUT 1, baudmode, [ midinoteon+8, 20, 120]
DEBUG "111111111111111111111111111111"
GOTO inicio
nobout12:
SEROUT 1, baudmode, [ midinoteon+8, 30, 120]
DEBUG "222222222222222222222222222222"
GOTO inicio
nobout13:
SEROUT 1, baudmode, [ midinoteon+8, 40, 120]
DEBUG "3333333333333333333333333333333"
GOTO inicio

Código MidiPoet: