//Это тестовый скетч для выяснения, какие символы посылает приложение через bluetooth модуль hc-05 в Arduino при воздействии на органы управления приложения (кнопки, джойстик)
//скетч больше подходит для чтения одиночных сигналов
//также можно проверить функцию передачи данных с Arduino в смартфон

#include <LiquidCrystal_I2C.h>//библиотеки работы с LCD через I2C
#include <Wire.h>

int led = 13; //номер встроенного LED-пина
float send_digit = 39.27; //произвольное число для передачи в смартфон

LiquidCrystal_I2C lcd(0x27,16,2); // Задаем адрес и размерность дисплея

void setup() {

pinMode(led, OUTPUT);
Serial.begin(9600); //запускаем передачу данных
Serial.setTimeout(50);//время ожидания приема данных в мс (по умолчанию 1000 мс, что очень долго)

lcd.init();// Инициализация lcd
lcd.backlight(); // Включаем подсветку
lcd.setCursor(0,0);//рисуем первую строчку
lcd.print(" Bluetooth");
lcd.setCursor(0,1);//рисуем вторую строчку
lcd.print(" Test ");
delay(2000); // Пауза в мс.

lcd.setCursor(0,0); //очищаем экран
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,0);
}

void loop() {

Serial.println(send_digit); //посылаем в смартфон произвольное число

if (Serial.available() > 0)
{
ReadBT(); //функция обработки данных со смартфона
}

}

//****************** Функция обработки данных со смартфона ***************************

void ReadBT()
{

String test_string = "";//объявляем переменную типа String здесь, а не в начале скетча, чтобы она очистилась из памяти после использования
test_string = Serial.readString();//читаем данные из порта, формирует из данных строку test_string. Заканчивает работу по Serial.setTimeout(50).

lcd.setCursor(0,1);
lcd.print(" "); //очищаем экран
lcd.setCursor(0,0);
lcd.print(test_string); //выводим полученную строку на LCD
lcd.print(" ");

//Обратите внимание, символы, на которые будет реагировать контроллер, определены для элементов управления (джойстик, переключатели) в приложении Bluetronics (от Aniket Raj). В других приложениях они будут другие, соответственно, поменяйте их в скетче ниже. Чтобы узнать, какие это символы, вы можете загрузить этот скетч, поиграться с кнопками и т.п., и в верхней строчке вы увидите искомые символы, соответствующие определенному элементу управления. Искомые символы будут замыкать два крякозябрика - это символы перевода строки

//************* включаем или выключаем LED джойстиком ***************

if (test_string.indexOf("T") > -1)//нажата стрелка ВВЕРХ (буква T)
{
digitalWrite(led, HIGH);
}

if (test_string.indexOf("B") > -1)//нажата стрелка ВНИЗ (буква B)
{
digitalWrite(led, LOW);
}
}