Robot writin on desk

Hello everyone, At first I’m sorry for my English.
I want do program that robot IRB 120 write on table word that person write on flexpendant. How I should this do ? I think I should do one letter-one module and then call individual letter. But I dont know how I should do that one string ex.(“Hello”) program generate module for every letter.

Hello

You can have different procs/routines for each letter which you can call with a another proc that reads the input string of the word you want to write

Here is example:

MODULE PROG
PERS string sText;

PROC main()

prWriteText “Hi”;

ENDPROC

PROC prWriteText(string sText)
VAR string sStringPart;
VAR num nLenght;

nLenght:=StrLen(sText);

FOR i FROM 1 TO nLenght DO

sStringPart:=StrPart(sText,i,1);

IF sStringPart=“H” OR sStringPart=“h” THEN

prMotion_for_H;

ELSEIF sStringPart=“I” OR sStringPart=“i” THEN

prMotion_for_I;

ENDIF

ENDFOR

ENDPROC

PROC prMotion_for_H()

!Robot motions for H letter

ENDPROC

PROC prMotion_for_I()

!Robot motions for I letter

ENDPROC

Thanks Pavel for response, I’m going try it and then I ask again if I will have doubt. And one more question, How I do that the next letter is moved by a set distance ?

Hello St4rk

You can add an offset to the FOR loop, so for each loop cycle it will add 100mm offset starting from 0.
See example:

MODULE PROG
PERS string sText;
PERS num nLetterDistance;
PERS robtarget pWrite_H_1;

PROC main()

prWriteText “Hi”;

ENDPROC

PROC prWriteText(string sText)
VAR string sStringPart;
VAR num nLenght;

nLenght:=StrLen(sText);

FOR i FROM 1 TO nLenght DO

nLetterDistance:=(i-1)*100;

sStringPart:=StrPart(sText,i,1);

IF sStringPart=“H” OR sStringPart=“h” THEN

prMotion_for_H;

ELSEIF sStringPart=“I” OR sStringPart=“i” THEN

prMotion_for_I;

ENDIF

ENDFOR

ENDPROC

PROC prMotion_for_H()

!Robot motions for H letter

MoveL Offs(pWrite_H_1,nLetterDistance,0,0),v1000,z50,tool0\WObj:=wobj0;

ENDPROC

PROC prMotion_for_I()

!Robot motions for I letter

ENDPROC

ENDMODULE