int braillearray[]={25,2,3,18,26,10,19,27,11,17,0,0,0,0,0,0,0,4,6,36,52,20,38,34,22,34,50,5,7,37,53,21,39,55,23,35,51,13,15,58,45,61,29};
You got the elusive two terabyte model? If not, explain why this array type is int.
int c=1;
do
{
ascbraille = (byte)braillemessage[c]; // get asci value of character
Arrays start at 0. Unless you have a REALLY good reason to not store the first character in position 0, which should be documented by comments here, this is WRONG.
There is also a clue there as to the proper type of the array.
showbraillchar(braille); //shows the character
You do NOT have a function of this name. If you followed convention, that would be more obvious. Why do you suppose that analogRead(), digitalWrite(), delayMicroseconds(), etc., have capital letters in their names?