boe bot basic stamp 2 (say it module )
zainab1421
Posts: 17
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
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
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.