Is it possible to make Arduino talk without shield

Before you get real happy with that code, I'm going to suggest some changes. The itoa function adds a NULL to the end of the string. So, if the value passed to it is a one digit number, two characters will be written to the array, in which you provide room for one of them. Something else is getting overwritten.

If you looked at the values in the array, you would see that 1 is converted to '1', 2 is converted to '2', etc.

You can do this much more efficiently:

char temp1[2];
char temp2[2];
temp1[0] = digit1 + '0';
temp1[1] = '\0'; // Add the NULL terminator
temp2[0] = digit2 + '0';
temp2[1] = '\0';

Try this in place of the calls to itoa, and see how much smaller your compiled code gets.