Shop OBEX P1 Docs P2 Docs Learn Events
SAY IT, Help — Parallax Forums

SAY IT, Help

paulvivepaulvive Posts: 35
edited 2012-01-14 10:20 in General Discussion
I GET ALL THE WAY TO GENERATE CODE ON THE STAMP GUI. I RUN THE CODE THE SCREEN TURNS BLUE AND i GET A MESSAGE GROUP 0 "WAITING FOR COMMAND". I THOUGHT iWAS USING WORDSET 2 THAT CONTAINED THE WORD SET i WANTED TO USE. hOW DO I GET THE PROGRAM TO USE WORDSET 2 AND WHAT COMMAND WOULD IT BE WAITING FOR. hELP

Comments

  • Martin_HMartin_H Posts: 4,051
    edited 2012-01-12 12:47
    Post the code you are running and we can take a look. Put these tags around it: [ code] [ /code] but remove the space between the [ and the characters that follow.
  • paulvivepaulvive Posts: 35
    edited 2012-01-12 14:33
    It's a long code. It's "say it.bs2". I can post it anyway but I'm not sure if I follow what you want me to do with the tags? Do you want me to put the parenthesis you indicated with the code between?

    Thanks for your help but nothing seems to be going right with me and this module. If I wasn't so stubborn I would have given up on it.
  • Duane DegnDuane Degn Posts: 10,588
    edited 2012-01-12 14:36
    Paul,

    There's more information about posting code here:

    attachment.php?attachmentid=78421&d=1297987572
  • graffixgraffix Posts: 389
    edited 2012-01-12 14:57
    Try a quick search of the Sayit Module on the forums.Xanatos has helped a couple people recently.
  • xanatosxanatos Posts: 1,120
    edited 2012-01-12 16:34
    I'm watching this but swamped at the moment... I know what you probably need, which is to have the system switch to another command bank when it hears the wake-up word. Once I get myself out from under the gun on my other projects, I'll see where this has gotten to. I do know for certain that the exact answer to your question is somewhere under my "Speaking, voice recognizing home automation system" thread.

    Dave
  • paulvivepaulvive Posts: 35
    edited 2012-01-13 06:39
    [' {$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: 1)
    G1_UNNAMED_COMMAND_0 CON 0
    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_UNNAMED_COMMAND_0
    PAUSE 0 '-- write your code here
    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]

    This is the message I get" Vbot in group 0 waiting for command.... Timed out

    There aren't any commands in group o. I was trying to work with "2 Wordset" which has the commands I want. I tested the group and all commands were accepted. Then I ran the Generate code command which transferred me to the Stamp GUI with the program listed I hit run and the results above are what I got.
  • Martin_HMartin_H Posts: 4,051
    edited 2012-01-14 10:20
    Two things. First you didn't wrap your code in code tags so I have a hard time reading it. Second, the group zero command is robot and that gets the robot's attention. Then you use your additional commands, but the GUI doesn't generate action code, it only detects the word. You have to insert the code you want into the program.

    Also, I don't work for Parallax and only check in on the forum randomly. But I do have a Say It program for the BS2 I wrote a year ago, so I do know how to get this working.
Sign In or Register to comment.