boe bot basic stamp 2 (say it module )
after trying for 5 days to get the confirm finally iam here and i can post i hope i will get answer from you people
i have the say it module i did the what wee need it in the say it gui software
i need you to check the codes is it write thse code
group 1 1- forward
2- backward
3- left
4- right
5- stop
6- zainab
i need you to check the codes is it write thse code
andcan aone write for me what i have to write in the demo to change the code
please help me i need to do it
thanks
i have the say it module i did the what wee need it in the say it gui software
i need you to check the codes is it write thse code
group 1 1- forward
2- backward
3- left
4- right
5- stop
6- zainab
i need you to check the codes is it write thse code
' {$STAMP BS2}
' {$PBASIC 2.5}
' COM Parameters
COM_RX PIN 0 ' rx pin
COM_TX PIN 2 ' tx pin
COM_SPEED CON 84 ' baud 9600
COM_10MS CON 10 ' 10ms unit
' Protocol Command
CMD_BREAK CON "b" ' abort recog or ping
CMD_SLEEP CON "s" ' go to power down
CMD_KNOB CON "k" ' set si knob <1>
CMD_LEVEL CON "v" ' set sd level <1>
CMD_LANGUAGE CON "l" ' set si language <1>
CMD_TIMEOUT CON "o" ' set timeout <1>
CMD_RECOG_SI CON "i" ' do si recog from ws <1>
CMD_RECOG_SD CON "d" ' do sd recog at group <1> (0 = trigger mixed si/sd)
' Protocol Status
STS_AWAKEN CON "w" ' back from power down mode
STS_ERROR CON "e" ' signal error code <1-2>
STS_INVALID CON "v" ' invalid command or argument
STS_TIMEOUT CON "t" ' timeout expired
STS_INTERR CON "i" ' back from aborted recognition (see 'break')
STS_SUCCESS CON "o" ' no errors status
STS_RESULT CON "r" ' recognised sd command <1> - training similar to sd <1>
STS_SIMILAR CON "s" ' recognised si <1> (in mixed si/sd) - training similar to si <1>
' Protocol arguments are in the range 0x40 (-1) TO 0x60 (+31) inclusive
ARG_MIN CON 64 ' 0x40
ARG_MAX CON 96 ' 0x60
ARG_ZERO CON 65 ' 0x41
ARG_ACK CON 32 ' 0x20 'TO READ more status arguments
'Groups and Commands
GROUP_1 CON 1 '(Command count: 6)
G1_FORWARD CON 0
G1_BACKWARD CON 1
G1_LEFT CON 2
G1_RIGHT CON 3
G1_STOP CON 4
G1_ZAINAB CON 5
RES_ERROR CON 255
RES_TIMEOUT CON 254
RES_COMMFAIL CON 253
RES_BUILTIN CON 32
'Robot Constant
VRLED PIN 4
'Global Variable
VRA VAR Byte
VRA1 VAR Byte
VRGROUP VAR Byte
VRCOMMAND VAR Byte
' Main Start
INPUT COM_RX
HIGH COM_TX
Restart:
LOW VRLED
VRGROUP = 0
DEBUG CR, "Setting up VRbot... "
'Wake up or stop recognition
GOSUB VR_Wakeup
DEBUG "awake... "
'Set SI Language
VRA1 = 0
GOSUB VR_SetLanguage
DEBUG "language ", DEC VRA1, "... "
'Set 5 seconds timeout
VRA1 = 5
GOSUB VR_SetTimeout
DEBUG "timeout ", DEC VRA1, "... "
DEBUG CR, "VRbot ready!"
VR_Loop:
DEBUG CR, "VRbot in group ", DEC VRGROUP, " waiting for command... "
LOW VRLED
PAUSE 150
IF VRGROUP > 0 THEN HIGH VRLED
VRA1 = VRGROUP
GOSUB VR_RecognizeSD
'-- handle errors or timeout
IF VRA1 = RES_ERROR THEN
DEBUG "error"
'try again in the same group
GOTO VR_Loop
ENDIF
IF VRA1 = RES_TIMEOUT THEN
DEBUG "timed out"
VRGROUP = 0 ' back to trigger
GOTO VR_Loop
ENDIF
IF VRA1 = RES_COMMFAIL THEN
DEBUG "comm failed"
'resync and try again
GOSUB VR_Wakeup
GOTO VR_Loop
ENDIF
'-- got a command
VRCOMMAND = VRA1
IF VRCOMMAND <= RES_BUILTIN THEN GOSUB VR_Action
GOTO VR_Loop
VR_Action:
DEBUG "got ", DEC VRCOMMAND
SELECT VRGROUP
CASE GROUP_1
SELECT VRCOMMAND
CASE G1_FORWARD
PAUSE 0 '-- FORWARD
CASE G1_BACKWARD
PAUSE 0 '-- BACKWARD
CASE G1_LEFT
PAUSE 0 '-- LEFT
CASE G1_RIGHT
PAUSE 0 '-- RIGHT
CASE G1_STOP
PAUSE 0 '-- STOP
CASE G1_ZAINAB
PAUSE 0 '-- ZAINAB
ENDSELECT
ENDSELECT
RETURN
'=== VR Routines ===
' Wake up:
VR_Wakeup:
TOGGLE VRLED
VRA = CMD_BREAK
SEROUT COM_TX, COM_SPEED, [VRA]
SERIN COM_RX, COM_SPEED, 100*COM_10MS, VR_Wakeup, [VRA]
IF (VRA <> STS_SUCCESS) THEN GOTO VR_Wakeup
LOW VRLED
RETURN
' Inputs:
' VRA1 = language index (0 = english, ...)
VR_SetLanguage:
VRA = CMD_LANGUAGE
SEROUT COM_TX, COM_SPEED, [VRA]
VRA1 = VRA1 + ARG_ZERO
SEROUT COM_TX, COM_SPEED, [VRA1]
SERIN COM_RX, COM_SPEED, 20*COM_10MS, VR_CommFailed, [VRA]
VRA1 = VRA1 - ARG_ZERO
'IF (VRA <> STS_SUCCESS) THEN GOTO VR_Wakeup
RETURN
' Inputs:
' VRA1 = timeout (in ms, 0=forever, 255=default)
VR_SetTimeout:
VRA = CMD_TIMEOUT
SEROUT COM_TX, COM_SPEED, [VRA]
VRA1 = VRA1 + ARG_ZERO
SEROUT COM_TX, COM_SPEED, [VRA1]
SERIN COM_RX, COM_SPEED, 20*COM_10MS, VR_CommFailed, [VRA]
VRA1 = VRA1 - ARG_ZERO
'IF (VRA <> STS_SUCCESS) THEN GOTO VR_Wakeup
RETURN
' Inputs:
' VRA1 = SI knob (0=loosest, 2=normal, 4=tightest)
VR_SetKnob:
VRA = CMD_KNOB
SEROUT COM_TX, COM_SPEED, [VRA]
VRA1 = VRA1 + ARG_ZERO
SEROUT COM_TX, COM_SPEED, [VRA1]
SERIN COM_RX, COM_SPEED, 20*COM_10MS, VR_CommFailed, [VRA]
VRA1 = VRA1 - ARG_ZERO
'IF (VRA <> STS_SUCCESS) THEN GOTO VR_Wakeup
RETURN
' Inputs:
' VRA1 = SD level (1=easy, 2=default, 5=hard)
VR_SetLevel:
VRA = CMD_LEVEL
SEROUT COM_TX, COM_SPEED, [VRA]
VRA1 = VRA1 + ARG_ZERO
SEROUT COM_TX, COM_SPEED, [VRA1]
SERIN COM_RX, COM_SPEED, 20*COM_10MS, VR_CommFailed, [VRA]
VRA1 = VRA1 - ARG_ZERO
'IF (VRA <> STS_SUCCESS) THEN GOTO VR_Wakeup
RETURN
' Inputs:
' VRA1 = wordset (0=trigger)
' Ouputs:
' VRA1 = result (0-31=word, 32..=builtin, 253=comm err, 254=timeout, 255=error)
VR_RecognizeSI:
VRA = CMD_RECOG_SI
GOTO VR_Recognize0
VR_RecognizeSD:
VRA = CMD_RECOG_SD
VR_Recognize0:
SEROUT COM_TX, COM_SPEED, [VRA]
' send Group/WS
VRA1 = VRA1 + ARG_ZERO
SEROUT COM_TX, COM_SPEED, [VRA1]
' wait for answer
SERIN COM_RX, COM_SPEED, 600*COM_10MS, VR_CommFailed, [VRA]
IF VRA = STS_RESULT THEN
' send ack
VRA = ARG_ACK
SEROUT COM_TX, COM_SPEED, [VRA]
' wait for recognised command code
SERIN COM_RX, COM_SPEED, 20*COM_10MS, VR_CommFailed, [VRA1]
VRA1 = VRA1 - ARG_ZERO
ELSEIF VRA = STS_SIMILAR THEN
' send ack
VRA = ARG_ACK
SEROUT COM_TX, COM_SPEED, [VRA]
' wait for recognised command code
SERIN COM_RX, COM_SPEED, 20*COM_10MS, VR_CommFailed, [VRA1]
VRA1 = VRA1 - ARG_ZERO + RES_BUILTIN
ELSEIF VRA = STS_TIMEOUT THEN
VRA1 = RES_TIMEOUT
ELSE
VRA1 = RES_ERROR
ENDIF
RETURN
VR_CommFailed:
VRA1 = RES_COMMFAIL
RETURN
andcan aone write for me what i have to write in the demo to change the code
please help me i need to do it
thanks
Comments
SELECT VRGROUP CASE GROUP_1 SELECT VRCOMMAND CASE G1_FORWARD PAUSE 0 '-- FORWARD CASE G1_BACKWARD PAUSE 0 '-- BACKWARD CASE G1_LEFT PAUSE 0 '-- LEFT CASE G1_RIGHT PAUSE 0 '-- RIGHT CASE G1_STOP PAUSE 0 '-- STOP CASE G1_ZAINAB PAUSE 0 '-- ZAINAB ENDSELECT ENDSELECT
The variables, VRGROUP and VRCOMMAND are set by other code based on the information coming back from the SayIt module as a result of a spoken command and this block of code selects one CASE based on the spoken command. If you say "stop", the code in CASE G1_STOP is executed, etc. The PAUSE 0 is a placeholder and you would substitute the code that you want to execute when a "stop" command is said.Can you tell me in the code for the demo
What will be whith this select group?
There is a demo for run it but we have to change it with the same what we do it in say it gui
Can you put it for me
Stop mean stop robots
Zainab mean making round
*' {$‬STAMP BS2*}‬ *' {$‬PBASIC 2.5*}‬ *' ‬COM Parameters COM_RX* ‬PIN* ‬0* ' ‬RX Pin COM_TX* ‬PIN* ‬2* ' ‬TX Pin RServo* ‬PIN* ‬13* ' ‬Right Wheel LServo* ‬PIN* ‬12* ' ‬Right Wheel PIN_LED* ‬PIN* ‬4* ' ‬LED Pin COM_SPEED* ‬CON* ‬84* ' ‬baud 9600 *' ‬Protocol Command CMD_BREAK* ‬CON* "‬b*" ' ‬abort recog or ping CMD_SLEEP* ‬CON* "‬s*" ' ‬go to power down CMD_KNOB* ‬CON* "‬k*" ' ‬set si knob* <‬1*>‬ CMD_LEVEL* ‬CON* "‬v*" ' ‬set sd level* <‬1*>‬ CMD_LANGUAGE* ‬CON* "‬l*" ' ‬set si language* <‬1*>‬ CMD_TIMEOUT* ‬CON* "‬o*" ' ‬set timeout* <‬1*>‬ CMD_RECOG_SI* ‬CON* "‬i*" ' ‬do si recog from ws* <‬1*>‬ CMD_RECOG_SD* ‬CON* "‬d*" ' ‬do sd recog at group* <‬1*> (‬0* = ‬trigger mixed si/sd*)‬ *' ‬Protocol Status STS_AWAKEN* ‬CON* "‬w*" ' ‬back from power down mode STS_ERROR* ‬CON* "‬e*" ' ‬signal error code* <‬1-2*>‬ STS_INVALID* ‬CON* "‬v*" ' ‬invalid command or argument STS_TIMEOUT* ‬CON* "‬t*" ' ‬timeout expired STS_INTERR* ‬CON* "‬i*" ' ‬back from aborted recognition* (‬see* '‬break*')‬ STS_SUCCESS* ‬CON* "‬o*" ' ‬no errors status STS_RESULT* ‬CON* "‬r*" ' ‬recognised sd command* <‬1*> - ‬training similar to sd* <‬1*>‬ STS_SIMILAR* ‬CON* "‬s*" ' ‬recognised si* <‬1*> (‬in mixed si/sd*) - ‬training similar to si* <‬1*>‬ *' ‬Protocol arguments are in the range 0x40* (-‬1*) ‬TO 0x60* (+‬31*) ‬inclusive ARG_MIN* ‬CON* ‬64* ' ‬0x40 ARG_MAX* ‬CON* ‬96* ' ‬0x60 ARG_ZERO* ‬CON* ‬65* ' ‬0x41 ARG_ACK* ‬CON* ‬32* ' ‬0x20* '‬TO READ more status arguments *' ‬Wordset WST* ‬CON* ‬0* ' ‬wordset trigger WS1* ‬CON* ‬1* ' ‬Wordset 1* ‬commands WS2* ‬CON* ‬2* ' ‬Wordset 2* ‬actions WS3* ‬CON* ‬3* ' ‬Wordset 3* ‬numbers *'‬Wordset Commands WS1*_‬Action* ‬CON* ‬0 WS1*_‬Move* ‬CON* ‬1 WS1*_‬Turn* ‬CON* ‬2 WS1*_‬Run* ‬CON* ‬3 WS1*_‬Look* ‬CON* ‬4 WS1*_‬Attack* ‬CON* ‬5 WS1*_‬Stop* ‬CON* ‬6 WS1*_‬Hello* ‬CON* ‬7 WS2*_‬Left* ‬CON* ‬0 WS2*_‬Right* ‬CON* ‬1 WS2*_‬Up* ‬CON* ‬2 WS2*_‬Down* ‬CON* ‬3 WS2*_‬Forward* ‬CON* ‬4 WS2*_‬Backward* ‬CON* ‬5 WS3*_‬Zero* ‬CON* ‬0 WS3*_‬One* ‬CON* ‬1 WS3*_‬Two* ‬CON* ‬2 WS3*_‬Three* ‬CON* ‬3 WS3*_‬Four* ‬CON* ‬4 WS3*_‬Five* ‬CON* ‬5 WS3*_‬Six* ‬CON* ‬6 WS3*_‬Seven* ‬CON* ‬7 WS3*_‬Eight* ‬CON* ‬8 WS3*_‬Nine* ‬CON* ‬9 WS3*_‬Ten* ‬CON* ‬10 WS_Timeout* ‬CON* ‬254 WS_Error* ‬CON* ‬255 VAR_LANG* ‬DATA 0 VAR_KNOB* ‬DATA 2 VAR_LEVEL* ‬DATA 2 *'‬Robot Constant COMMAND_DURATION* ‬CON* ‬2000 COMMAND_SPEED_HIGH* ‬CON* ‬3 COMMAND_SPEED_LOW* ‬CON* ‬1 *'‬Global Variable counter* ‬VAR* ‬Word VRA* ‬VAR* ‬Byte VRA1* ‬VAR* ‬Byte VRLED* ‬VAR* ‬Byte WS* ‬VAR* ‬Byte RXC* ‬VAR* ‬Byte RXC_PREV* ‬VAR* ‬Byte *' ‬Main Start LOW VRLED *' ‬AUTOMATIC SWITCHING MODALITY MSG* = $‬22 SEROUT COM_IN_TX*, ‬COM_SPEED*, [‬MSG*]‬ SERIN COM_IN_RX*, ‬COM_SPEED*, ‬1000*, ‬MAIN_CONTROL*, [‬MSG*]‬ IF MSG* <> $‬55* ‬THEN GOTO MAIN_CONTROL GOSUB VR_Wakeup GOSUB VR_SetLanguage SEROUT COM_IN_TX*, ‬COM_SPEED*, [‬MSG*]‬ GOTO PROGRAMMING MAIN_CONTROL*:‬ DEBUG CR*, "‬ROBOT CONTROL*"‬ DEBUG CR*, "‬Wake Up Voice Module*"‬ GOSUB VR_Wakeup DEBUG CR*, "‬Voice Module Waked up*"‬ GOSUB VR_SetLanguage *'‬VRA1* = ‬255 VRA1* = ‬5 GOSUB VR_SetTimeout *'‬start with trigger WS* = ‬WST MAIN_LOOP*:‬ * ‬LOW PIN_LED * ‬DEBUG CR*, "‬Wait for* "‬ * ‬SELECT WS * ‬CASE 0 * ‬DEBUG* "‬Trigger*"‬ * ‬CASE 1 * ‬DEBUG* "‬WS1*"‬ * ‬HIGH PIN_LED * ‬CASE 2 * ‬DEBUG* "‬WS2*"‬ * ‬PAUSE 150 * ‬HIGH PIN_LED * ‬CASE 3 * ‬DEBUG* "‬WS3*"‬ * ‬PAUSE 150 * ‬HIGH PIN_LED * ‬ENDSELECT * '‬Wait for command * ‬VRA1* = ‬WS * ‬GOSUB VR_Recognize * ‬RXC* = ‬VRA1 * ‬LOW PIN_LED * ‬IF RXC* < ‬WS_Timeout THEN * '‬Perform action and cycle * ‬GOSUB ACTION * ‬GOTO MAIN_LOOP *' ‬Handle errors * ‬ELSEIF RXC* = ‬WS_Timeout THEN * ‬DEBUG CR*, "‬Timeout*"‬ * ‬ELSE'IF RXC* = ‬WS_Error THEN * ‬DEBUG CR*, "‬Error*"‬ * ‬ENDIF * ‬WS* = ‬WST * ‬GOTO MAIN_LOOP * ‬END *' ‬Main END ACTION*:‬ * ‬SELECT WS * ‬CASE WST * ‬WS* = ‬WS1 * ‬IF RXC* > ‬0* ‬THEN * ‬DEBUG CR*, "‬Custom Trigger*"‬ * ‬ENDIF * ‬CASE WS1 * ‬RXC_PREV* = ‬RXC * ‬WS* = ‬WST * ‬SELECT RXC * ‬CASE WS1*_‬Move* '‬MOVE * ‬DEBUG CR*, "‬Move*"‬ * ‬WS* = ‬WS2 * ‬CASE WS1*_‬Turn* '‬TURN * ‬DEBUG CR*, "‬Turn*"‬ * ‬WS* = ‬WS2 * ‬CASE WS1*_‬Run* '‬RUN * ‬DEBUG CR*, "‬Run*"‬ * ‬WS* = ‬WS2 * '‬This command for testing numbers * ‬CASE WS1*_‬Action * ‬DEBUG CR*, "‬Action*"‬ * ‬WS* = ‬WS3 * '‬Following commands do nothing * ‬CASE WS1*_‬Look * ‬DEBUG CR*, "‬Look*"‬ * ‬CASE WS1*_‬Attack * ‬DEBUG CR*, "‬Attack*"‬ * ‬CASE WS1*_‬Hello * ‬DEBUG CR*, "‬Hello*"‬ * ‬CASE WS1*_‬Stop * ‬DEBUG CR*, "‬Stop*"‬ * ‬CASE ELSE * ‬DEBUG CR*, "‬Invalid Command*"‬ * ‬ENDSELECT * ‬CASE WS2 * ‬SELECT RXC * ‬CASE WS2*_‬Left* '‬LEFT * ‬DEBUG CR*, "‬Left*"‬ * ‬IF RXC_PREV* = ‬WS1*_‬Move THEN* ' ‬MOVE * ‬GOSUB TURN_LEFT * ‬ELSEIF RXC_PREV* = ‬WS1*_‬Turn* ‬THEN* '‬TURN * ‬GOSUB SPIN_LEFT * ‬ELSEIF RXC_PREV* = ‬WS1*_‬Run* ‬THEN* '‬RUN * ‬GOSUB TURN_LEFT * ‬ENDIF * ‬CASE WS2*_‬Right* '‬RIGHT * ‬DEBUG CR*, "‬Right*"‬ * ‬IF RXC_PREV* = ‬WS1*_‬Move THEN* '‬MOVE * ‬GOSUB TURN_RIGHT * ‬ELSEIF RXC_PREV* = ‬WS1*_‬Turn THEN* '‬TURN * ‬GOSUB SPIN_RIGHT * ‬ELSEIF RXC_PREV* = ‬WS1*_‬Run THEN* '‬RUN * ‬GOSUB TURN_RIGHT * ‬ENDIF * ‬CASE WS2*_‬Forward* '‬FORWARD * ‬DEBUG CR*, "‬Forward*"‬ * ‬IF RXC_PREV* = ‬WS1*_‬Move THEN* '‬MOVE * ‬GOSUB FORWARD * ‬ELSEIF RXC_PREV* = ‬WS1*_‬Run THEN* '‬RUN * ‬GOSUB FORWARD * ‬ENDIF * ‬CASE WS2*_‬Backward* '‬BACKWARD * ‬DEBUG CR*, "‬Backward*"‬ * ‬IF RXC_PREV* = ‬WS1*_‬Move THEN* '‬MOVE * ‬GOSUB BACKWARD * ‬ELSEIF RXC_PREV* = ‬WS1*_‬Run THEN* '‬RUN * ‬GOSUB BACKWARD * ‬ENDIF * '‬Following commands do nothing * ‬CASE WS2*_‬Up* '‬UP * ‬DEBUG CR*, "‬Up*"‬ * ‬CASE WS2*_‬Down* '‬DOWN * ‬DEBUG CR*, "‬Down*"‬ * ‬CASE ELSE * ‬DEBUG CR*, "‬Invalid Command*"‬ * ‬ENDSELECT * ‬WS* = ‬WST * ‬CASE WS3 * ‬DEBUG CR*, "‬Number* ", ‬DEC RXC * ‬WS* = ‬WST * ‬ENDSELECT * ‬RETURN *' ‬Wake up*:‬ VR_Wakeup*:‬ * ‬VRA* = ‬CMD_BREAK * ‬SEROUT COM_TX*, ‬COM_SPEED*, [‬VRA*]‬ * ‬SERIN COM_RX*, ‬COM_SPEED*, [‬VRA*]‬ * ‬IF VRA* <> ‬STS_SUCCESS THEN GOTO VR_Wakeup * ‬RETURN *' ‬Inputs*:‬ *' ‬VRA1* = ‬language index* (‬0* = ‬english*, ...)‬ VR_SetLanguage*:‬ * ‬READ VAR_LANG*, ‬VRA1 * ‬VRA* = ‬CMD_LANGUAGE * ‬SEROUT COM_TX*, ‬COM_SPEED*, [‬VRA*]‬ * ‬VRA1* = ‬VRA1* + ‬ARG_ZERO * ‬SEROUT COM_TX*, ‬COM_SPEED*, [‬VRA1*]‬ VR_SetLanguage1*:‬ * ‬SERIN COM_RX*, ‬COM_SPEED*, ‬2000* ,‬VR_SetLanguage1*, [‬VRA*]‬ * ‬RETURN *' ‬Inputs*:‬ *' ‬VRA1* = ‬timeout* (‬in ms*, ‬0*=‬forever*, ‬255*=‬default*)‬ VR_SetTimeout*:‬ * ‬VRA* = ‬CMD_TIMEOUT * ‬SEROUT COM_TX*, ‬COM_SPEED*, [‬VRA*]‬ * ‬VRA1* = ‬VRA1* + ‬ARG_ZERO * ‬SEROUT COM_TX*, ‬COM_SPEED*, [‬VRA1*]‬ VR_SetTimeout1*:‬ * ‬SERIN COM_RX*, ‬COM_SPEED*, ‬2000* ,‬VR_SetTimeout1*, [‬VRA*]‬ * ‬RETURN *' ‬Inputs*:‬ *' ‬VRA1* = ‬wordset* (‬0*=‬trigger*)‬ *' ‬Ouputs*:‬ *' ‬VRA1* = ‬result* (‬1-N=word*, ‬254*=‬timeout*, ‬255*=‬error*)‬ *' ‬for trigger N>0* ‬are custom words VR_Recognize*:‬ * ' ‬START RECOG * ‬IF VRA1* = ‬0* ‬THEN * ‬VRA* = ‬CMD_RECOG_SD * ‬ELSE * ‬VRA* = ‬CMD_RECOG_SI * ‬ENDIF * ‬SEROUT COM_TX*, ‬COM_SPEED*, [‬VRA*]‬ * ' ‬SEND WS * ‬VR_Recognize1*:‬ * ‬VRA1* = ‬VRA1* + ‬ARG_ZERO * ‬SEROUT COM_TX*, ‬COM_SPEED*, [‬VRA1*]‬ * ' ‬wait for answer * ‬SERIN COM_RX*, ‬COM_SPEED*, [‬VRA*]‬ * ‬IF VRA* = ‬STS_RESULT THEN * ' ‬send ack * ‬VRA* = ‬ARG_ACK * ‬SEROUT COM_TX*, ‬COM_SPEED*, [‬VRA*]‬ * ' ‬wait for recognised command code * ‬VR_Recognize2*:‬ * ‬SERIN COM_RX*, ‬COM_SPEED*, ‬1000*, ‬VR_Recognize2*, [‬VRA1*]‬ * ‬VRA1* = ‬VRA1* - ‬ARG_ZERO* + ‬1 * ‬ELSEIF VRA* = ‬STS_SIMILAR THEN * ' ‬send ack * ‬VRA* = ‬ARG_ACK * ‬SEROUT COM_TX*, ‬COM_SPEED*, [‬VRA*]‬ * ' ‬wait for recognised command code * ‬VR_Recognize3*:‬ * ‬SERIN COM_RX*, ‬COM_SPEED*, ‬1000*, ‬VR_Recognize3*, [‬VRA1*]‬ * ‬VRA1* = ‬VRA1* - ‬ARG_ZERO * ‬ELSEIF VRA* = ‬STS_TIMEOUT THEN * ‬VRA1* = ‬254 * '‬DEBUG CR*, ? ‬VRA * ‬ELSE * ‬VRA1* = ‬255 * '‬DEBUG CR*, ? ‬VRA * ‬ENDIF * ‬RETURN FORWARD*:‬ * '‬DEBUG CR*, "‬Robot Forward*"‬ * ‬FOR counter* = ‬1* ‬TO 50 * ‬PULSOUT LServo*, ‬1000 * ‬PULSOUT RServo*, ‬500 * ‬PAUSE 20 * ‬NEXT * ‬RETURN BACKWARD*:‬ * '‬DEBUG CR*, "‬Robot Backward*"‬ * ‬FOR counter* = ‬1* ‬TO 50 * ‬PULSOUT LServo*, ‬500 * ‬PULSOUT RServo*, ‬1000 * ‬PAUSE 20 * ‬NEXT * ‬RETURN SPIN_RIGHT*:‬ * '‬DEBUG CR*, "‬Robot Spin right*"‬ * ‬FOR counter* = ‬1* ‬TO 50 * ‬PULSOUT LServo*, ‬1000 * ‬PULSOUT RServo*, ‬1000 * ‬PAUSE 20 * ‬NEXT * ‬RETURN SPIN_LEFT*:‬ * '‬DEBUG CR*, "‬Robot Spin left*"‬ * ‬FOR counter* = ‬1* ‬TO 50 * ‬PULSOUT LServo*, ‬500 * ‬PULSOUT RServo*, ‬500 * ‬PAUSE 20 * ‬NEXT * ‬RETURN TURN_LEFT*:‬ * '‬DEBUG CR*, "‬Robot Turn Left*"‬ * ‬FOR counter* = ‬1* ‬TO 85 * ‬PULSOUT LServo*, ‬750 * ‬PULSOUT RServo*, ‬500 * ‬PAUSE 20 * ‬NEXT * ‬RETURN TURN_RIGHT*:‬ * '‬DEBUG CR*, "‬Robot Turn Right*"‬ * ‬FOR counter* = ‬1* ‬TO 85 * ‬PULSOUT LServo*, ‬1000 * ‬PULSOUT RServo*, ‬750 * ‬PAUSE 20 * ‬NEXT * ‬RETURN PROGRAMMING*:‬ * '‬DEBUG CR*, "‬VOICE PROGRAMMING*"‬ * ' ‬COM IN Parameters* - ‬PC serial port * ‬COM_IN_RX* ‬CON* ‬16* ' ‬rx pin * ‬COM_IN_TX* ‬CON* ‬16* ' ‬tx pin * ' ‬COM Parameters* - ‬Voice Module port * ‬COM_OUT_RX* ‬CON* ‬COM_RX* ' ‬rx pin * ‬COM_OUT_TX* ‬CON* ‬COM_TX* ' ‬tx pin * ‬COM_TIMEOUT CON* ‬5000 * ' ‬Protocol Command * ‬CMD_SEND* ‬CON* ‬1* ' ‬send request * ‬CMD_SEND_RECEIVE* ‬CON* ‬2* ' ‬send and receive request * ‬CMD_RECEIVE* ‬CON* ‬3* ' ‬receive request * ‬CMD_LED* ‬CON* ‬4* ' ‬receive request * ‬CMD_SET_LANG* ‬CON* ‬5* ' ‬receive request * ‬CMD_GET_LANG* ‬CON* ‬6* ' ‬receive request * ‬CODE_ERROR* ‬CON* ‬48* ' ‬0x30 * ‬CODE_ACK* ‬CON* ‬32* ' ‬0x20 * ‬MSG VAR Byte * ‬LOW PIN_LED * ‬PROGRAMMING_MAIN_LOOP*:‬ * ' ‬wait for a byte on input COM * ‬SERIN COM_IN_RX*, ‬COM_SPEED*, [‬MSG*]‬ * ' ‬send back Echo * ‬SEROUT COM_IN_TX*, ‬COM_SPEED*, [‬MSG*]‬ * ‬SELECT MSG * ‬CASE CMD_SEND* ' ‬send request * ' ‬wait for the byte to send * ‬SERIN COM_IN_RX*, ‬COM_SPEED*, ‬COM_TIMEOUT*, ‬RX_ERROR*, [‬MSG*]‬ * ' ‬send the byte to output COM * ‬SEROUT COM_OUT_TX*, ‬COM_SPEED*, [‬MSG*]‬ * ' ‬send back Echo * ‬SEROUT COM_IN_TX*, ‬COM_SPEED*, [‬MSG*]‬ * ‬CASE CMD_SEND_RECEIVE* ' ‬send and receive request * ' ‬wait for the byte to send * ‬SERIN COM_IN_RX*, ‬COM_SPEED*, ‬COM_TIMEOUT*, ‬RX_ERROR*, [‬MSG*]‬ * ' ‬send back Echo * ‬SEROUT COM_IN_TX*, ‬COM_SPEED*, [‬MSG*]‬ * ' ‬light*?‬ * ‬IF VRLED* = ‬1* ‬THEN HIGH PIN_LED * ' ‬send the byte to output COM * ‬SEROUT COM_OUT_TX*, ‬COM_SPEED*, [‬MSG*]‬ * ' ‬wait for a byte on output COM * ‬SERIN COM_OUT_RX*, ‬COM_SPEED*, [‬MSG*]‬ * ' ‬light*?‬ * ‬IF VRLED* = ‬1* ‬THEN LOW PIN_LED * ' ‬send the byte to input COM * ‬SEROUT COM_IN_TX*, ‬COM_SPEED*, [‬MSG*]‬ * ‬CASE CMD_RECEIVE* ' ‬receive request * ‬MSG* = ‬CODE_ACK * ' ‬send a byte request to output COM * ‬SEROUT COM_OUT_TX*, ‬COM_SPEED*, [‬MSG*]‬ * ' ‬wait for a byte on output COM * ‬SERIN COM_OUT_RX*, ‬COM_SPEED*, ‬COM_TIMEOUT*, ‬RX_ERROR*, [‬MSG*]‬ * ' ‬send the byte to input COM * ‬SEROUT COM_IN_TX*, ‬COM_SPEED*, [‬MSG*]‬ * ‬CASE CMD_LED* ' ‬LED request * ' ‬wait for the status byte * ‬SERIN COM_IN_RX*, ‬COM_SPEED*, ‬COM_TIMEOUT*, ‬RX_ERROR*, [‬MSG*]‬ * ‬IF MSG* = "‬0*" ‬THEN * '‬LED OFF * ‬LOW PIN_LED * ‬VRLED* = ‬0 * ‬ELSE * '‬LED ON * '‬HIGH PIN_LED* '‬postpone to next cmd * ‬VRLED* = ‬1 * ‬ENDIF * ' ‬send back Echo * ‬SEROUT COM_IN_TX*, ‬COM_SPEED*, [‬MSG*]‬ * ‬CASE CMD_SET_LANG* ' ‬set language on EEPROM * ' ‬wait for the byte to store * ‬SERIN COM_IN_RX*, ‬COM_SPEED*, ‬COM_TIMEOUT*, ‬RX_ERROR*, [‬MSG*]‬ * ‬WRITE VAR_LANG*, ‬MSG * ' ‬send back Echo * ‬SEROUT COM_IN_TX*, ‬COM_SPEED*, [‬MSG*]‬ * ‬CASE CMD_GET_LANG* ' ‬set language on EEPROM * ' ‬wait for the byte to store * ‬READ VAR_LANG*, ‬MSG * ' ‬send back Echo * ‬SEROUT COM_IN_TX*, ‬COM_SPEED*, [‬MSG*]‬ * ‬CASE ELSE * ‬GOTO RX_ERROR * ‬ENDSELECT * ‬GOTO PROGRAMMING_MAIN_LOOP RX_ERROR*:‬ * ‬MSG* = ‬CODE_ERROR * ‬SEROUT COM_IN_TX*, ‬COM_SPEED*, [‬MSG*]‬ * ‬GOTO PROGRAMMING_MAIN_LOOP
this is the demoo
can you please tell me is it right like what i show you before or its wrong ?
and what the thinks i have to change it
and how to calculate ?
I've used the SayIt a bit with the Propeller but not the Basic Stamp. From what I know of the BS2 and from what I've read other's post about it, I think it's kind of tough to use the SayIt with the BS2 since the BS2 doesn't have an UART buffer. In order for the BS2 to catch the codes coming from the SayIt it has to be actively listening to the SayIt with the "SERIN" command.
The motors of the BOE-Bot also interfere with the SayIt's ability to hear commands so the robot should be stopped and not making any noise while listening.
I made the mistake of using an Emic2 with the SayIt. I had the Emic2 say outloud whatever command the SayIt heard. The problem with this was the SayIt would then try to understand what the Emic2 was saying which would either result in an error or the SayIt would think it understood a new command. In hindsight this was kind of funny. I add this not just because it was funny but to point out the SayIt needs a relatively quiet environment to work properly.
I wrote a program to allow me to listen in on the data exchange between the SayIt and the PC GUI. This helped me to see just what the SayIt was expecting to receive in order to execute the various commands. Post #23 here has some of this exchange. I've saved a lot more of the exchange than what I posted. I've attached a text file of the full exchange. The lines that don't start with either "PC:" or "Say It:" are notes I added to help me remember what the actions were I took in the GUI.
While I've spend some time trying to get the SayIt to control a robot, I'm far from satisfied with my efforts so far. I just haven't had time to spend fixing all the little details needed to have a speech operated robot to work correctly. There are a surprising number of things to keep straight. If the robot is going to be noisy, you need to have the SayIt stop listening. It's also a good idea to have some sort of error handling code to decide what happens when the various errors occur.
My suggestion is to start as simple as possible. Have the microcontroller turn on a LED or send a debug statement when it hears the work "Robot". Then add the ability to change word sets. Or in your case it may be easier to just start with word set 1 and stay there. Have the microcontroller send a debug statement of the word the SayIt heard before trying to program the robot to perform any actions.
I'll be glad to answer any question I know how but I haven't used a Basic Stamp for several years and I'm not very familiar with its syntax.
As I've stated in my profile, I don't mind receiving PMs that point me to a thread someone would like me to look at, but I don't like to give one on one help through private messages for several reasons. One of the main reasons is I often give bad advice. When I do so on the forum others jump in to correct me so I don't have to worry so much about being wrong. Another big reason I don't like to give one on one help through private messages is often others will have the same question. If an exchange is make via PM no one else can benefit from it (I believe many forum member feel the same about helping via PMs.)
I agree with you. Questions should be posted in the forums (not PM) for two important reasons...first of all it gives more people the opportunity to offer help. You never know who might be fluent in regards to your question if it is asked privately. Second, everyone should be able to benefit from the advice and answers given.