'************************************************* '* test file for robot * '* by * '* dr.Godfried-Willem Raes * '* 2009 * '************************************************* ' 26.04,2009: first tests and debug ' 06.08.2009: After the documentation, should be channel 10 (0), port 2 (0) ' channel = 10, this works. Port on Xi is 0 (ini file error) %Hat_Pedals = 32 %Hat_Shake = 33 %Hat_Rotsol = 34 %Hat_LeftHand = 35 %Hat_RightHand = 36 %Hat_Vertileft = 37 %Hat_Vertiright = 38 %Hat_RelaisLeft = 39 %Hat_RelaisBack = 40 %Hat_RelaisRight = 41 %Hat_Lights = 48 ' all 4 %Hat_Lite96 = 49 %Hat_Lite97 = 50 %Hat_Lite98 = 51 %Hat_Lite99 = 52 DECLARE FUNCTION Init_Hat () AS LONG DECLARE SUB Hat_Lights () DECLARE SUB Hat_Lite96 () DECLARE SUB Hat_Lite97 () DECLARE SUB Hat_Lite98 () DECLARE SUB Hat_Lite99 () DECLARE SUB Hat_Pedals () ' 36-37 DECLARE SUB Hat_Shake () ' 40-41 DECLARE SUB Hat_Rotsol () ' 38-39 DECLARE SUB Hat_LeftHand () ' 48-51 DECLARE SUB Hat_RightHand () ' 52-55 DECLARE SUB Hat_Vertileft () ' 56-58 DECLARE SUB Hat_Vertiright () ' 59-61 DECLARE SUB Hat_RelaisLeft () ' 72-74 DECLARE SUB Hat_RelaisBack () ' 76-83 DECLARE SUB Hat_RelaisRight () '84-87 FUNCTION Init_Hat () AS LONG LOCAL retval AS LONG Task(%Hat_Pedals).naam = "pedals" Task(%Hat_Pedals).cptr = CODEPTR(Hat_Pedals) Task(%Hat_Pedals).freq = 1 Task(%Hat_Pedals).flags = %False Task(%Hat_Shake).naam = "shaker" Task(%Hat_Shake).cptr = CODEPTR(Hat_Shake) Task(%Hat_Shake).freq = 1 Task(%Hat_Shake).flags = %False Task(%Hat_Rotsol).naam = "rotsol" Task(%Hat_Rotsol).cptr = CODEPTR(Hat_Rotsol) Task(%Hat_Rotsol).freq = 1 Task(%Hat_Rotsol).flags = %False Task(%Hat_LeftHand).naam = "L-hand" Task(%Hat_LeftHand).cptr = CODEPTR(Hat_LeftHand) Task(%Hat_LeftHand).freq = 1 Task(%Hat_LeftHand).flags = %False Task(%Hat_Righthand).naam = "R-hand" Task(%Hat_Righthand).cptr = CODEPTR(Hat_Righthand) Task(%Hat_RightHand).freq = 1 Task(%Hat_RightHand).flags = %False Task(%Hat_Vertileft).naam = "L-verti" Task(%Hat_Vertileft).cptr = CODEPTR(Hat_Vertileft) Task(%Hat_Vertileft).freq = 1 Task(%Hat_Vertileft).flags = %False Task(%Hat_Vertiright).naam = "R-verti" Task(%Hat_Vertiright).cptr = CODEPTR(Hat_Vertiright) Task(%Hat_Vertiright).freq = 1 Task(%Hat_Vertiright).flags = %False Task(%Hat_RelaisLeft).naam = "L-Upw" Task(%Hat_RelaisLeft).cptr = CODEPTR(Hat_Relaisleft) Task(%Hat_Relaisleft).freq = 1 Task(%Hat_Relaisleft).flags = %False Task(%Hat_Relaisback).naam = "Back-Upw" Task(%Hat_Relaisback).cptr = CODEPTR(Hat_Relaisback) Task(%Hat_Relaisback).freq = 1 Task(%Hat_Relaisback).flags = %False Task(%Hat_RelaisRight).naam = "R-Upw" Task(%Hat_RelaisRight).cptr = CODEPTR(Hat_Relaisright) Task(%Hat_RelaisRight).freq = 1 Task(%Hat_Relaisright).flags = %False Task(%Hat_Lights).naam = "lites" Task(%Hat_Lights).cptr = CODEPTR(Hat_Lights) Task(%Hat_Lights).freq = 6 Task(%Hat_Lights).flags = %False Task(%Hat_Lite96).naam = "L96" Task(%Hat_Lite96).cptr = CODEPTR(Hat_Lite96) Task(%Hat_Lite96).freq = 2 Task(%Hat_Lite96).flags = %False Task(%Hat_Lite97).naam = "L97" Task(%Hat_Lite97).cptr = CODEPTR(Hat_Lite97) Task(%Hat_Lite97).freq = 2 Task(%Hat_Lite97).flags = %False Task(%Hat_Lite98).naam = "L98" Task(%Hat_Lite98).cptr = CODEPTR(Hat_Lite98) Task(%Hat_Lite98).freq = 2 Task(%Hat_Lite98).flags = %False Task(%Hat_Lite99).naam = "L99" Task(%Hat_Lite99).cptr = CODEPTR(Hat_Lite99) Task(%Hat_Lite99).freq = 2 Task(%Hat_Lite99).flags = %False Task(%MM_SysxTask).naam = "SendSysx" Task(%MM_SysxTask).freq = .33 Task(%MM_SysxTask).cptr = CODEPTR(MM_Sysx) 'in m_robots.inc MSGBOX "warning: starting with sysesx 126 - remove this again later on..",,FUNCNAME$ PRogchange hat.channel, 126 FUNCTION = %True END FUNCTION SUB Hat_Lights () STATIC n AS LONG STATIC slnr AS DWORD STATIC udnr AS DWORD LOCAL channel AS LONG IF ISFALSE Task(%Hat_Lights).tog THEN DIM TaskParamlabels(1) AS ASCIIZ * 8 TaskParamLabels(0) = "Speed" TaskParamlabels(1) = "Channel" ' test for PIC channel firmware. IF ISFALSE Task(%Hat_Lights).hParam THEN slnr = 0 MakeTaskParameterDialog %Hat_Lights,1,Slider(),1,UDctrl(),TaskParamLabels() UDctrl(TaskEX(%Hat_lights).UpdownNumbers(0)).cptr = CODEPTR(Hat_Kanaal_UD) UDctrl(TaskEX(%Hat_lights).UpDownNumbers(0)).value = Hat.channel AND &H000F udnr = TaskEX(%Hat_Lights).UpDownNumbers(0) END IF n = 0 Task(%Hat_Lights).tog = %True END IF ' Hat.channel = HIBYT(Hat.channel) OR Udctrl(udnr).value ' for hardware debug only. rem out after debug!!! SELECT CASE n MOD 5 CASE 0 mPlay Hat.channel, 96, 127 CASE 1 mPlay Hat.channel, 97, 127 CASE 2 mPlay Hat.channel, 98, 127 CASE 3 mPlay Hat.channel, 99, 127 CASE 4 mPlay Hat.channel, 96, %False mPlay Hat.channel, 97, %False mPlay Hat.channel, 98, %False mPlay Hat.channel, 99, %False END SELECT INCR n Task(%Hat_Lights).freq = MAX(slider(slnr).value /4, 1) END SUB SUB Hat_Lite96 () STATIC cnt AS DWORD IF cnt THEN mPlay Hat.channel, 96, 127 ELSE NoteOff Hat.channel, 96 END IF BIT TOGGLE cnt,0 END SUB SUB Hat_Lite97 () STATIC cnt AS DWORD IF cnt THEN mPlay Hat.channel, 97, 127 ELSE NoteOff Hat.channel, 97 END IF BIT TOGGLE cnt,0 END SUB SUB Hat_Lite98 () STATIC cnt AS DWORD IF cnt THEN mPlay Hat.channel, 98, 127 ELSE NoteOff Hat.channel, 98 END IF BIT TOGGLE cnt,0 END SUB SUB Hat_Lite99 () STATIC cnt AS DWORD IF cnt THEN mPlay Hat.channel, 99, 127 ELSE NoteOff Hat.channel, 99 END IF BIT TOGGLE cnt,0 END SUB SUB Hat_Kanaal_UD () ' UD callback for setting the midi channel. [ for hardware debug only] ' this is for checking the PIC firmware setting. LOCAL udnr AS LONG LOCAL channel AS BYTE udnr = TaskEX(%Hat_Lights).UpDownNumbers(0) channel = UDCtrl(udnr).value IF channel < 0 THEN UDctrl(udnr).value = 0: channel = 0 IF channel > 15 THEN UDctrl(udnr).value = 15 : channel= 15 SetDlgItemText Task(%Hat_Lights).hparam, %GMT_TEXT0_ID + 16, "K=" & STR$(channel) END SUB SUB Hat_Pedals () ' task 32 ' pedals test ' notes 36-37 STATIC i AS DWORD STATIC slnr AS DWORD IF ISFALSE Task(%Hat_Pedals).tog THEN DIM TaskParamLabels(0 TO 1) AS ASCIIZ * 8 TaskParamLabels(0) = "Tempo" TaskParamLabels(1) = "Level" IF ISFALSE Task(%Hat_Pedals).hParam THEN slnr = %False MakeTaskParameterDialog %Hat_Pedals,2,Slider(),0,UDctrl(),TaskParamLabels() END IF IF slnr = %False THEN slnr = TaskEX(%Hat_Pedals).SliderNumbers(0) Task(%Hat_Pedals).freq = 1 Slider(slnr).value = Task(%Hat_Pedals).freq SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value Slider(slnr+1).value = 4 SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, 4 ' low level on init. END IF i = 36 Task(%Hat_Pedals).tog = %True END IF mPlay Hat.channel, i, Slider(slnr+1).value ' pedals alternating INCR i IF i > 37 THEN i = 36 Task(%Hat_Pedals).freq = MAX(0.5, 8! * (Slider(slnr).value) / 128!) END SUB SUB Hat_Shake () ' task 33 ' frontal shaker test ' notes 40-41 ' works fine in test 06.08.2009 STATIC i AS DWORD STATIC slnr AS DWORD IF ISFALSE Task(%Hat_Shake).tog THEN DIM TaskParamLabels(0 TO 1) AS ASCIIZ * 8 TaskParamLabels(0) = "Tempo" TaskParamLabels(1) = "Level" IF ISFALSE Task(%Hat_Shake).hParam THEN slnr = %False MakeTaskParameterDialog %Hat_Shake,2,Slider(),0,UDctrl(),TaskParamLabels() END IF IF slnr = %False THEN slnr = TaskEX(%Hat_Shake).SliderNumbers(0) Task(%Hat_Shake).freq = 1 Slider(slnr).value = Task(%Hat_Shake).freq SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value Slider(slnr+1).value = 4 SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, 4 ' low level on init. END IF i = 40 Task(%Hat_Shake).tog = %True END IF mPlay Hat.channel, i, Slider(slnr+1).value ' Shake alternating INCR i IF i > 41 THEN i = 40 Task(%Hat_Shake).freq = MAX(0.5, 16! * (Slider(slnr).value) / 128!) END SUB SUB Hat_Rotsol () ' task 34 ' rotary solenoid test ' notes 38-39 STATIC i AS DWORD STATIC slnr AS DWORD IF ISFALSE Task(%Hat_RotSol).tog THEN DIM TaskParamLabels(0 TO 1) AS ASCIIZ * 8 TaskParamLabels(0) = "Tempo" TaskParamLabels(1) = "Level" IF ISFALSE Task(%Hat_RotSol).hParam THEN slnr = %False MakeTaskParameterDialog %Hat_RotSol,2,Slider(),0,UDctrl(),TaskParamLabels() END IF IF slnr = %False THEN slnr = TaskEX(%Hat_RotSol).SliderNumbers(0) Task(%Hat_RotSol).freq = 1 Slider(slnr).value = Task(%Hat_RotSol).freq SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value Slider(slnr+1).value = 4 SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, 4 ' low level on init. END IF i = 38 Task(%Hat_RotSol).tog = %True END IF mPlay Hat.channel, i, Slider(slnr+1).value ' RotSol alternating INCR i IF i > 39 THEN i = 38 Task(%Hat_RotSol).freq = MAX(0.5, 8! * (Slider(slnr).value) / 128!) END SUB SUB Hat_LeftHand () ' 48-51 '%Hat_LeftHand = 35 ' notes 48-51 STATIC i AS DWORD STATIC slnr AS DWORD IF ISFALSE Task(%Hat_LeftHand).tog THEN DIM TaskParamLabels(0 TO 1) AS ASCIIZ * 8 TaskParamLabels(0) = "Tempo" TaskParamLabels(1) = "Level" IF ISFALSE Task(%Hat_LeftHand).hParam THEN slnr = %False MakeTaskParameterDialog %Hat_LeftHand,2,Slider(),0,UDctrl(),TaskParamLabels() END IF IF slnr = %False THEN slnr = TaskEX(%Hat_LeftHand).SliderNumbers(0) Task(%Hat_LeftHand).freq = 2 Slider(slnr).value = Task(%Hat_LeftHand).freq SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value Slider(slnr+1).value = 4 SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, 4 ' low level on init. END IF i = 48 Task(%Hat_LeftHand).tog = %True END IF mPlay Hat.channel, i, Slider(slnr+1).value ' alternating INCR i IF i > 51 THEN i = 48 Task(%Hat_LeftHand).freq = MAX(1, 32! * (Slider(slnr).value) / 128!) END SUB SUB Hat_RightHand () ' 52-55 '%Hat_RightHand = 36 STATIC i AS DWORD STATIC slnr AS DWORD IF ISFALSE Task(%Hat_RightHand).tog THEN DIM TaskParamLabels(0 TO 1) AS ASCIIZ * 8 TaskParamLabels(0) = "Tempo" TaskParamLabels(1) = "Level" IF ISFALSE Task(%Hat_RightHand).hParam THEN slnr = %False MakeTaskParameterDialog %Hat_RightHand,2,Slider(),0,UDctrl(),TaskParamLabels() END IF IF slnr = %False THEN slnr = TaskEX(%Hat_RightHand).SliderNumbers(0) Task(%Hat_RightHand).freq = 2 Slider(slnr).value = Task(%Hat_RightHand).freq SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value Slider(slnr+1).value = 4 SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, 4 ' low level on init. END IF i = 52 Task(%Hat_RightHand).tog = %True END IF mPlay Hat.channel, i, Slider(slnr+1).value ' Shake alternating INCR i IF i > 55 THEN i = 52 Task(%Hat_RightHand).freq = MAX(1, 32! * (Slider(slnr).value) / 128!) END SUB SUB Hat_Vertileft () ' 56-58 ' %Hat_Vertileft = 37 STATIC i AS DWORD STATIC slnr AS DWORD IF ISFALSE Task(%Hat_Vertileft).tog THEN DIM TaskParamLabels(0 TO 1) AS ASCIIZ * 8 TaskParamLabels(0) = "Tempo" TaskParamLabels(1) = "Level" IF ISFALSE Task(%Hat_Vertileft).hParam THEN slnr = %False MakeTaskParameterDialog %Hat_Vertileft,2,Slider(),0,UDctrl(),TaskParamLabels() END IF IF slnr = %False THEN slnr = TaskEX(%Hat_Vertileft).SliderNumbers(0) Task(%Hat_Vertileft).freq = 1 Slider(slnr).value = Task(%Hat_Vertileft).freq SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value Slider(slnr+1).value = 4 SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, 4 ' low level on init. END IF i = 56 Task(%Hat_Vertileft).tog = %True END IF mPlay Hat.channel, i, Slider(slnr+1).value ' Shake alternating INCR i IF i > 58 THEN i = 56 Task(%Hat_Vertileft).freq = MAX(0.5, 16! * (Slider(slnr).value) / 128!) END SUB SUB Hat_Vertiright () ' 59-61 '%Hat_Vertiright = 38 STATIC i AS DWORD STATIC slnr AS DWORD IF ISFALSE Task(%Hat_VertiRight).tog THEN DIM TaskParamLabels(0 TO 1) AS ASCIIZ * 8 TaskParamLabels(0) = "Tempo" TaskParamLabels(1) = "Level" IF ISFALSE Task(%Hat_VertiRight).hParam THEN slnr = %False MakeTaskParameterDialog %Hat_VertiRight,2,Slider(),0,UDctrl(),TaskParamLabels() END IF IF slnr = %False THEN slnr = TaskEX(%Hat_VertiRight).SliderNumbers(0) Task(%Hat_VertiRight).freq = 1 Slider(slnr).value = Task(%Hat_VertiRight).freq SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value Slider(slnr+1).value = 4 SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, 4 ' low level on init. END IF i = 59 Task(%Hat_VertiRight).tog = %True END IF mPlay Hat.channel, i, Slider(slnr+1).value ' Shake alternating INCR i IF i > 61 THEN i = 59 Task(%Hat_VertiRight).freq = MAX(0.5, 16! * (Slider(slnr).value) / 128!) END SUB SUB Hat_RelaisLeft () ' 72-74 ' small PIC board '%Hat_RelaisLeft = 39 ' notes 40-41 STATIC i AS DWORD STATIC slnr AS DWORD IF ISFALSE Task(%Hat_Relaisleft).tog THEN DIM TaskParamLabels(0 TO 1) AS ASCIIZ * 8 TaskParamLabels(0) = "Tempo" TaskParamLabels(1) = "Level" IF ISFALSE Task(%Hat_Relaisleft).hParam THEN slnr = %False MakeTaskParameterDialog %Hat_Relaisleft,2,Slider(),0,UDctrl(),TaskParamLabels() END IF IF slnr = %False THEN slnr = TaskEX(%Hat_Relaisleft).SliderNumbers(0) Task(%Hat_Relaisleft).freq = 1 Slider(slnr).value = Task(%Hat_Relaisleft).freq SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value Slider(slnr+1).value = 4 SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, 4 ' low level on init. END IF i = 72 Task(%Hat_Relaisleft).tog = %True END IF mPlay Hat.channel, i, Slider(slnr+1).value ' Shake alternating INCR i IF i > 74 THEN i = 72 Task(%Hat_Relaisleft).freq = MAX(0.5, 8! * (Slider(slnr).value) / 128!) END SUB SUB Hat_RelaisBack () ' 76-83 'small PIC board '%Hat_RelaisBack = 40 ' notes 40-41 STATIC i AS DWORD STATIC slnr AS DWORD IF ISFALSE Task(%Hat_Relaisback).tog THEN DIM TaskParamLabels(0 TO 1) AS ASCIIZ * 8 TaskParamLabels(0) = "Tempo" TaskParamLabels(1) = "Level" IF ISFALSE Task(%Hat_Relaisback).hParam THEN slnr = %False MakeTaskParameterDialog %Hat_Relaisback,2,Slider(),0,UDctrl(),TaskParamLabels() END IF IF slnr = %False THEN slnr = TaskEX(%Hat_Relaisback).SliderNumbers(0) Task(%Hat_Relaisback).freq = 1 Slider(slnr).value = Task(%Hat_Relaisback).freq SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value Slider(slnr+1).value = 4 SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, 4 ' low level on init. END IF i = 76 Task(%Hat_Relaisback).tog = %True END IF mPlay Hat.channel, i, Slider(slnr+1).value ' Shake alternating INCR i IF i > 83 THEN i = 76 Task(%Hat_Relaisback).freq = MAX(0.5, 8! * (Slider(slnr).value) / 128!) END SUB SUB Hat_RelaisRight () '84-87 'small PIC board '%Hat_RelaisRight = 41 STATIC i AS DWORD STATIC slnr AS DWORD IF ISFALSE Task(%Hat_RelaisRight).tog THEN DIM TaskParamLabels(0 TO 1) AS ASCIIZ * 8 TaskParamLabels(0) = "Tempo" TaskParamLabels(1) = "Level" IF ISFALSE Task(%Hat_RelaisRight).hParam THEN slnr = %False MakeTaskParameterDialog %Hat_RelaisRight,2,Slider(),0,UDctrl(),TaskParamLabels() END IF IF slnr = %False THEN slnr = TaskEX(%Hat_RelaisRight).SliderNumbers(0) Task(%Hat_RelaisRight).freq = 1 Slider(slnr).value = Task(%Hat_RelaisRight).freq SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value Slider(slnr+1).value = 4 SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, 4 ' low level on init. END IF i = 84 Task(%Hat_RelaisRight).tog = %True END IF mPlay Hat.channel, i, Slider(slnr+1).value ' alternating INCR i IF i > 87 THEN i = 84 Task(%Hat_RelaisRight).freq = MAX(0.5, 8! * (Slider(slnr).value) / 128!) END SUB