Во-первых, у вас нет вызова для чтения из bt в l oop где-либо. У вас есть вызов bt.read () в глобальной области видимости, поэтому val получает значение, которое было прочитано до того, как что-либо было готово для чтения. Так что, скорее всего, получает -1.
У вас также есть звонок в avaialable до того, как вы позвоните в печать, что означает, что вы не понимаете, для чего доступно. Он говорит, есть ли еще доступный для чтения. Так что это должно быть в строке в l oop, которую вы собираетесь добавить, которая читает из bt, а не из того, что печатает на нем.
Для начала, где у вас есть bt.println (val), измените его на val = bt.read ().